Frontend application for FieldTrack operations, built with Next.js App Router.
This app provides role-aware experiences for employees and admins.
Implemented capabilities include:
- employee attendance and session history
- location route views and tracking-oriented dashboards
- expense submission and status tracking
- admin dashboards, employee management, analytics, queue/system views, and webhook tooling
- real-time admin updates via SSE (
/admin/events)
- Next.js 14 (App Router)
- React 18
- TypeScript
- TanStack React Query v5
- Supabase SSR/Auth (
@supabase/ssr,@supabase/supabase-js) - Tailwind CSS + tokenized design system
- Leaflet/React-Leaflet
- Recharts
- Zod
Primary folders:
src/app: route tree and layoutssrc/components: shared UI and feature componentssrc/contexts: auth/session contextsrc/hooks/queries: React Query hooks and query key definitionssrc/lib/api: typed API modules and endpoint constantssrc/lib/query-client.ts: global query/mutation defaults
Auth and role model:
- Supabase session is source of auth state
- middleware guards protected routes (
src/middleware.ts) - admin pages require
role === ADMIN - protected layout enables admin SSE only for admin users
Required variables:
NEXT_PUBLIC_API_BASE_URLNEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEY
Optional proxy variable:
API_DESTINATION_URL(used when base URL is/api/proxy)
npm install
npm run devScripts:
npm run devnpm run buildnpm run startnpm run lintnpm run type-check
React Query defaults (src/lib/query-client.ts):
staleTime: 60s global defaultgcTime: 5m- retries disabled for
401/403, single retry for other failures - global query/mutation error event dispatch (
fieldtrack:query-error)
HTTP client behavior (src/lib/api/client.ts):
- bearer token injection from Supabase session
- deduplicated token refresh on 401
- request timeout and typed network errors
- envelope and paginated response parsing
- Employee navigation: dashboard, sessions, expenses, profile, leaderboard
- Admin navigation: dashboard, tracking/map, sessions, employees, analytics, expenses, monitoring, queues, retry intents, webhooks, API keys, system health
The frontend calls API endpoints from src/lib/api/endpoints.ts and domain modules in src/lib/api/*.
Contract-level details are documented in API_USAGE.md.
UI_ARCHITECTURE.mdAPI_USAGE.md