Stack tehnologic

Tehnologiile din spatele Recash și motivul pentru care au fost alese.

Niciun element din acest stack nu a fost ales din inerție sau pentru că "așa se face". Fiecare piesă rezolvă o constrângere pe care am întâlnit-o pe parcursul dezvoltării platformei Recash.

Fundația aplicației

  • Next.js 16, cu arhitectura App Router — Server Components pentru randare optimă direct pe server, rute API colocate cu paginile aplicației, fără un backend separat de întreținut
  • Node.js — motorul care rulează atât aplicația Next.js, cât și serverul WebSocket; același limbaj și același ecosistem de pachete pe tot stack-ul, de la interfață până la infrastructura real-time
  • TypeScript, în mod strict — orice câmp lipsă sau tip greșit de date devine eroare de compilare, nu bug descoperit în producție de un utilizator
  • React 19 — asigură o sinergie nativă între fluxurile de date și elementele vizuale, oferind o interfață modulară, fluidă și o actualizare precisă a componentelor
  • Tailwind CSS v4 — stilizare modulară direct în componente, fără fișiere de configurare; asigură o interfață vizuală consistentă cu un cod curat și compact

Date și autentificare

  • MongoDB, prin Prisma 5 — bază de date orientată pe documente, care stochează fiecare înregistrare ca fișier BSON (JSON binar), nu ca rânduri într-un tabel; oferă o flexibilitate mult mai mare decât o schemă SQL rigidă, iar Prisma adaugă peste aceasta tipuri sigure la nivel de cod
  • NextAuth v5 — autentificare OAuth prin Google și Facebook, sesiuni JWT, integrare nativă cu App Router, fără gestionare directă a datelor utilizatorilor
  • Zod — fiecare payload care ajunge la o rută API trece printr-o schemă strictă de validare înainte să atingă baza de date, ca datele malițioase să fie prevenite

Viteză și trafic

  • Redis, prin ioredis — structuri de date rapide pentru limitare de trafic, cache și comunicare pub/sub între servicii, acolo unde MongoDB ar fi prea lent pentru operații care trebuie să răspundă instant
  • Leaflet — hartă interactivă, open-source, fără dependență de un serviciu plătit doar pentru randarea locațiilor

Experiența utilizatorului

  • Framer Motion — bibliotecă de animații pentru interfață, folosită pentru tranziții între ecrane și pentru indicatoare vizuale, precum starea unei tranzacții active
  • Lenis — bibliotecă de scroll fin, care oferă o senzație de derulare mai naturală decât scroll-ul standard al browserului; folosită și pe acest site de documentație
  • react-icons și Lucide — două biblioteci de iconițe, folosite complementar pentru un limbaj vizual consistent în toată aplicația

Infrastructură și unelte de lucru

  • Docker — aplicația web și serverul WebSocket rulează ca două containere separate, fiecare cu propria imagine minimală, ușor de reprodus identic în orice mediu
  • Git — întregul istoric al proiectului, de la primul commit, versionat coerent; detalii complete în Control versiuni

Un serviciu separat pentru comunicarea live

Chat-ul dintre poster și colector, notificările real-time — toate au nevoie de o conexiune deschisă permanent între client și server. Funcțiile serverless din Next.js nu pot întreține acest lucru, așa că am realizat un server Node.js dedicat, cu propriul ciclu de deploy. Detalii complete în Comunicare în timp real.

Cum ajunge totul în producție

Aplicația și serverul WebSocket sunt găzduite pe Railway, fiecare pornind dintr-o imagine Docker construită special pentru fiecare serviciu. Baza de date MongoDB rulează pe MongoDB Atlas, iar Redis pe Upstash — ambele găzduite separat, ca servicii dedicate. Configurația Next.js setează modul "standalone", ceea ce înseamnă un pachet minimal — doar ce este efectiv folosit ajunge în imaginea finală de producție.