Skip to content

About

School management application — students, grades, attendance and PDF report card generation (Node/Express + MongoDB, Vue 3 + Vite)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

School Management App

Complete school management application: students, classes, grades, attendance, messaging and PDF report card (bulletin) generation.

Component Technology Details
Backend Node.js / Express + MongoDB (Mongoose) REST API (/api/v1), JWT, PDF via Puppeteer — see Backend/README.md
Frontend Vue 3 + Vite Role-based interfaces (Admin, Teacher, Censeur, etc.) — see Frontend/README.md

Quick start with Docker (recommended)

Prerequisites: Docker + Docker Compose.

docker compose up -d --build

This starts three services:

Then create the default administrator account:

docker compose exec backend node seed_admin.js

Login: admin@ecole.com / password123 (development account — change it in production).

Manual setup (without Docker)

Prerequisites: Node.js 18+, local MongoDB or Atlas.

1. Backend

cd Backend
npm install
cp .env.example .env     # then set MONGO_URI and JWT_SECRET
node seed_admin.js       # creates the admin account admin@ecole.com / password123
npm run dev              # API on http://localhost:5000

.env variables: see Backend/README.md.

2. Frontend

cd Frontend
npm install
npm run dev              # application on http://localhost:3000

Port 3000 is already allowed by the backend CORS configuration (ALLOWED_ORIGINS in .env.example).

Report card (bulletin) generation

This is the core module of the application:

  • API: endpoints under /api/v1/bulletins (creation, validation workflow, export). Logic lives in Backend/controllers/bulletinController.js and bulletinWorkflowController.js.
  • PDF: generated server-side with Puppeteer (Backend/utils/pdfGenerator.js). Generated files are stored in Backend/uploads/.
  • Template: bulletin.html at the repository root is the reference layout for the report card.
  • UI: generation is driven from the frontend (Admin / Censeur roles), after grades have been entered for each period.

Note: Puppeteer downloads a Chromium binary during npm install. On a minimal Linux server, install Chromium's system dependencies if PDF generation fails at browser launch.

Utility scripts (scripts/)

Diagnostic scripts to run from the repository root, with the Backend .env configured:

node scripts/list_bulletins.js        # list all report cards in the database
node scripts/check_bulletin_years.js  # check report card school years
node scripts/check_notes.js           # check grade data integrity
node scripts/check_data.js            # general data consistency check

Repository structure

.
├── Backend/            # Express + MongoDB API (see its README)
├── Frontend/           # Vue 3 + Vite application (see its README)
├── scripts/            # Diagnostic scripts (report cards, grades, data)
├── bulletin.html       # Report card reference template
├── docker-compose.yml  # Backend + frontend + MongoDB orchestration
└── context.md          # Project context notes

About

School management application — students, grades, attendance and PDF report card generation (Node/Express + MongoDB, Vue 3 + Vite)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages