O Telegram Mini App este o aplicație web care se deschide în Telegram, cu utilizatorul deja autentificat și în conversația potrivită. Aceasta este toată promisiunea: fără cont nou, descărcare sau resetare a parolei. O construiesc ca pe orice produs web de producție: Next.js și TypeScript în frontend, Node.js în backend, plus câteva reguli specifice Telegram. Ultima livrată de mine, sub NDA, a fost o Web App și Mini App fintech cu carduri virtuale și fizice, realizată cu Next.js, Express și MongoDB.
Totul începe cu botul. BotFather creează botul și Mini App-ul, iar utilizatorul îl poate deschide din butonul de meniu, dintr-un buton de tastatură inline sau dintr-un link direct t.me cu parametrul startapp — așa transmit un cod de recomandare sau trimit utilizatorul la un ecran anume. Aplicația este servită prin HTTPS de o gazdă obișnuită; în dezvoltare, un tunel direcționează Telegram către localhost, ca să testez pe un telefon real, nu doar în browserul de desktop.
La autentificare nu fac niciodată compromisuri. Telegram trimite aplicației initData — ID-ul și numele utilizatorului, auth_date și un hash. initDataUnsafe este exact ceea ce sugerează numele: bună pentru afișarea unui nume, niciodată pentru a avea încredere. Backendul validează initData brute cu o semnătură HMAC derivată din tokenul botului, verifică dacă auth_date este recentă și abia apoi emite propria sesiune. Tokenul botului nu părăsește serverul. Într-un produs fintech, acea verificare face diferența dintre „autentificat prin Telegram” și „oricine, cu instrumentele de dezvoltare, poate pretinde că e oricine”.
Apoi Mini App-ul trebuie să se simtă nativ, nu ca un site lipit într-un webview. Citesc themeParams și variabilele CSS Telegram, ca tema luminoasă sau întunecată să urmeze aplicația utilizatorului; folosesc MainButton și BackButton în loc să le desenez eu, adaug feedback haptic pentru acțiunile importante și respect viewport-ul și marginile safe area, ca nimic să nu se ascundă sub antet ori indicatorul Home. Mobile-first nu este un slogan aici — majoritatea sesiunilor se desfășoară cu un deget mare pe telefon.
Botul și Mini App-ul funcționează împreună. Botul trimite notificări, confirmări și chitanțe; Mini App-ul gestionează ecranele care au nevoie de un formular, o listă sau un checkout. Webhook-urile ajung la backendul Node.js, care rămâne singura sursă de adevăr pentru plăți și stare — clientul cere, nu decide. Bunurile digitale în Telegram se plătesc cu Stars, în timp ce bunurile fizice și serviciile pot trece prin procesatori de plăți. Clarific acest aspect devreme cu clientul, fiindcă modelează întregul flux.
Refuz să am încredere în initDataUnsafe, să înghesui un site desktop într-un webview, să las checkoutul doar în frontend sau să creez o Mini App fără versiune web când afacerea are nevoie și de SEO ori de un dashboard intern. Dacă vrei să lansezi în Telegram, trimite-mi acțiunea unică pe care utilizatorul ar trebui s-o finalizeze în chat. Îți răspund cu fluxul botului, ecranele Mini App-ului și ce rămâne pe server.
Oferă-i următorului produs cuiva care rămâne.
Ești gata să începem? Trimite-mi un mesaj - pot începe acum și pot rămâne alături de produs. Colaborări pe termen lung, nu o predare în două săptămâni. Să discutăm proiectul, cerințele și cea mai bună cale de urmat.