Anul trecut m-am săturat de softurile clasice de facturare românești, pline de meniuri pentru gestiune de stocuri, NIR-uri și avize pe care un programator sau designer cu PFA/SRL nu le deschide niciodată. Am vrut un tool rapid, care doar scoate un PDF curat și îl trimite automat în SPV fără bătăi de cap. După 9 luni de la lansare, am ajuns la 89 de utilizatori activi plătitori (un MRR de vreo 1.400 EUR), rulând pe o infrastructură care mă costă mai puțin decât o masă în oraș.
Stack-ul: fără Kubernetes, fără serverless inutil
Am văzut prea mulți devi care pornesc un side-project cu microservicii pe AWS și abandonează când văd factura de 200 de dolari la zero utilizatori. Eu am vrut fix opusul: ceva plictisitor, ieftin și ușor de întreținut sâmbăta dimineața.
- Frontend & Backend: Next.js (App Router) într-un singur monorepo, rulat într-un container Docker.
- Bază de date & Auth: Supabase. Am început pe free tier, iar recent am trecut pe planul Pro de 25$/lună în principal pentru back-up-uri automate la fiecare oră și storage-ul S3-compatible pentru arhivarea XML-urilor și PDF-urilor.
- Generare PDF: Aici mulți fac greșeala să ridice Puppeteer sau un Chromium headless pe server. Am pățit-o în trecut: la 10 cereri concurente îți rupe memoria RAM în două. Am folosit
@react-pdf/rendererrandat server-side direct în runtime-ul de Node. Generează o factură în 80-120ms și consumul de memorie abia dacă atinge 60MB pe proces. - Găzduire: Un VPS modest la Hetzner (CPX21 — 3 vCPU, 4GB RAM) care costă cam 8,50 EUR pe lună, administrat cu Coolify. Fac push pe
mainîn GitHub, se declanșează webhook-ul, Coolify construiește imaginea și face zero-downtime deploy.
Costurile reale pe lună
Pentru cei 89 de useri care emit în medie între 2 și 10 facturi pe lună (volum specific freelancing-ului), cheltuielile lunare arată așa:
- VPS Hetzner: 8.50 EUR
- Supabase Pro: 25.00 USD (~23 EUR)
- Resend (email tranzacțional): 0 EUR (tier-ul gratuit acoperă 3.000 de emailuri/lună, noi trimitem cam 600)
- Domeniu .ro: amortizat la vreo 1 EUR/lună
- Comisioane Stripe: ~3.2% per tranzacție (dedus direct din încasări)
Total cheltuieli fixe: în jur de 33-35 EUR pe lună. Marja de profit este uriașă tocmai pentru că n-am căzut în capcana scalării premature.
Trade-off-uri și ce m-a lovit direct în față
Arhitectura asta e genială pentru un produs simplu, dar are și limitări evidente. Nu am sistem avansat de cozi pe Redis; dacă 20 de useri apasă sincronizează cu ANAF în aceeași secundă, joburile sunt procesate secvențial printr-un worker intern in-memory. Pentru volumul actual funcționează perfect, dar pe la 300 de useri va trebui să extrag un worker separat pe BullMQ.
Cel mai nasol trade-off ține de integrarea cu e-Factura. API-ul ANAF crapă frecvent, schimbă formate fără documentație prealabilă și returnează erori criptice în 500 Internal Server Error. Am rezolvat asta printr-un mecanism defensiv de retry cu exponential backoff și alerte pe Telegram când un upload eșuează de mai mult de 3 ori.
Am refuzat constant cererile pentru stocuri, avize sau POS-uri. Încercarea de a mulțumi pe toată lumea te transformă într-o clonă proastă de ERP. Rămânem nișați pe freelanceri: emiți factura în 20 de secunde, a plecat la client și în SPV, ai închis tab-ul.
Voi cât de simplu ați ținut stack-ul la primul proiect care a început să facă bani reali?