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 |
Prerequisites: Docker + Docker Compose.
docker compose up -d --buildThis starts three services:
- Frontend: http://localhost:8080
- Backend (API): http://localhost:5000
- MongoDB: internal to the Docker network (
school_dbdatabase, persistentmongo-datavolume)
Then create the default administrator account:
docker compose exec backend node seed_admin.jsLogin: admin@ecole.com / password123 (development account — change it in production).
Prerequisites: Node.js 18+, local MongoDB or Atlas.
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.
cd Frontend
npm install
npm run dev # application on http://localhost:3000Port 3000 is already allowed by the backend CORS configuration (ALLOWED_ORIGINS in .env.example).
This is the core module of the application:
- API: endpoints under
/api/v1/bulletins(creation, validation workflow, export). Logic lives inBackend/controllers/bulletinController.jsandbulletinWorkflowController.js. - PDF: generated server-side with Puppeteer (
Backend/utils/pdfGenerator.js). Generated files are stored inBackend/uploads/. - Template:
bulletin.htmlat 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.
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.
├── 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