- Clerk authentication — login required, JWTs attached to every API request.
- Cloud sync — resumes round-trip through a NestJS Core API, with version history and resume sharing.
- agent-service (TypeScript, backend-side) — chat, interview, translation, JD-optimize, PDF parse.
How mode detection works
apps/web/src/lib/config/app.ts resolves the mode:
src/middleware.ts switches at module load between Clerk’s clerkMiddleware and a no-op handler based on this. There is no runtime toggle — the mode is baked at build time.
Environment variables
Backend services
The backend (Core API + agent) is deployed separately from this monorepo, fronted by a single gateway. For local cloud-mode development, run the backend and pointNEXT_PUBLIC_API_URL at its gateway (dev default http://localhost:3110) — the frontend only ever needs that one URL. If you only want to develop the frontend, self-hosted mode is faster.
Auth flow
- Clerk issues a JWT on sign-in.
apps/web/src/lib/api/httpClient.tsattaches that JWT as aBearertoken via an Axios request interceptor (configureHttpClient).- Both
httpClient.apiandhttpClient.agentpoint at the same gateway origin and share the same interceptor — you should not pass tokens manually.
