Full school administration web app — role-based dashboards for Admin, Staff, and Students covering courses, enrollment, attendance, exams, analytics, announcements, and academic calendar.
- System Design
- Features
- Technology Stack
- Getting Started
- Configuration
- Deployment
- Project Structure
- License
A server-rendered Flask application organized into blueprints for attendance, exams, analytics, announcements, and calendar management. All data flows through pyodbc to SQL Server with Windows authentication.
flowchart TB
Browser[Browser]
Flask[Flask App]
Blueprints[Route Blueprints]
SQL[(SQL Server)]
Templates[Jinja2 ~50 templates]
Browser --> Flask
Flask --> Blueprints
Flask --> Templates
Blueprints --> SQL
| Module | Role |
|---|---|
| app.py | Core routes, student/course CRUD, enrollment |
| auth.py | Login, register, password flows |
| attendance.py | Take and view attendance by course |
| exams.py | Create exams, grade, publish results |
| analytics.py | Dashboard metrics and audit logs |
- Role-based dashboards: Admin, Staff, Student
- Student profiles, GPA tracking, course browse and enroll
- Course CRUD, enrollment management, grade entry
- Attendance tracking per course
- Exam creation, grading, and results
- Announcements and academic terms/calendar
- Analytics dashboard, audit logs, user management
- Database backup to
.bakfiles - Auth: login, register, forgot/change password
| Component | Technology |
|---|---|
| Backend | Flask 2.3, python-dotenv |
| Database | Microsoft SQL Server via pyodbc |
| Auth | Windows Trusted Connection (ODBC) |
| Templates | Jinja2 (~50 HTML templates) |
| Frontend assets | Static CSS, JS, images |
- Python 3.8+
- Microsoft SQL Server
- ODBC Driver 17 for SQL Server
pip install -r requirements.txt
# 1. Create and populate database — run sql_scripts/ in SQL Server
# 2. Update config.py with your server name and database
python app.py
# → http://localhost:5000 (debug mode)| Variable | Where | Notes |
|---|---|---|
SECRET_KEY |
config.py |
Optional; random hex if unset |
SQL Server connection is configured in config.py (server host, database name, ODBC driver). Update these values for your machine — defaults target a local Windows SQL Server instance.
Designed for on-premises Windows + SQL Server:
- Provision SQL Server and run
sql_scripts/ - Update
config.pyconnection settings - Run Flask behind IIS or a production WSGI server
No Docker or cloud deploy config included.
School-Management-System/
├── app.py, auth.py, config.py, models.py
├── attendance.py, exams.py, analytics.py
├── announcements.py, calendar_manager.py
├── templates/ # ~50 Jinja templates
├── static/ # css/, js/, images/
└── sql_scripts/ # DB setup and seed data
See repository for license terms.