A scalable multi-tenant school management system built with Node.js + TypeScript using a modular + layered architecture (Controller → Service → Repository).
Designed for managing multiple schools (tenants) with separate users, roles, and data isolation.
- 🔑 Authentication & Authorization (JWT/OAuth)
- 🏫 Multi-Tenant Support (schools, admins, students, teachers)
- 👩🏫 Role-Based Access Control (RBAC)
- 📚 Student Management (admissions, attendance, grades)
- 👨🏫 Teacher Management (courses, schedules, grading)
- 💰 Payment Integration (Tuition & Fees – Paystack/Interswitch)
- 📊 Admin Dashboard (analytics & reports)
- Backend: Node.js, Express.js, TypeScript
- Database: PostgreSQL (via Prisma ORM)
- Auth: JWT / OAuth 2.0
- Cache & Queue: Redis (optional for scaling)
- Frontend (planned): Next.js + React (separate repo)
- Controller → Handles HTTP requests/responses.
- Service → Business logic layer.
- Repository → Database queries (via Prisma).
- Interfaces → TypeScript contracts for strong typing.
- Node.js >= 18
- PostgreSQL >= 14
- Redis (optional, for caching/queues)
# Clone repo
git clone https://github.com/your-username/school-management-system.git
cd school-management-system
# Install dependencies
npm install
# Setup environment
cp .env.example .env
# Run migrations
npx prisma migrate dev
# Run in development
npm run dev
# Build and run in production
npm run build
npm start