Skip to Content

Route map

Copied from src/index.ts — the official URL wiring.

Public / student APIs

Mount pathRouterPurpose
/api/v1/authauth.route.tsGoogle login, refresh, logout
/api/v1/usersuser.route.tsProfile, library, playlists, study stats, …
/api/v1/usersnotification.route.ts (user part)Device tokens, notification prefs
/api/v1/practice-pyqpractice-pyq-public.routes.tsOfficial PYQ catalog + sessions
/api/v1/practice-ytsame file (practiceYtPublicRouter)YouTube practice catalog
/api/v1/current-affairscurrent-affairs-public.routes.tsDaily issues, MCQs, bookmarks, revision
/api/v1timestamps.route.tsCrowd + user video timestamps

Admin APIs

Mount pathRouterPurpose
/api/v1/adminadmin.route.tsMain admin surface (large file)
/api/v1/admin/practice-pyqpractice-pyq-admin.routes.ts (practicePyqAdminRouter)PYQ taxonomy CRUD (nested in admin)
/api/v1/admin/practice-ytpractice-pyq-admin.routes.ts (practiceYtAdminRouter)YouTube practice catalog admin
/api/v1/admin/current-affairscurrent-affairs-admin.routes.tsCA editor pipelines (nested in admin)
/api/v1/admin/marketingmarketing-admin.routes.tsDeals / sponsors (nested in admin)
/api/v1/admin/notificationsnotification.route.ts (adminNotificationsRouter)Push logs, metrics
/api/v1/admin/rate-limitsadmin-rate-limits.routes.tsDynamic API rate-limit policies (super admin)

Internal (not for browsers)

Mount pathRouterAuth
/internal/notificationsnotification.route.tsHeader x-internal-key

No auth

PathResponse
GET /health{ status: 'ok' } (always responds)
GET /ready{ status: 'ready', db: 'connected', requestId } once MongoDB is up; 503 { status: 'not_ready', db: 'disconnected', requestId } otherwise

CORS allowed origins (dev)

  • http://localhost:5173 — vite-frontend
  • http://localhost:5174 — admin-frontend
  • chrome-extension://… — extension
  • ALLOWED_ORIGIN env in production

For every endpoint’s exact path strings, open the route file or use the Routes section.

Last updated on