Mergi la conținut
cutty.dev
All posts

Stack tehnologic cutty.dev — alegeri conștiente

Ce se află la baza cutty.dev și de ce. Fără evangelism — filosofia: un stack plictisitor, stabil, hosting în UE și confidențialitate integrată în arhitectură, pe care o singură persoană este capabilă să o mențină.

Majoritatea postărilor „mój tech stack” sunt o listă mândră de noutăți. Uită-te, am asta, am aceea, iar aici încă o bibliotecă proaspătă din săptămâna trecută. Acesta va fi diferit.

Dar adevărul este că, atunci când conduci un proiect singur, nu cauți cel mai la modă. Cauți ceva care să nu te trezească la trei dimineața. Și exact despre asta este tot acest stack tehnologic cutty.dev: plictisitor în loc de trendy, european în loc de american, privat încă de la fundație și suficient de simplu încât să poată fi gestionat de o singură pereche de mâini.

Voi trece în ordine, așa cum ți-aș explica asta la o cafea.

Astro randat pe server (și de ce nu ceva „mai cool”)

cutty.dev este Astro cu randare pe partea de server. Fiecare cerere trece prin server, asamblează pagina și trimite HTML-ul gata pregătit. Plictisitor? Tocmai acesta este scopul.

Am vrut trei lucruri: rendering pe server fără infrastructură greoaie, suport bun pentru mai multe limbi din prima zi și viteză fără overhead. Astro oferă toate acestea, iar codul rămâne lizibil. Când revin la el după o pauză de două luni, știu exact ce se întâmplă acolo. Într-un proiect solo, acest lucru valorează mai mult decât orice addon la modă care, după un an, nu mai este susținut de nimeni.

Un singur fișier în loc de o bază cu artificii

SQLite. O singură bază de date, un singur fișier pe disc. La asta se adaugă un strat de interogări care comunică cu TypeScript, așa că dacă schimb structura datelor, eroarea îmi apare în editor, nu în producție la miezul nopții.

De ce exact asta? cutty este "read-heavy". Cineva dă click pe un link scurtat, noi facem o citire și creștem contorul. Atât. SQLite gestionează cu ușurință un astfel de trafic, până la cifre cu adevărat mari zilnic. Iar backup-ul? Copiezi fișierul. Gata. Fără ceremonii de replicare, fără scripturi despre care nimeni nu mai ține minte cum funcționează.

Aici trebuie să fii atent la un lucru, deoarece este o capcană frecventă: oamenii aud "SQLite" și se gândesc "o jucărie pentru un proiect de examen". Nu este adevărat. Mai puține componente în mișcare înseamnă mai puține lucruri care pot ieși prost. Aceasta nu este o economisire pe cheia calității, ci o decizie conștientă.

Serverul se află în Europa și nu este o coincidență

Server dedicat în UE. TLS propriu, reverse proxy cu HTTPS automat, aplicație în containere.

Aceasta este fundamentul modului în care cutty gestionează datele. Știu exact unde se află ele fizic (pentru clienții din UE și GDPR, acesta nu este un simplu detaliu, ci o condiție), nu sunt atașat de un singur furnizor, nimic nu fuge automat peste ocean, iar costurile sunt previzibile în loc să sară odată cu traficul.

Da, platformele convenabile din Vest ar fi oferit un start mai rapid. Dai click, deploy, funcționează. Doar că plătești pentru asta prin locul în care ajung datele utilizatorilor tăi. Pentru mine, acesta a fost un deal prost.

Traduceri fă-ți propriul model, la tine

cutty vorbește 25 de limbi. Aceasta este tradusă de un model AI local, deschis, care rulează pe infrastructura mea. Nu trimit textul din interfață către niciun furnizor extern.

Beneficiile sunt practice. O singură traducere costă zero. Am control deplin asupra calității și le pot actualiza oricând doresc. Și, în plus, mașina are întotdeauna nevoie de o ochi uman, așa că fiecare dintre aceste 25 de limbi a fost revizuită. Dar faptul că fac acest lucru la mine înseamnă că confidențialitatea nu este o coloană în lista de prețuri. Este o proprietate a modului în care este construit întregul sistem.

Tailwind, containere și câteva decizii mai mici

Stil? Utility-first, adică Tailwind. Fără CSS-in-JS, fără fișiere separate cu stiluri, totul direct în template-uri. Nu pierd timpul inventând nume de clase, stilurile nefolosite oricum nu ajung pe pagina finală, iar designul este coerent deoarece sistemul însuși impune acest lucru. Pentru o singură persoană, fiecare minut care nu este irosit pe prostii contează.

Implementarea este Docker. Aceeași mediul local și în producție, sfârșitul lui "la mine funcționa". Și dacă ar fi nevoie vreodată, mut totul pe un alt server în aproximativ o jumătate de oră. Portabilitatea este o formă subtilă de independență.

Ce am învățat din aceasta

Un stack plictisitor câștigă. Astro, SQLite, Tailwind, containere. Totul este matur, testat, documentat. Nimic nu crapă în momentul în care ai cea mai puțină nevoie.

Hostingul în UE este gata pentru producție, serios. Povestea că „trebuie să treci la un cloud american uriaș pentru a fi luat în serios” este doar o poveste. AI-ul local este, de asemenea, real; nu trebuie să cedezi datele unui API extern pentru a avea traduceri decente. Și ultimul lucru: o singură persoană poate lansa ceva care arată ca munca unei întregi echipe. Trebuie doar să ții minte că timpul este mai scump decât banii și, din acest punct de vedere, să alegi fiecare piesă cu grijă.

Când construiești ceva propriu, pune-ți o singură întrebare pentru fiecare tehnologie: voi ști să o mențin singur peste un an? Dacă nu, atunci probabil ai răspunsul.

Totul funcționează aici: cutty.dev. Iar dacă vrei să discutăm despre una dintre aceste decizii, scrie la [email protected], răspund în aceeași zi.