Skip to content

Repository files navigation

Classora Backend

Multi-tenant School ERP SaaS backend built with NestJS, TypeScript, Prisma, PostgreSQL, Redis, and BullMQ.

Classora is designed around schools as tenants, with optional multi-campus support and a single authentication model for Admin, Teacher, Student, Parent/Guardian, and Staff users. The API powers separate platform-admin and tenant-school frontend applications.

Highlights

  • Multi-tenant school and campus architecture
  • Role-based access for admins, teachers, students, guardians, and staff
  • Student Information System (SIS)
  • Academic years, terms, classes, sections, subjects, and timetables
  • Admissions and enquiry workflows
  • Student and staff attendance
  • Exams, papers, marks, and report cards
  • Fee structures, invoices, payments, and ledger workflows
  • Announcements, conversations, and messaging
  • Invite-based onboarding with background processing
  • Audit logging and request context
  • JWT authentication, permissions, rate limiting, and security middleware
  • Swagger/OpenAPI documentation
  • Background jobs with BullMQ + Redis

Tech Stack

Area Technology
Framework NestJS 11
Language TypeScript
ORM Prisma 7
Database PostgreSQL
Queue BullMQ + Redis
Authentication Passport + JWT
Validation class-validator + class-transformer
API Docs Swagger / OpenAPI
Security Helmet, rate limiting, bcrypt, field encryption
Package Manager pnpm

Repository Structure

apps/
  api/
    src/
      auth/
      bootstrap/
      platform/
      tenant/
        academics/
        admissions/
        attendance/
        comms/
        exams/
        finance/
        sis/
      invites/
      notifications/
      retention/
      health/
      swagger/
libs/
  audit/
  common/
  config/
  prisma/
  security/
prisma/
  schema.prisma

Getting Started

Prerequisites

  • Node.js 20+
  • pnpm 10+
  • PostgreSQL
  • Redis

Install

pnpm install
pnpm prisma:generate

Configure the required environment variables for PostgreSQL, Redis, authentication, and email, then run database migrations:

pnpm prisma:migrate

Start the API in development mode:

pnpm start:dev

Start the background worker separately when queue processing is required:

pnpm start:worker:dev

Useful Commands

pnpm build
pnpm lint
pnpm prisma:generate
pnpm prisma:migrate
pnpm seed
pnpm swagger:generate

Architecture Notes

The codebase follows a feature-module architecture. Tenant-facing domains are isolated into dedicated modules, while shared concerns such as security, configuration, audit logging, request context, and Prisma access live under libs/.

The backend is consumed by the companion classora-app repository, which contains the platform administration and tenant school portals.

Status

Active project focused on a production-style, multi-tenant school ERP architecture.

About

Multi-tenant School ERP SaaS backend built with NestJS, TypeScript, Prisma, PostgreSQL, Redis and BullMQ.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages