Frontend dokumentazioa
Tech stack
- Next.js App Router
- React 19
- TanStack React Query
- Axios
- Tailwind CSS v4
- HERE Maps integrazioa
boneyard-jsskeleton loader osagaiak
App egitura
Karpeta nagusiak frontend-app/app azpian:
(auth)route group-a: login esperientzia.(main)route group-a: autentikatutako dashboard fluxuak.lib/api: Axios bezeroak eta API helper-ak.hooks: query/mutation hook-ak domeinuka.providers: React Query eta tutorial provider-ak.utils/types/api: request eta response kontratu tipatuak.
Layout eta providers
app/layout.tsx-ek edukia honekin biltzen du:
AppProviders->ReactQueryProviderRouteGuard(auth atea)
(main)/layout.tsx-ek hau gehitzen du:
SessionKeepAlive(saioa freskatzeko background query-a)PreferencesSyncAsideMenu+Header+ footerTutorialProvider
React Query erabilera
- Query key-ak
app/query/keys/*barruan antolatuta daude. - Query options
app/query/options/*barruan daude. - Retry-ak desgaituta daude ohiko HTTP egoera ez-errepikagarrietarako (400/401/403/404/409).
Axios API bezeroa
apiClient konfigurazioak hau dauka:
withCredentials: true.- request interceptor bat
Authorization: Bearer <access_token>injektatzeko. - response interceptor bat
401jasotzean refresh egiteko (login/refresh/forgot-password/tracking endpoint-ak izan ezik), behin berriro saiatzeko eta huts eginez gero token-a garbitzeko.
Auth token biltegiratzea
- Frontend-ak access token-a
access_tokencookiean gordetzen du (SameSite=Strict,max-age=15m). - Refresh token-a backend-ak kudeatutako HTTP-only cookiean geratzen da.
Refresh-token fluxua
- Background refresh query-a (
refreshTokenQueryOptions) 12 minuturo exekutatzen da. - Axios interceptor-ak refresh-a pizten du ustekabeko 401ean eta jatorrizko request-a behin berriro bidaltzen du.
RouteGuard portaera
- Ruta publikoen zerrendak gaur egun
/loginbakarrik dauka. - Erabiltzaileak token baliorik gabe ruta babestu bat irekitzen badu, app-ak
/login-era birbideratzen du. - Erabiltzaileak token baliozkoa badu eta
/loginirekitzen badu, app-ak/-era birbideratzen du.
Orri/pantaila nagusiak
/dashboard: profilaren laburpena, estatistikak, hurrengo entregak eta mapa panela./myPackages: paketeen list/grid ikuspegiak, bilaketa eta filtratzea esleitutako paketeetarako./myPackages/[packageId]: paketearen xehetasuna, helbidea, uneko egoera eta log historia./myRoute: eguneroko ruta exekutatzeko ikuspegia, progresua, stop ordenatuak eta mapa./history: pakete jardueraren historikoa eta analitika./settings: profila, segurtasuna eta itxura kontrolak./login: autentikazioa eta password berreskuratze modala.
Hooks eta API moduluak
Hook-ak domeinuka taldekatuta daude:
hooks/auth/*hooks/packages/*hooks/routes/*hooks/tracking/*
API moduluak:
lib/api/auth-api.tslib/api/packages-api.tslib/api/routes-api.tslib/api/logs-api.tslib/api/tracking-api.ts
Motak
API modelo kanonikoak app/utils/types/api/*.ts barruan daude.
Estiloen ikuspegia eta PakAG identitatea
app/globals.css-ek PakAG paleta eta token semantikoak definitzen ditu (more iluneko gainazalak, violet accents, egoera koloreak). /docs-eko theme-ak paleta hori nahita islatzen du.
Skeleton/loading estrategia
Orriek Skeleton wrapper osagaiak erabiltzen dituzte domeinuaren araberako loader osagaiekin (adibidez dashboard, my-route eta history loader-ak).
Tracking UI
Frontend-ak tracking API bezeroa (tracking-api.ts) eta TRACKING_PATH_PREFIX konstanteak ditu. Tracking publikoaren portaerak backend-eko /api/tracking/:trackingToken endpoint-a erabiltzen du.
Dashboard/distributor/admin fluxuak
Uneko frontend ruta multzoa banatzaileari begira dago (dashboard, myPackages, myRoute, history, settings). Admin gaitasunak batez ere backend API-en bidez daude eskuragarri eta UI azalera bereiziak behar izan ditzakete.
[!NOTE] Admin-erako web pantailak ez dira argi agertzen
frontend-app/apprutetan eta produktu irismenaren osotasunerako Needs verification gisa tratatu behar dira.