eduardweb.
Prezentări & ShowcaseIntermediar#nextjs#prisma#web-dev#showcase

Dashboard intern pentru o agenție: 3 luni de Next.js, Prisma și lupte cu API-urile de marketing

De Gabriela Neagu, 26 apr. 2026 · 1 vizualizări · 3 like-uri

Postat acum 1 zi

Am încheiat recent un proiect care mi-a mâncat ultimele trei luni și m-a făcut să reevaluez puțin cum abordez aplicațiile de tip dashboard. Clientul a fost o agenție de marketing cu vreo 25 de oameni care s-a trezit că pierde prea mult timp centralizând date din Google Ads, Facebook și TikTok în spreadsheet-uri infinite. Soluția? Un dashboard intern construit cu Next.js, Prisma și NextAuth (sau Auth.js, cum îi zice mai nou).

La început, totul părea floare la ureche. Am ales Next.js pentru că aveam nevoie de viteză la randare și voiam să profit de Server Components pentru a interoga baza de date direct, fără să mai scriu 50 de endpoint-uri de API. Prisma a fost alegerea logică pentru că type safety-ul e sfânt când ai de-a face cu scheme complexe care se schimbă de la o săptămână la alta. Totuși, am învățat rapid că entuziasmul inițial te poate costa scump dacă nu ești atent la structura datelor.

Cea mai mare provocare nu a fost UI-ul, ci integrarea cu API-urile de marketing. Google Ads API e un monstru birocratic. Dacă nu ai un sistem de caching solid, te trezești că dashboard-ul tău se încarcă în 10 secunde pentru că așteaptă după niște query-uri externe. Am decis să implementez un worker separat care trage datele noaptea și le varsă în PostgreSQL. Am redus astfel timpul de încărcare a paginii principale de la 8 secunde la sub 400ms. E un trade-off sincer: datele nu sunt „live” la secundă, dar pentru un manager de cont e mult mai important să se miște aplicația fluid decât să vadă că a mai cheltuit 2 cenți în ultimul minut.

La capitolul autentificare, NextAuth e minunat până când ai nevoie de Role-Based Access Control (RBAC) mai granular. Am avut nevoie de trei tipuri de useri: admin, account manager și client. Sfatul meu? Nu te complica cu librării externe de permisiuni dacă proiectul e mediu. Am rezolvat totul cu un câmp de role în baza de date și câteva middleware-uri care verifică sesiunea. Am economisit probabil vreo 20 de ore de debug pe care le-as fi pierdut încercând să configurez un sistem de permisiuni „enterprise”.

Ce am învățat pe pielea mea e că Server Actions sunt grozave pentru formulare simple, dar devin obositoare când ai interfețe complexe cu multe stări intermediare. Pentru filtrele de raportare, am revenit la abordarea clasică de client-side state cu useQuery din TanStack Query. Merge mult mai bine pentru UX-ul utilizatorului final când vrea să schimbe rapid data între 1 și 15 ale lunii fără să vadă un spinner de pagină întreagă.

La final, am reușit să le salvez managerilor cam 10 ore pe săptămână de muncă manuală. Asta e victoria reală, nu faptul că am folosit cel mai nou framework. Am realizat că, de multe ori, noi ca developeri ne pierdem în detalii tehnice când clientul vrea doar un tabel care să nu crape și un buton de export în PDF care chiar să funcționeze.

Next.js e excelent pentru dashboards, dar Prisma poate deveni lentă la query-uri foarte mari dacă nu știi să faci indexare corectă pe coloanele de tip date sau ID-uri externe. Voi cum gestionați sincronizarea datelor externe? Mergeți pe varianta „live” sau faceți sync periodic în background?

Răspunsuri 0

Se încarcă răspunsurile…

Loghează-te pentru a răspunde

Doar membrii comunității pot lăsa comentarii.