Monolith-first Next.js (App Router) + shared PostgreSQL database accessed by web app and Telegram bot.
Component | Responsibility | Tech |
---|---|---|
Web UI | Pages, dashboards, forms | Next.js (React, Tailwind, Radix) |
API Layer | route handlers | |
Auth | Sessions, email magic link, Telegram linking | Auth.js |
DB | Persistence | PostgreSQL + Prisma |
Bot | Messaging, quick actions, reminders | grammY (TypeScript) |
Background Jobs | Reminders & scheduled tasks | Serverless cron (initial) |
Queue (future) | Offload heavier tasks | Redis + BullMQ |
packages/
db/ # Prisma schema & generated client wrapper
core/ # Domain services (mentor assignment, reminders)
ui/ # Shared components
config/ # Shared ESLint/TS/Tailwind config
apps/
web/ # Next.js app
bot/ # Telegram bot
Trait/role checks centralized; ownership checks on relations; admin override.
Structured logs (pino) + audit log table; metrics later.