A comprehensive, enterprise-grade Student Management System built with Django 5.2.12. SMS is designed to streamline and automate academic operations for educational institutions, colleges, and universities. The platform provides secure, role-based access for Administrators, Faculty Members, and Students, facilitating efficient management of admissions, attendance, results, and institutional operations.
- Overview
- Screenshots
- Features
- Tech Stack
- System Architecture
- User Roles & Permissions
- Prerequisites
- Installation & Setup
- Configuration
- Database Schema
- API Endpoints
- Deployment
- Troubleshooting
- Contributing
- Roadmap
- License
- Support
- 📊 Comprehensive Dashboard: Real-time analytics and institution overview
- 👥 Staff Management: Add, update, and manage faculty members
- 🎓 Student Management: Complete student lifecycle management
- 📚 Course Management: Create and organize academic courses
- 🗓️ Session Management: Manage academic sessions and schedules
- 📋 Subject Management: Organize subjects and course mappings
- 📝 System Configuration: Settings and global configurations
- ✅ Attendance Management: Mark and track student attendance
- 📊 Results Management: Update and publish student grades
- 🏥 Leave Requests: View and manage leave applications
- 📈 Performance Analytics: View class-wise performance metrics
- 📱 Notifications: Instant alerts for important events
- 📋 Attendance Tracking: View personal attendance records
- 📊 Results & Grades: Check academic performance
- 🏥 Leave Applications: Submit and track leave requests
- 📢 Announcements: Stay updated with institutional news
- 📧 Communication: Contact faculty and administration
- 🎨 Modern UI/UX: Glass-morphism design with responsive layout
- 🔐 Role-Based Access Control (RBAC): Secure permission system
- 📱 Fully Responsive: Desktop, tablet, and mobile compatible
- 🚀 Performance Optimized: Fast load times and smooth interactions
- 🔄 Real-time Updates: Live attendance and result tracking
- 🌙 Dark Mode Support: Professional dark theme
- ♿ Accessibility Compliant: WCAG 2.1 standards
| Component | Technology |
|---|---|
| Backend Framework | Django 5.2.12 |
| Programming Language | Python 3.9+ |
| Database (Dev) | SQLite3 |
| Database (Prod) | PostgreSQL 12+ |
| Frontend | HTML5, CSS3 (Flexbox/Grid) |
| Scripting | JavaScript (ES6+) |
| UI Libraries | Google Fonts (Syne, DM Sans) |
| Styling | Glass-morphism, Custom Animations |
| Static Files | Whitenoise |
| Deployment | Vercel |
| Version Control | Git |
┌─────────────────────────────────────────────────────────┐
│ Client (Browser) │
│ (HTML5, CSS3, JS) │
└────────────────────────┬────────────────────────────────┘
│
┌──────────┴──────────┐
│ │
┌────▼────┐ ┌────▼─────┐
│ Static │ │ Templates │
│ Files │ │ (Django) │
└─────────┘ └────┬──────┘
│
┌──────────────────────────────────┴──────────────────────────┐
│ Django Application │
│ ┌───────────────┐ ┌──────────┐ ┌─────────────────────┐ │
│ │ Views │ │ Models │ │ Forms & Validation │ │
│ │ (HodViews, │ │ (Student,│ │ │ │
│ │ StaffViews, │ │ Staff, │ │ │ │
│ │ StudentViews)│ │ etc.) │ │ │ │
│ └───────────────┘ └──────────┘ └─────────────────────┘ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ Authentication & Permissions │ │
│ └────────────────────────────────────────────────────────┘ │
└─────────────────────────┬────────────────────────────────────┘
│
┌─────▼──────┐
│ Database │
│ (SQLite / │
│ PostgreSQL)│
└────────────┘
| Role | Dashboard | Staff Mgmt | Student Mgmt | Attendance | Results | Leave Requests |
|---|---|---|---|---|---|---|
| Admin (HOD) | ✅ Full | ✅ Full CRUD | ✅ Full CRUD | ✅ View | ✅ View | ✅ Approve/Reject |
| Staff (Faculty) | ✅ Limited | ❌ None | ❌ None | ✅ Mark/Update | ✅ Publish | ❌ Submit Only |
| Student | ✅ User Profile | ❌ None | ❌ None | ✅ View Only | ✅ View Only | ✅ Submit |
Before installation, ensure you have the following:
- Python: 3.9 or higher
- pip: Python package manager
- Git: Version control (optional but recommended)
- Virtual Environment: Recommended for isolation
- Database: SQLite (included) or PostgreSQL for production
Check your versions:
python --version
pip --version
git --versiongit clone https://github.com/Snehasish-tech/Student-MS.git
cd Student-MS# Windows
python -m venv venv
venv\Scripts\activate
# macOS/Linux
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txt# Copy example environment file
cp .env.example .env
# Edit .env with your settings
# (Database credentials, secret key, etc.)# Create database tables
python manage.py makemigrations
python manage.py migrate
# Load sample data (optional)
python manage.py seed_demo_datapython manage.py createsuperuserFollow the prompts to create your admin credentials.
python manage.py collectstatic --noinputpython manage.py runserverAccess the application at: http://localhost:8000
Create a .env file in the project root:
# Django Settings
DEBUG=True
SECRET_KEY=your-secret-key-here
ALLOWED_HOSTS=localhost,127.0.0.1
# Database Configuration
DB_ENGINE=django.db.backends.sqlite3
DB_NAME=db.sqlite3
# Email Configuration (Optional)
EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-app-password
# Security
SECURE_SSL_REDIRECT=False
SESSION_COOKIE_SECURE=False
CSRF_COOKIE_SECURE=FalseKey configurations:
- INSTALLED_APPS: Django apps and third-party packages
- MIDDLEWARE: Request processing chain
- DATABASES: Database configuration
- STATIC_FILES: Static files configuration
- TEMPLATES: Template engine settings
Student
├── id (Primary Key)
├── admin (ForeignKey: User)
├── roll_number (Unique)
├── first_name
├── last_name
├── sex
├── date_of_birth
├── session (ForeignKey: Session)
└── created_at
Staff
├── id (Primary Key)
├── admin (ForeignKey: User)
├── full_name
├── sex
├── date_of_birth
├── assigned_date
└── created_at
Course
├── id (Primary Key)
├── course_name (Unique)
└── created_at
Session
├── id (Primary Key)
├── session_year_start
├── session_year_end
└── created_at
Subject
├── id (Primary Key)
├── subject_name
├── course (ForeignKey: Course)
├── staff (ForeignKey: Staff)
└── created_at
Attendance
├── id (Primary Key)
├── student (ForeignKey: Student)
├── subject (ForeignKey: Subject)
├── attendance_date
├── status (Present/Absent)
└── created_at
StudentResult
├── id (Primary Key)
├── student (ForeignKey: Student)
├── subject (ForeignKey: Subject)
├── marks
├── grade
└── created_at
POST /login- User loginPOST /logout- User logoutPOST /registration- New user registration
GET /admin/home- Admin dashboardGET /admin/view-staff- List all staffPOST /admin/add-staff- Add new staff memberGET /admin/view-students- List all studentsPOST /admin/add-student- Add new student
GET /staff/home- Staff dashboardPOST /staff/mark-attendance- Mark student attendancePOST /staff/submit-results- Publish student results
GET /student/home- Student dashboardGET /student/view-attendance- View attendance recordsGET /student/view-results- View grades and results
The project is pre-configured for Vercel:
-
Push to GitHub:
git add . git commit -m "Deployment ready" git push origin main
-
Connect to Vercel:
- Visit Vercel Dashboard
- Import GitHub repository
- Configure environment variables
- Deploy
-
Production Database:
- Use PostgreSQL for production
- Update
settings.pywith production database credentials
-
Static Files:
- Whitenoise handles static file serving
- No additional configuration needed
Issue 1: ModuleNotFoundError
# Solution: Ensure virtual environment is activated and dependencies are installed
pip install -r requirements.txtIssue 2: Database Migration Errors
# Solution: Reset migrations (development only)
python manage.py migrate student_management_app zero
python manage.py migrateIssue 3: Static Files Not Loading
# Solution: Collect static files
python manage.py collectstatic --noinputIssue 4: SuperUser Creation Fails
# Solution: Reset database and recreate
python manage.py flush
python manage.py createsuperuserIssue 5: Port 8000 Already in Use
# Solution: Specify different port
python manage.py runserver 8001We welcome contributions from the community!
- Fork the repository
- Create a feature branch:
git checkout -b feature/AmazingFeature - Commit changes:
git commit -m 'Add AmazingFeature' - Push to branch:
git push origin feature/AmazingFeature - Submit a Pull Request
- Follow PEP 8 for Python code
- Add comments for complex logic
- Update documentation for new features
- Test changes before submitting
- SMS/Email notifications
- Advanced analytics and reporting
- Mobile app (React Native)
- AI-powered performance predictions
- Multi-language support
- Video conferencing integration
- Digital assignment submission
- Parent portal
This project is licensed under the MIT License - see LICENSE file for details.
Built with ❤️ by TEAM PLUTO
Student Management System (SMS) © 2026

