Însemnări din timpul lucrului.Cum au fost construite, de fapt, lucrurile de pe site.
Fără tutoriale și fără liste. În mare parte despre cum a fost construit ceva și de ce așa: arhitectura din spatele unei funcționalități, sistemele care țin o aplicație coerentă și verificările care rulează înainte să plece ceva în producție.
SUBIECTE
- Arhitectură
- Fiabilitate
- Măsurători
- Securitate
- Supabase
- Postgres
DIN ARTICOL
“Telefonul e abonat la sarcină, niciodată proprietarul ei. Odată ce asta e adevărat, închiderea aplicației nu mai e un eveniment de tratat.”
Despre de ce telefonul nu poate fi niciodată cel care ține sarcina.
O sarcină AI lungă, pornită de pe telefon
Generarea unui clip durează minute, iar un telefon poate fi trimis în fundal, oprit sau lăsat fără semnal în oricare dintre ele. Așa că telefonul nu poate fi cel care ține sarcina.
O cerere care durează trei minute nu poate fi un apel HTTP dintr-un client mobil, pentru că clientul nu-i supraviețuiește. Sarcina intră în baza de date, un worker o preia, iar telefonul se abonează la un document. Tot restul decurge de aici.
Citește articolul22 aug 2026
8 min de citit
Varianta ieftină a picat la măsurători
Un endpoint pe care îl puteai interoga părea că e de ajuns. Șaptezeci și opt de minute de măsurat pe două conturi reale au arătat că se înșală cu până la patruzeci și trei de minute, iar asta a decis arhitectura.
Fiecare variantă serverless a fost eliminată prin măsurare, nu din preferință. Endpointul care părea suficient a avansat o singură dată în cincizeci și patru de minute, în timp ce contul era clar activ, și a citit două conturi aflate în aceeași stare la un sfert de oră distanță.
ArhitecturăFiabilitateMăsurători19 aug 2026
9 min de citit
Cum auditezi o aplicație Supabase cu propria ei cheie
Cheia anon pleacă în fiecare build. Înainte de o lansare o iau, o îndrept spre baza de date și trec prin fiecare tabel și fiecare funcție întrebând ce îi spun unui străin.
Cititul codului îți spune ce ai vrut să faci. Îndreptarea cheii publice a aplicației spre producție îți spune ce ai livrat de fapt. E treabă de o după-amiază, e singura variantă a exercițiului care găsește ceva și își are locul pe lista de dinainte de fiecare lansare.
SecuritateSupabasePostgres14 aug 2026
7 min de citit
Un rând care ține de doi oameni, o ștergere care ține de unul
Orice aplicație ajunge la un moment dat să aibă un buton de ștergere a contului, de obicei pentru că îl cere un magazin. Într-o aplicație în care un rând descrie doi oameni, butonul ăla e o problemă de modelare a datelor deghizată în setare.
„Șterge tot ce ține de utilizatorul ăsta” sună a specificație completă și nu e. Un rând cu două id-uri de utilizator în el ține de doi oameni, iar doar unul dintre ei cere să plece. Iată cum o ia razna și cum verifici înainte să apuce.
PostgresModelare de dateArhitectură12 aug 2026
4 min de citit
Cuvântul era funcționalitatea
Cel mai corect fel de a împărți bacșișul era opțiunea pe care n-o alegea nimeni, pentru că era etichetată cu mecanismul ei în loc de motivul pentru care ai vrea-o.
Pe control scria „După suprapunere”, ceea ce descrie cum funcționează calculul. Nu-i spune unui om obosit, la miezul nopții, de ce ar vrea așa. Redenumirea în „Corect” și un rând de explicație dedesubt au schimbat ce alegeau oamenii, fără să se schimbe niciun calcul.
ProdusTextDesign11 aug 2026
6 min de citit
Ce verific pe ecranul de plată înainte de fiecare lansare
E singurul ecran pe care un defect are preț și singurul pe care ai cele mai mici șanse să-l deschizi a doua oară. Așa că are lista lui de verificat.
Un buton de închidere mort, un preț care apărea târziu și mișca ecranul și un client care deja deținea lucrul care i se vindea din nou. Opt lucruri, niciunul greu, toate din categoria celor care costă bani în tăcere.
RevenueCatProdusiOS06 aug 2026
6 min de citit
Două baze de date și o graniță pe care n-o treci niciodată
O aplicație care își livrează propriul conținut are o problemă: fiecare actualizare înlocuiește conținutul acela, iar notițele utilizatorului stau în același fișier.
O bază de date e doar de citit, livrată odată cu aplicația și înlocuită în întregime la fiecare actualizare. Cealaltă stă în documentele utilizatorului și nu e atinsă niciodată de o actualizare. Ținerea lor separate nu e ordine. E diferența dintre o actualizare și o pierdere.
SQLiteArhitecturăOffline-first05 aug 2026
6 min de citit
Pornește de la ce ai deja în baie
De ce Rhovie începe cu raftul din baia ta, nu cu o listă de cumpărături.
Majoritatea aplicațiilor de îngrijire a pielii încep cu un magazin, pentru că dintr-un magazin fac bani. Rhovie începe cu o întrebare despre ce ai deja în baie. O rutină pe care o poți începe diseară bate o rutină pe care mai întâi trebuie s-o cumperi.
ProdusRhovieDesign27 iul 2026
7 min de citit
Un sistem de mișcare, nu animații răzlețe
Animațiile adăugate ecran cu ecran nu se potrivesc niciodată între ele. Token-uri, o intrare comună și un singur vocabular de tranziții fac o aplicație să pară un singur obiect.
Fiecare ecran animându-se în felul lui nu e o aplicație proiectată, e o colecție de ecrane. Soluția e aceeași care a mers pentru culoare și tipografie: dă nume duratelor, dă nume curbelor și lasă ecranele să le cheltuiască, nu să le inventeze.
MișcareDesign systemsReact Native26 iul 2026
8 min de citit
Cum duci o bibliotecă de componente în producție
Să construiești una e ușor. Să-ți folosești propria bibliotecă într-o aplicație pe care se bazează oameni reali e locul în care afli ce e în neregulă cu ea.
Liquid Glass a intrat în TeamTipOut la vreo patru săptămâni după ce am început-o. Prima săptămână a stricat două lucruri pe care nu le-aș fi găsit niciodată într-o aplicație de previzualizare: un crash pe New Architecture la o valoare fracționară de slider și un control segmentat care se măsura înainte să i se încarce etichetele.
Module nativeReact NativeSwift14 iul 2026
5 min de citit
Douăsprezece panouri, un singur titlu
Nimeni nu raportează un bug care spune că al patrulea panou folosește alt font. E genul de derivă pe care o găsești doar punându-le pe toate una lângă alta.
Opt panouri își scriau titlul într-un font și patru în altul. Niciun utilizator nu ar raporta asta vreodată și fiecare utilizator ar simți-o. Datoria de consecvență e felul care nu se plătește niciodată decât dacă te duci special după ea.
Design systemsReact NativeMeșteșug02 iul 2026
6 min de citit
Redesignul și camera în care chiar se folosește aplicația
Prima versiune a TeamTipOut arăta ca orice altă aplicație făcută repede. Funcționa, era ușor de uitat și era mai greu de citit decât trebuia, la miezul nopții, într-o sală gălăgioasă.
O interfață închisă la culoare și generică e felul în care arată din oficiu ceva construit repede. Nu e o decizie, e absența uneia. Refacerea ei în jurul unui sistem cald, editorial, a făcut aplicația mai ușor de folosit în camera în care chiar se folosește.
DesignProdusTeamTipOut30 iun 2026
8 min de citit
O sarcină AI lungă, pornită de pe telefon
Generarea unui clip durează minute, iar un telefon poate fi trimis în fundal, oprit sau lăsat fără semnal în oricare dintre ele. Așa că telefonul nu poate fi cel care ține sarcina.
O cerere care durează trei minute nu poate fi un apel HTTP dintr-un client mobil, pentru că clientul nu-i supraviețuiește. Sarcina intră în baza de date, un worker o preia, iar telefonul se abonează la un document. Tot restul decurge de aici.
AIFirebaseArhitectură29 iun 2026
10 min de citit
Liquid Glass în React Native
Efectul nativ Apple pe iOS 26, o alternativă peste tot altundeva și cum faci o singură componentă să decidă care dintre ele.
iOS 26 a adus Liquid Glass și arată superb. În React Native nu-l poți folosi pe iPhone-uri mai vechi și nu-l poți folosi deloc pe Android. Așa că am construit o componentă care îl folosește pe al Apple când e acolo și pe al meu când nu e și care nu-i cere niciodată autorului aplicației să-i pese.
SwiftReact NativeiOS 2624 mar 2026
7 min de citit
Ultimele două săptămâni înainte de review
Tot ce credeam că mai e de făcut era mărunt. Nimic din ce mai era de făcut nu era munca. Munca era suprafața de conformitate pe care n-o demonstrează nimeni și pe care fiecare verificator o deschide primul.
Publicarea versiunii 1.0 n-au fost funcționalitățile. Au fost atingerile care treceau printr-un strat de blur pe iPad, o pagină de ștergere a contului cerută de un magazin, hărțile de surse, limitarea de rată pe un cod de unică folosință și încă vreo zece lucruri care nu apar pe nicio foaie de parcurs.
App StoreLansareTeamTipOut19 mar 2026
6 min de citit
Aparatul care n-a fost niciodată în cameră
Am construit o aplicație pentru un espressor fără să am espressorul. Constrângerea s-a dovedit cea mai utilă decizie din proiect.
Orice aplicație pentru un aparat conectat e simplă exact până când aparatul nu e acolo. Scrisul pe un protocol de dispozitiv, nu pe un dispozitiv, a însemnat că hardware-ul poate apărea mai târziu fără ca aplicația să fie rescrisă în jurul lui.
BluetoothArhitecturăReact Native
Mai multe când e ceva ce merită scris. Nu există listă de email, pentru că nu țin una.
Spune-mi ce construiești.Un plan scris și un preț fix înainte să se miște vreun ban.
Răspund la tot într-o zi lucrătoare. Dacă nu sunt omul potrivit pentru proiect, ți-o spun din start, nu după trei săptămâni.
