În culisele NearYou: Next.js, Node.js și parcursul unei oferte locale

Scris de

Cum lucrează împreună zonele pentru clienți, afaceri și administratori, de la descoperirea unei oferte până la validarea codului QR.

Publicat la

În culisele NearYou: Next.js, Node.js și parcursul unei oferte locale

Actualizat

O ofertă implică mai multe persoane

NearYou conectează oamenii din România cu afacerile locale și ofertele lor. Paginile publice permit explorarea categoriilor, ofertelor și profilurilor de afaceri. În spatele acestui parcurs există spații separate pentru clienți, proprietarii afacerilor și administratori.

Arhitectura se înțelege mai ușor urmărind o ofertă. Afacerea o creează, clientul o revendică, iar personalul afacerii validează utilizarea ei. Fiecare interfață trebuie să reflecte aceeași stare.

Next.js gestionează interfața și API-ul

NearYou folosește Next.js și React pentru interfață, cu TypeScript în întreaga aplicație. Backendul Node.js este implementat prin route handlers din Next.js. Aplicația include rutele de server și este completată de procese Node.js separate pentru workerii de fundal și sarcinile programate.

Prisma conectează aplicația la MySQL. Redis și BullMQ gestionează cozile pentru notificări și campanii prin email. MinIO stochează fișierele media, pe care aplicația le livrează prin propriile rute. Stripe gestionează plățile pentru abonamente, iar backendul procesează webhookurile aferente.

Această structură păstrează regulile ofertelor și interfețele în aceeași bază de cod, cu procese dedicate operațiunilor din fundal.

Catalogul public de oferte NearYou

Captură a catalogului public din 19 septembrie 2026.

Revendicarea unei oferte este o operațiune de server

Când un client revendică o ofertă, backendul verifică autentificarea, eligibilitatea și limitele. Proprietarul unei afaceri nu poate revendica propria ofertă. O cheie de idempotență poate identifica repetarea aceleiași cereri.

Verificările decisive se repetă într-o tranzacție a bazei de date, cu blocarea rândului vizat. Acest lucru contează când două cereri sosesc aproape simultan: decizia trebuie să folosească starea curentă din baza de date.

Validarea voucherului are la rândul ei o schimbare de stare controlată. Afacerea poate scana codul QR sau îl poate introduce manual. Backendul înregistrează validarea și folosește o cheie de deduplicare la acordarea punctelor de fidelitate. Aceste mecanisme tratează cererile repetate chiar în locul în care se modifică datele.

Fiecare rol are propriul spațiu

Clienții gestionează voucherele revendicate, urmăresc afaceri și consultă punctele și notificările. Afacerile își administrează profilurile și ofertele, verifică revendicările, validează voucherele și consultă statisticile. Administratorii aprobă afaceri și gestionează utilizatori, categorii, conținut, campanii și suport.

Pagina publică NearYou pentru afaceri, cu previzualizarea panoului de administrare

Pagina publică pentru afaceri include o previzualizare a panoului. Captura provine de pe acea pagină, nu dintr-un cont privat.

Datele comune leagă aceste zone. Clientul are nevoie de un voucher utilizabil, afacerea trebuie să îi verifice valabilitatea, iar administratorul are nevoie de instrumente pentru gestionarea platformei.

Operațiunile de fundal rulează separat

Trimiterea unei campanii sau procesarea notificărilor nu trebuie să ocupe cererea care afișează o pagină. NearYou rulează workerii și sarcinile programate separat de procesul web. Pentru webhookurile de plată, backendul verifică semnătura și înregistrează starea procesării, astfel încât să poată trata livrările duplicate.

Complexitatea sistemului vine din aceste fluxuri conectate. Next.js și Node.js oferă structura aplicației. Tranzacțiile, verificarea rolurilor și workerii definesc comportamentul produsului în utilizarea de zi cu zi.

Explorează NearYou · Vezi proiectul

Detaliile arhitecturale provin din codul proiectului. Capturile prezintă site-ul public.

Hai să vorbim

Spune-mi ce ai în minte. De obicei, răspund în cel mult o zi lucrătoare.