Skip to content
adexzy1Public

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Learnova — Modular Multi-Tenant School Management System

A comprehensive, modular School Management System (SMS) designed to manage the full academic, administrative, and financial lifecycle of a school.

🚀 Overview

Learnova enables schools to digitize operations end-to-end, covering:

  • Identity & Access: Multi-persona management (Admin, Staff, Student, Guardian).
  • Academic Lifecycle: Sessions, Terms, Classes, Subjects, and Grading.
  • Continuous Assessment: Exams, CA scores, and automated report cards.
  • Finance: Fee configurations, multi-payment support, and automated ledgers.
  • Multi-Tenancy: Highly isolated databases for every school on the platform.

🛠 Tech Stack

  • Framework: NestJS (v11)
  • Database: PostgreSQL with TypeORM
  • Asynchronous Processing: BullMQ (Redis)
  • Messaging: EventEmitter2 for decoupled side-effects
  • Identity: JWT with Refresh Tokens & Argon2 hashing
  • File Storage: Cloudinary integration

👨‍💻 Getting Started (Developers)

1. Prerequisites

  • Node.js: v20+
  • PostgreSQL: v15+
  • Redis: v7+ (for queues and caching)

2. Installation

# Clone the repository
git clone <repo-url>
cd learnova

# Install dependencies
npm install

3. Environment Setup

Create a .env file in the root directory based on .env.example. Key variables include:

  • DATABASE_URL: Master DB connection string
  • REDIS_URL: Redis connection string
  • JWT_SECRET: Secret key for authentication
  • PAYSTACK_SECRET_KEY: For subscription processing

4. Database Initialization

# Run Master DB migrations
npm run migration:run:master

# Seed global platform data (Plans, Roles, etc.)
npm run seed

5. Running the Application

# Start HTTP Server (Process 1)
npm run start:dev

# Start BullMQ Worker (Process 2)
npm run start:worker

6. Working with Tenants

  • Creating a Tenant: Use the /v1/tenant endpoints to provision a new school.
  • Tenant Migrations: To run migrations across all tenant databases:
    npm run migrate:tenants

📖 Documentation

For a deep dive into the system patterns, folder structure, and multi-tenant logic, see the comprehensive ARCHITECTURE.md.


About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages