Produsul pe care îl arătăm când ne întreabă cineva dacă livrăm.
Prezentare generală
Invuna e SaaS-ul nostru, de la cap la coadă. Strategie, design, cod, infrastructură — fiecare decizie e a noastră și fiecare consecință, tot a noastră. Utilizatorul descrie un eveniment cu cuvintele lui; produsul scrie textul, generează grafica, asamblează invitația și o trimite pe WhatsApp, Telegram, Instagram Story, Facebook, email sau link direct. Autentificare, plăți, rutare multilingvă, dashboard RSVP — totul la locul lui, totul construit de noi. Live la invuna.com.
Nu e un studiu de caz pentru un client. E ce construim când brieful e al nostru.
Forma produsului
- 0
- Limbi active
- 0
- Canale de share
- 0
- Modele AI în pipeline
- 0
- Plată, fără abonament forțat
Provocarea
Piața de software pentru invitații are o hibă foarte precisă. Toate platformele existente te pun să alegi un template, să decupezi o poză, să completezi treizeci de câmpuri și să speri că rezultatul nu arată ca un eCard din 2015. Template-urile sunt generice, sistemele de design sunt rigide, iar textul de pe invitație — conținutul propriu-zis — rămâne integral în seama utilizatorului. Așa că mai toate invitațiile trimise prin platformele astea ies urâte, lungite degeaba și uitate a doua zi.
Am vrut să vedem ce iese când software-ul preia exact partea pe care utilizatorul o urăște. Tu descrii evenimentul; de cuvinte, grafică, share și RSVP-uri ne ocupăm noi. Utilizatorul povestește momentul — nu se transformă în grafician amator la 11 noaptea, în ajunul unui botez.
01 · Un singur input

Ca să ducem asta cap-coadă, a trebuit să construim un produs SaaS adevărat, nu o pagină de prezentare cu formular de înscriere. Autentificare. Plăți. Pipeline-uri AI pentru text și imagine. Sistem RSVP cu evidența invitaților. Calendar care ține cont de fusuri orare. Rutare multilingvă. Analytics. Pagini legale. Tot ce îi trebuie cu adevărat unui SaaS de consum.
Abordarea
Stack-ul l-am ales deliberat, împotriva curentului.
Nu WordPress. E un produs, nu un site de conținut.
Niciun framework React greu. Produsul e pentru consumatori, trebuie să se încarce repede pe telefon și nu avea nevoie de abstracțiile din Next.js pentru fluxul lui de bază. Un stack lean era răspunsul corect.
Vanilla JavaScript pe frontend, Express pe backend, DigitalOcean App Platform la hosting, Cloudflare pentru DNS și edge, Bunny CDN pentru video. Autentificare custom. Rutare multilingvă custom. Fiecare dependență e acolo pentru că am ales-o noi, nu pentru că venea la pachet cu vreun framework.

Pentru partea de AI am construit un pipeline care extrage date structurate din text liber, le validează, le îmbogățește și le trimite mai departe către două etape separate de generare: una pentru text, una pentru grafică. La final iese o invitație completă, cu text și grafică asortate.
La plăți folosim Stripe — dar cu un flux care respectă felul în care oamenii cumpără de fapt software de invitații. Fără abonamente forțate. Plătești când ai nevoie, folosești creditele, revii data viitoare.
La RSVP, gazda are un dashboard live: confirmări, refuzuri, răspunsuri în așteptare, însoțitori, restricții alimentare, întrebări custom dacă e cazul. La calendar, un tracker de evenimente în produs, cu countdown și remindere. La capitolul limbi, un router custom care servește româna, engleza și italiana din prima zi — parte din navigație de la bun început, nu ceva adăugat ulterior.
Totul in-house. Totul întreținut de noi.
Soluția
Produsul de bază
- Parser de limbaj natural pentru evenimente — preia o descriere liberă („botez pentru nepoata mea, 20 aprilie, ora 11, ortodox la Sf. Nicolae, masă la bunica după”) și extrage câmpurile structurate: tipul evenimentului, data, ora, locația, gazda, dress code-ul, preferințele de cadouri.
- Generare de text cu AI — scrie textul invitației pe tonul potrivit (formal, casual, jucăuș, elegant), în funcție de eveniment, la aceeași calitate în toate cele trei limbi disponibile.
- Generare de imagine cu AI — creează grafica, în ton cu atmosfera evenimentului și cu textul. Nu template-uri de stoc — grafică generată special pentru evenimentul acela.
- Constructor de invitații — pune cap la cap textul și grafica generate într-o invitație gata de trimis: tipografie curată, layout automat, calitate bună și pentru print, și pentru digital.
- Share pe toate canalele — intent-uri native de share pentru WhatsApp, Facebook, Instagram Story, Telegram și email, plus link direct cu fallback pe clipboard.
- Sistem RSVP — invitații răspund printr-un link dedicat, iar gazda vede totul într-un dashboard live.
- Calendar de evenimente — gazdele își văd toate evenimentele viitoare, cu countdown, status dintr-o privire și acces rapid la share.
- Autentificare — cont în care îți gestionezi evenimentele, salvezi drafturi și urmărești RSVP-urile în timp.
02 · Dashboard-ul RSVP

Infrastructura produsului
- Plăți prin Stripe — facturare pe credite. Cumperi credite, le folosești pentru generare și trimitere, reîncarci când ai nevoie. Fără abonament forțat, fără debitări automate. Toate metodele importante de plată din Stripe.
- Rutare multilingvă — română, engleză, italiană. Detectarea limbii direct din URL,
language-loader.jsșilanguage-router.jsscrise de noi, semnalehreflangcorecte pentru SEO. - Schema.org JSON-LD — markup
SoftwareApplication, ca produsul să fie ușor de găsit. - Asset-uri livrate cu gândul la performanță — embed-uri video încărcate doar la click, prin Bunny CDN, fonturi self-hosted, JavaScript lean, încărcare amânată.
- Conformitate legală — politică de confidențialitate, termeni și condiții, politică de rambursare, flux de consimțământ conform GDPR.
Momente-cheie
Un singur input
Cel mai greu de nimerit n-a fost AI-ul — a fost câmpul de input. Toți competitorii deschid cu o galerie de template-uri și un wizard cu treizeci de câmpuri. Noi deschidem cu o singură casetă. Scrii evenimentul, iar formularul din spate se generează dinamic, în funcție de ce s-a extras.

Două treceri de AI, o singură invitație
Majoritatea produselor care folosesc AI pentru invitații lipesc un generator de text peste o bibliotecă de template-uri de stoc. Noi am despărțit textul de imagine: două modele separate, cu același context de eveniment, ca textul și grafica să fie pe aceeași lungime de undă. Un botez formal primește serif și o paletă blândă. O aniversare cu cocktailuri primește un sans bold și un accent saturat. Invitația se compune singură în jurul amândurora.
Fără abonament forțat
Modelul pe credite e decizia care contează. Toți competitorii vor un abonament de 9,99 $/lună. Noi ne-am uitat cum folosesc oamenii reali produsul și am văzut că nimeni nu vrea abonament pentru un eveniment. Au nevoie de produs la o nuntă, peste doi ani la un botez, apoi la o zi de naștere. Așa că exact așa am facturat: plată unică prin Stripe, credite în cont, reîncarci când ai ceva de trimis.
Stack-ul tehnic
Frontend Vanilla JavaScript (fără framework)
Font display custom „Calimate” 900
Italice Source Serif 4
Arhitectură modulară de componente
Backend Express (Node.js)
Auth Flux custom — email + sesiune
Plăți Stripe — pe credite, fără abonament forțat
AI text Parsare de limbaj natural → text contextual
AI imagine Pipeline vizual, grafică în ton cu evenimentul
RSVP Gestiune custom a invitaților — însoțitori, restricții, întrebări
Calendar Tracker de evenimente în produs, cu countdown
Hosting DigitalOcean App Platform
CDN / Securitate Cloudflare
Livrare video Bunny CDN
Schema JSON-LD SoftwareApplication
Limbi Română, engleză, italiană
Rezultatul
Live la invuna.com. Oameni reali fac invitații reale pentru evenimente reale — nunți, botezuri, zile de naștere, absolviri, lansări corporate — în trei limbi, plătesc prin Stripe, își urmăresc RSVP-urile și trimit invitațiile pe toate platformele care contează.
Întreținem produsul zi de zi. Livrăm funcționalități noi constant, reparăm bugurile pe măsură ce apar și ajustăm partea de generare AI în funcție de ce ne cer utilizatorii cu adevărat.
Dacă restul portofoliului arată cum construim pentru clienți, Invuna arată cum construim pentru noi. Aceleași standarde, aceeași grijă. Singura diferență: aici răspundem noi de fiecare decizie, pentru totdeauna.


