Tech stack
The complete technology inventory for NexSchool, listed per sub-project: backend (server/), admin web (admin-web/), super-admin panel (panel/), mobile app (client/), infrastructure (school-erp-infra/), CI/CD, and the developer docs site.
Backend (server/)
Flask application factory serving /api/* blueprints, SQLAlchemy 2 ORM over PostgreSQL, Celery for async jobs.
Framework & runtime
| Technology | Version | Purpose |
|---|---|---|
Python | 3.14+ | Runtime |
Flask | 3.1.2 | HTTP framework, application factory |
Gunicorn | — | WSGI production server |
Flask-SQLAlchemy | 3.1.1 | ORM integration |
SQLAlchemy | 2.0.45 | ORM (declarative models) |
Flask-Migrate | 4.0.7 | Alembic-based DB migrations |
Flask-Limiter | 3.5.0 | Rate limiting on endpoints |
Flask-CORS | — | CORS headers |
Flask-Mail | — | Email sending |
Database
| Technology | Version | Purpose |
|---|---|---|
PostgreSQL | 16 | Primary data store |
psycopg2-binary | 2.9.11 | PostgreSQL adapter for Python |
Redis | 7-alpine | Celery broker and result backend |
Authentication & security
| Technology | Version | Purpose |
|---|---|---|
PyJWT | 2.10.1 | JWT access + refresh token issuance/validation |
bcrypt | — | Password hashing (cost ≥12) |
Async & background tasks
| Technology | Version | Purpose |
|---|---|---|
Celery | 5.4.0 | Task queue, background jobs |
redis (Python) | 5.2.1 | Celery broker client |
File handling & storage
| Technology | Version | Purpose |
|---|---|---|
boto3 | 1.40.39 | AWS S3 for file storage |
Cloudinary | — | Student document storage (CDN + transforms) |
WeasyPrint | 68.1 | PDF generation (fee receipts, invoices) |
Testing
| Technology | Version | Purpose |
|---|---|---|
pytest | 8.3.5 | Test runner |
pytest-flask | — | Flask test client integration |
Utilities
| Technology | Purpose |
|---|---|
python-dotenv | Env var loading |
marshmallow | Request/response serialization (some modules) |
psutil | Memory/CPU monitoring |
Admin web (admin-web/)
Next.js App Router SPA-style admin console; tenant-scoped data via TanStack Query.
Framework & runtime
| Technology | Version | Purpose |
|---|---|---|
Node.js | 20+ | Runtime |
Next.js | 16.1.6 | React framework (App Router) |
React | 19.2.3 | UI library |
TypeScript | 5 | Type safety |
Styling
| Technology | Version | Purpose |
|---|---|---|
Tailwind CSS | 4 | Utility-first CSS |
PostCSS | — | CSS processing |
Data fetching & forms
| Technology | Version | Purpose |
|---|---|---|
TanStack React Query | 5.90.21 | Server state, caching, background refetch |
Axios | — | HTTP client |
React Hook Form | 7.71.2 | Form state management |
Zod | 4.3.6 | Schema validation (forms + API types) |
UI components
| Technology | Version | Purpose |
|---|---|---|
Radix UI | — | Accessible headless components (Dialog, Dropdown, Tabs, Select, etc.) |
Sonner | — | Toast notifications |
Recharts | 3.8.1 | Charts and graphs (dashboard) |
Lucide React | — | Icon library |
clsx / tailwind-merge | — | Conditional class utilities |
Real-time & notifications
| Technology | Version | Purpose |
|---|---|---|
Firebase | 12.12.0 | Web push notifications + Firebase Auth integration |
EventSource / fetch | — | SSE stream from /api/notifications/stream |
Developer tools
| Technology | Purpose |
|---|---|
ESLint | Linting |
Prettier | Code formatting |
Super-admin panel (panel/)
Same stack as admin-web/ with these differences:
- No Firebase integration (no push notifications for platform admins).
- Lighter component set (fewer data tables, simpler forms).
- Auth is platform-only (separate login endpoint).
Mobile app (client/)
Expo / React Native app with file-based routing via Expo Router.
Framework & runtime
| Technology | Version | Purpose |
|---|---|---|
Expo | ~54.0.30 | React Native toolchain, OTA updates |
React Native | 0.81.5 | Mobile UI framework |
React | 19.1.0 | UI library |
TypeScript | 5 | Type safety |
Expo Router | 6.0.21 | File-based navigation |
Navigation
| Technology | Version | Purpose |
|---|---|---|
Expo Router | 6.0.21 | File-based routing |
React Navigation | — | Stack, tab, drawer navigators (under Expo Router) |
React Native Gesture Handler | — | Gesture recognition |
React Native Reanimated | — | Smooth animations |
Data fetching & forms
| Technology | Version | Purpose |
|---|---|---|
TanStack React Query | 5.90.21 | Server state, caching |
Zod | 4.3.6 | Schema validation |
Storage & media
| Technology | Purpose |
|---|---|
Expo Async Storage | Local persistence (tokens, settings) |
Expo Document Picker | Pick files for upload |
Expo Image Picker | Profile picture selection |
Expo Notifications | Push notification handling (Firebase) |
Localization
| Technology | Purpose |
|---|---|
i18next | Internationalization |
react-i18next | React bindings |
Developer tools
| Technology | Purpose |
|---|---|
EAS Build | Expo Application Services for cloud builds |
Metro | JavaScript bundler |
Infrastructure (school-erp-infra/)
| Technology | Version | Purpose |
|---|---|---|
Docker | — | Container runtime |
Docker Compose | v2 | Multi-service orchestration |
Nginx | 1.27-alpine | Reverse proxy, SSL termination, SSE routing |
Let's Encrypt + Certbot | — | TLS certificates (production) |
Make | — | Task runner (make dev, make deploy-ecr) |
CI/CD & cloud
| Technology | Purpose |
|---|---|
GitHub Actions | CI/CD pipeline |
AWS ECR | Private Docker image registry |
AWS EC2 | Production compute (Docker host) |
AWS RDS | Managed PostgreSQL |
AWS IAM | OIDC roles for GitHub Actions (no long-lived keys) |
AWS S3 | File storage (boto3) |
Cloudinary | Student document CDN |
AI developer tooling
| Technology | Purpose |
|---|---|
Claude Code | AI coding assistant CLI (Anthropic) |
| Claude Sonnet 4.6 | Default model for code generation |
| Claude Opus 4.7 | High-reasoning tasks (planning, architecture) |
| Claude Haiku 4.5 | Fast tasks |
.claude/ config | Rules, memory, skills, roles for AI agents |
Graphify | Knowledge graph generator for codebase exploration |
Nextra | developer-docs/ — this knowledge base |
Developer docs site (developer-docs/)
This knowledge base itself. Migrated from Docusaurus to Nextra (see the repo README).
| Technology | Version | Purpose |
|---|---|---|
Nextra | 3.x | Docs theme/framework (markdown-first) |
Next.js | 14.x | Underlying React framework (Vercel-native) |
React | 18.x | Rendering |
Node.js | 20+ | Build runtime |