20.tn
Education technology platform — school management, parent portal, teacher & admin dashboards.
Overview
20.tn is an education platform connecting parents, teachers, and administrators around one source of truth for grades, timetable, absences, messaging, and bulletins.
Project story
As Lead Full-Stack Engineer I drove a production school management API — 43 OpenAPI endpoints, RBAC, BullMQ workers, and test suites that protect auth and rate limits.
Problem
Schools need one coherent system for grades, timetable, absences, messaging, and bulletins — with parents, teachers, and admins on the same source of truth.
Solution
A Node/Express/TypeScript backend with Prisma, PostgreSQL, Redis, MinIO, BullMQ, and Firebase — offline-first thinking and AI-ready extension points.
Features
- School management core
- Parent portal & teacher dashboard
- Messaging, absences, bulletins
- Push notifications & exports
Architecture
Node.js · Express · TypeScript · Prisma · PostgreSQL · Redis · MinIO · BullMQ · Firebase — offline-first thinking and AI-ready extension points.
Frontend
Parent, teacher, and admin dashboards.
Backend
43 OpenAPI-documented Express endpoints.
Database
Prisma + PostgreSQL as source of truth.
Authentication
JWT + fine-grained RBAC.
Storage
MinIO signed URLs for files.
Workers
BullMQ for exports, push, and audits.
Security
Rate limiting, audit logs, signed access.
AI-ready
Hooks for assistants and absenteeism insights.
Security
- JWT authentication
- Fine-grained RBAC
- Rate limiting
- Audit logs
- Signed URL file access
Performance
- Redis-backed queues for heavy export jobs
- Signed URL offload for file transfer
- Worker isolation from request path
Accessibility
- Role-clear navigation
- Mobile-first parent flows
- Readable academic data presentation
Mobile experience
Parent/teacher flows designed for mobile-first usage with push notification hooks via Firebase.
AI features
AI-ready architecture for future assistants on grades, absenteeism insights, and admin automation.
Challenges
- Modeling school RBAC without leaking privileges across roles
- Keeping OpenAPI docs truthful as the API grew to 43 endpoints
- Reliable push + export workers under load
Results
- Production school management API with 43 OpenAPI-documented endpoints
- RBAC across auth, grades, timetable, files, messaging, absences, bulletins
- BullMQ workers for exports, signed file URLs, push notifications, audit logs
- 30+ Jest/Supertest tests including auth, rate-limit, and worker suites
43
API endpoints
30+
Test suites
EdTech
Focus
Lessons learned
- RBAC is a product feature in EdTech
- Workers keep the request path honest
- OpenAPI docs must stay as true as tests
Tech stack
API
Data
Async
Quality
Timeline
Current
7 min read
My role
Scalability
Queue-driven background processing and modular domain endpoints ready for multi-school deployment.
Video walkthrough
Product walkthrough placeholder — add a Loom or demo reel here when ready.