KXκωνσταντίνος.χαφής
Full-Stack & CloudflareΣυντηρείται2024

Byz-ImageCompression

BunTypeScriptsharpDocker

Επισκόπηση

Η πλατφόρμα της σχολής χρειαζόταν κάθε ανεβασμένη εικόνα να φτάνει σε web-ready μέγεθος χωρίς χειροκίνητη παρέμβαση. Αυτή η μικροϋπηρεσία εγγυάται σταθερό στόχο: περίπου 40 KB ανά εικόνα.

Τι έφτιαξα

Ένα μοναδικό POST endpoint σε Bun.serve με sharp (libvips). Η λογική διαβάζει πρώτα τα μεταδεδομένα: αν η πηγή είναι ήδη εντός προϋπολογισμού επιστρέφεται ως έχει· διαφορετικά υπολογίζεται συντελεστής συρρίκνωσης από το μέγεθος (sqrt(size/40KB)/2), μειώνοντας κάθε διάσταση στο μισό για να μειωθεί το εμβαδόν στο ένα τέταρτο, και η εικόνα αλλάζει μέγεθος και επανακωδικοποιείται.

Μοιράζεται το πρότυπο ασφαλείας του οικοσυστήματος: CORS preflight, λίστα επιτρεπόμενων referer και έλεγχος ταυτότητας μέσω συνόδου της σχολής — συν την ίδια τυποποιημένη ένωση EndpointResponse με τις αδελφές υπηρεσίες.

Τεχνικά highlights

Αποτέλεσμα

Τρέχει σε Docker δίπλα στην πλατφόρμα της σχολής, καλούμενη κατά το ανέβασμα.