Skip to content
$ ash_
All work
2022/Full-Stack Developer/archived

Education Management Portal

A multi-role web application for managing courses, enrolments, and student data, built with Python and Flask.

Stack

PythonFlaskHTMLCSSSQL

Overview

The Education Management Portal is a web application with three distinct user roles: Admin, Instructor, and Student. Each role has its own view, permissions, and set of actions. The main challenge was making one application feel coherent across three very different use cases without the codebase becoming hard to follow.

What it does

Admins can manage the full platform, creating courses, managing users, and pulling reports on enrolment and activity.

Instructors get a focused view for their own courses, creating content, managing enrolments, and tracking student progress within their scope.

Students see a straightforward interface for browsing available courses, enrolling, and keeping track of where they're at.

Technical decisions

The backend is Flask with modular routing, so each role lives in its own blueprint and the code stays organised as features grow. Role-based access control is enforced at the route level rather than the template level, which means the security boundary is server-side and doesn't depend on hiding things in the UI.

The data layer uses SQL with a schema built around the multi-role structure, keeping the relationships between users, courses, and enrolments clean and easy to query.

What I took from it

Building RBAC from scratch, even in a university project, gave me a proper understanding of how to think about permissions at the application layer. It's the kind of thing that looks simple until you hit an edge case, and working through those here made me a lot more deliberate about it in later projects.