Skip to content
msaouab
Get in Touch
msaouabFull Stack DeveloperAvailable for work
Get in Touch
← Back to systems
Freelance

UM6P Executive Education Platform

Freelance — executive education back-office

A Django + Next.js back-office that runs UM6P's executive education programmes end to end — scheduling and staffing modules, tracking participants and payments, booking rooms and catering, and pushing purchase requests through Moroccan public-procurement approval.

21 models · 4 roles

Highlights

Problem

The executive education department coordinated programmes across spreadsheets and email: who is enrolled, which room a module sits in, what the catering and transport cost, and where a purchase request had stalled. Nothing reconciled, so budget and logistics drifted apart from the schedule.

Role

A two-person build over roughly five months. I authored 67 of the repository's 204 commits, concentrated in the programme module, the logistics and budget features, and the administrative front end — the permission system, user invitation and activation flow, module management, classroom reservation, dashboard charts, and the PDF export.

Approach

A Django 4.2 REST API over PostgreSQL models the domain in 21 tables — programmes, modules, participants, budget lines, four logistics models, and procurement requests — behind a service layer and a unified response envelope. Access is JWT-based across four staff roles, with 14 DRF permission classes and matching client-side capability checks. Django Channels over Redis pushes 16 notification types to the Next.js client in real time.

Outcome

One system now covers the full programme lifecycle: 26 custom API actions drive scheduling, enrolment, room booking with capacity validation, per-participant payment tracking, and a six-state purchase-request workflow. Staff import participants from Excel and export branded ReportLab PDF reports, and an activity log keeps an audit trail across programmes and users.

Stack

Django 4.2Next.js 16PostgreSQL 15Redis 7ChannelsDocker
Loading