2025-05-23 03:09:07 +05:45
2025-04-22 03:47:31 +05:45
2025-04-22 03:47:31 +05:45
2025-01-06 20:30:30 +05:45
2025-04-20 17:46:30 +05:45
2025-05-23 03:08:43 +05:45
2025-01-06 20:30:30 +05:45
2025-04-22 03:47:31 +05:45
2025-04-22 03:57:55 +05:45
2025-04-22 03:47:31 +05:45
2025-04-20 18:03:33 +05:45
2025-04-22 03:47:31 +05:45

📚 Student Management System (SMS)

Python Django License Stars Status Code Quality Documentation Tests

A comprehensive Student Management System built with Django, featuring multi-role access, real-time notifications, and secure authentication.

Note: This project was developed as part of an academic minor project. Ongoing maintenance or additional feature development may be limited.

📑 Table of Contents

💻 Tech Stack

🔥 Core Technologies
Technology Version Purpose Documentation
Python 3.8+ Backend Development Python Docs
Django 5.2 Web Framework Django Docs
Django REST Framework 3.16.0 API Development DRF Docs
Firebase Admin 6.7.0 Real-time Features Firebase Docs
Google Cloud Storage 3.1.0 File Storage GCS Docs
⚡ Frontend Technologies
Technology Version Purpose Documentation
Bootstrap 5.3.0 UI Framework Bootstrap Docs
jQuery Latest DOM Manipulation jQuery Docs
Firebase Web SDK 9.22.0 Real-time Updates Firebase Web Docs
Font Awesome 6.0.0 Icons Font Awesome Docs
🛠️ Development Tools
Tool Version Purpose Documentation
Git Latest Version Control Git Docs
WhiteNoise 6.9.0 Static File Serving WhiteNoise Docs
PyOTP 2.9.0 OTP Generation PyOTP Docs
Django Jazzmin 3.0.1 Admin Interface Jazzmin Docs
Django Mathfilters 1.0.0 Math Operations Mathfilters Docs
Django Model Utils 5.0.0 Model Utilities Model Utils Docs

🖥️ Development Environment

Component Details
Operating System Arch Linux
Window Manager Hyprland
Status Bar Modus
Editor Neovim
Terminal Kitty
Shell Zsh

👥 Role System

🎓 User Roles and Permissions

Role Description Key Features
Super Admin System administrator with full access - Full system control
- User management
- System configuration
HOD (Head of Department) Department head with elevated privileges - Course management
- Staff supervision
- Department analytics
Admission Officer Handles student admissions - Student registration
- Document verification
- Admission tracking
Teacher Academic staff member - Class management
- Attendance tracking
- Grade management
Student Primary system user - Course access
- Attendance tracking
- Grade viewing
Parent Student guardian - Student progress tracking
- Communication with teachers
- Fee management

🔐 Authentication System

  • Multi-factor Authentication

    • Phone-based OTP verification
    • TOTP (Time-based One-Time Password)
    • Password reset tokens
    • Session management
  • Role-based Access Control

    • Granular permissions per role
    • Custom permission groups
    • Access level restrictions
    • Activity logging

✨ Key Features

👥 User Management

  • Multi-role System: Comprehensive roles including Admin, HOD, Teacher, Student, Parent, and Admission Officer
  • Secure Authentication: OTP and TOTP-based verification for password resets
  • Role-based Access Control: Different dashboards and permissions for each user role
  • User Profiles: Complete profile management with personal details and image uploads

📚 Academic Management

  • Course Management: Create and organize course offerings with duration tracking
  • Subject Management: Organize subjects with syllabus uploads and additional materials
  • Class Scheduling: Create and manage class routines with teacher assignments
  • Batch Management: Group students into batches for better organization

📊 Attendance System

  • Class Attendance: Record and track student attendance for each class
  • Teacher Attendance: Track teacher presence for scheduled classes
  • Attendance Reports: View attendance statistics and historical records
  • Real-time Status: Monitor attendance status on dashboards

📝 Leave Management

  • Leave Requests: Students and staff can request leave with date ranges
  • Multi-level Approval: HOD or Admin approval workflow for leave requests
  • Status Tracking: Monitor pending, approved, and rejected leave requests
  • Leave History: Complete historical record of all leave requests

👨‍👩‍👧‍👦 Parent-Teacher Interaction

  • Meeting Scheduling: Schedule online or in-person parent-teacher meetings
  • Student Progress Tracking: Parents can monitor student performance
  • Meeting Management: Tools for scheduling, rescheduling, and cancelling meetings

📈 Course Progress Tracking

  • Progress Monitoring: Track student course completion percentages
  • Completion Metrics: View detailed completion metrics by course and student
  • Performance Analysis: Analyze student performance across courses

🔄 Feedback System

  • Multi-level Feedback: Students, parents, and staff can submit feedback
  • Rating System: Detailed rating mechanism with comments
  • Anonymous Feedback: Option for anonymous feedback submissions
  • Institute Feedback: Feedback about the educational institution

🔐 Security Features

  • OTP Verification: Two-factor authentication for password resets
  • Session Management: Secure session handling for all users
  • CSRF Protection: Cross-site request forgery prevention
  • Password Security: Strong password validation and secure storage

📱 Mobile-Friendly Interface

  • Responsive Design: Works seamlessly on mobile devices and desktops
  • Touch-friendly Interface: Optimized for touch devices
  • Responsive Navigation: Mobile-optimized navigation system
  • Adaptive Layouts: Content adjusts to different screen sizes

📸 Screenshots

🏠 Dashboard Views

Admin Dashboard Admin Dashboard with overview statistics and quick actions

Student Dashboard Student Dashboard showing attendance, course progress, and notices

Teacher Dashboard Teacher Dashboard with class schedule and student performance metrics

👥 User Management

User Profiles User profile management interface

Role Management Role-based access control settings

📚 Academic Features

Course Management Course creation and management interface

Attendance System Attendance tracking and reporting

Leave Management Leave request and approval workflow

📱 Mobile Responsive Design

Mobile Dashboard Dashboard view on mobile devices

Mobile Navigation Responsive navigation menu on smaller screens

Note: The above screenshots showcase key interfaces of the Student Management System. Replace these placeholder images with actual screenshots by adding your images to a screenshots directory in the project root.

🎯 Project Architecture

SMS/
├── app/                    # Main application
│   ├── admin/             # Admin interface
│   ├── api/               # REST API endpoints
│   ├── models/            # Database models
│   ├── views/             # View logic
│   └── templates/         # HTML templates
├── static/                # Static files
│   ├── css/              # Stylesheets
│   ├── js/               # JavaScript files
│   └── img/              # Images
├── media/                 # User uploaded files
├── templates/             # Base templates
└── student_management_system/  # Project settings

🚀 Getting Started

📋 Prerequisites

Before you begin, ensure you have the following installed:

🛠️ Installation Steps

1️⃣ Clone the Repository

# Clone the repository
git clone https://github.com/S4NKALP/Student-Management-System-In-Django.git

# Navigate to the project directory
cd Student-Management-System-In-Django

2️⃣ Choose Your Installation Method

# Install UV (if not already installed)
pip install uv

# Or install using curl (Linux/Mac)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Or install using PowerShell (Windows)
irm https://astral.sh/uv/install.ps1 | iex

# Run migrations
uv run manage.py makemigrations
uv run manage.py migrate

# Create admin user
uv run manage.py createsuperuser

# Run the server the package will install automatically
uv run manage.py runserver
Method B: Using Traditional venv
# Create a virtual environment
python -m venv venv

# Activate the virtual environment
# For Linux/Mac:
source venv/bin/activate

# For Windows:
.\venv\Scripts\activate

# Install dependencies from requirements.txt
pip install -r requirements.txt

# Run migrations
python manage.py makemigrations
python manage.py migrate

# Create admin user
python manage.py createsuperuser

# Lunch the server
python manage.py runserver

3️⃣ Configure Environment Variables

# Copy the example environment file
cp .env.example .env

# Edit the .env file with your settings
# Required settings:
# - SECRET_KEY
# - DEBUG
# - ALLOWED_HOSTS
# - Firebase credentials
# - Google Cloud credentials

5️⃣ Set Up Firebase

  1. Go to Firebase Console
  2. Create a new project or select an existing one
  3. Enable the following services:
    • Authentication
    • Cloud Firestore
    • Cloud Storage
    • Cloud Messaging

2️⃣ Service Account Key (firebase-key.json)

  1. In Firebase Console, go to Project Settings > Service Accounts
  2. Click "Generate New Private Key"
  3. Save the downloaded JSON file as firebase-key.json in your project root
  4. Add the file to .gitignore to prevent committing sensitive data:
    firebase-key.json
    

3️⃣ Firebase Configuration Files

  1. Copy the example files and rename them:

    # Copy Firebase config example
    cp static/js/firebase-config.example.js static/js/firebase-config.js
    
    # Copy Firebase messaging service worker example
    cp static/firebase-messaging-sw.example.js static/firebase-messaging-sw.js
    
  2. Update the configuration in both files with your Firebase project details:

    • Replace YOUR_API_KEY with your Firebase API key
    • Replace YOUR_PROJECT_ID with your Firebase project ID
    • Replace other placeholder values with your actual Firebase configuration

4️⃣ Firebase Cloud Messaging (FCM) Setup

  1. In Firebase Console, go to Project Settings > Cloud Messaging
  2. Generate a new Server Key
  3. Add the key to your .env file:
    FIREBASE_SERVER_KEY=your_server_key_here
    

5️⃣ Testing Firebase Setup

  1. Run the development server
  2. Open the browser console
  3. Check for any Firebase-related errors
  4. Test push notifications using the Firebase Console

📱 Accessing the Application

Once everything is set up, you can access:

🚨 Troubleshooting Guide

🔧 Common Issues

  • Firebase Setup: Ensure proper configuration in firebase-config.js and firebase-key.json
  • Static Files: Run python manage.py collectstatic if static files are not loading
  • Database Issues: Check database settings in .env file
  • OTP Not Working: Verify email settings in .env file

🔧 Configuration

Environment Variables

Create a .env file in the project root:

# Django Settings
DEBUG=True
SECRET_KEY=your-secret-key
ALLOWED_HOSTS=localhost,127.0.0.1

# Database
DB_NAME=sms_db
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_HOST=localhost

# Firebase Settings
FIREBASE_CREDENTIALS=path/to/firebase-key.json
FIREBASE_DATABASE_URL=your-firebase-database-url

# Google Cloud Settings
GOOGLE_CLOUD_PROJECT=your-project-id
GOOGLE_CLOUD_CREDENTIALS=path/to/google-cloud-key.json

# Email Settings
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-email-password

# SMS Configuration
SMS_API_KEY=your_sms_api_key_here
SMS_SENDER_ID=SMSSYS

# OTP Settings
OTP_EXPIRY=300  # OTP expiry time in seconds

📦 Dependencies

Backend

  • Django 5.2
  • Django REST Framework 3.16.0
  • Firebase Admin 6.7.0
  • Google Cloud Storage 3.1.0
  • PyOTP 2.9.0
  • WhiteNoise 6.9.0
  • Django Jazzmin 3.0.1
  • Django Mathfilters 1.0.0
  • Django Model Utils 5.0.0

Frontend

  • Bootstrap 5.3.0
  • jQuery Latest
  • Firebase Web SDK 9.22.0
  • Font Awesome 6.0.0

🔐 Security Features

Authentication

  • OTP and TOTP-based authentication
  • Session management
  • Password hashing
  • Password reset tokens

Data Protection

  • CSRF protection
  • XSS prevention
  • SQL injection prevention
  • Input validation
  • File upload security

📊 Database Schema

Core Models

Institute

  • name, phone, email, address, pan_no, reg_no, logo, description

Course

  • name, code, duration, duration_type, description, is_active
  • batches (ManyToManyField to Batch)
  • course_tracking_records (related_name for CourseTracking)
  • routine_records (related_name for Routine)

Subject

  • name, code, course (ForeignKey to Course), period_or_year, syllabus_pdf, files
  • attendance_records (related_name for Attendance)

Student

  • name, status, gender, birth_date, email, phone, addresses
  • marital_status, parent_name, parent_phone, citizenship_no
  • batches (ManyToManyField to Batch)
  • image, course (ForeignKey to Course), current_period, joining_date, fcm_token
  • meetings (related_name for TeacherParentMeeting)
  • leave_requests (related_name for StudentLeave)

Staff

  • name, phone, designation, gender, birth_date, email, addresses
  • marital_status, parent_name, parent_phone, citizenship_no, passport
  • image, joining_date, fcm_token
  • courses_taught (related_name for Course)
  • meetings (related_name for TeacherParentMeeting)

Parent

  • name, phone, email, address, students (ManyToManyField to Student)
  • image, fcm_token

Routine

  • course (ForeignKey to Course), subject (ForeignKey to Subject)
  • teacher (ForeignKey to Staff), start_time, end_time
  • period_or_year, is_active
  • attendance_records (related_name for Attendance)

Attendance

  • date, routine (ForeignKey to Routine), teacher (ForeignKey to Staff)
  • teacher_attend, class_status

Leave Management

  • StaffLeave: staff (ForeignKey to Staff), start_date, end_date, message, status
  • StudentLeave: student (ForeignKey to Student), start_date, end_date, message, status

CourseTracking

  • student (ForeignKey to Student), course (ForeignKey to Course)
  • enrollment_date, start_date, expected_end_date, actual_end_date
  • progress_status, completion_percentage, current_period
  • period_start_date, period_end_date, notes

TeacherParentMeeting

  • meeting_date, meeting_time, duration, status, agenda, notes
  • cancellation_reason, meeting_link, is_online
  • student (ForeignKey to Student), teacher (ForeignKey to Staff)
  • attendance_records (related_name for Attendance)

Security Models

  • TOTPSecret: OTP secret keys
  • ResetToken: Password reset tokens

🔌 API Endpoints

Authentication & Security

  • POST /password-reset/ - Password reset options
  • POST /password-reset/phone/ - Phone-based password reset
  • POST /password-reset/phone/verify/ - Verify phone OTP
  • POST /password-reset/email/ - Email-based password reset
  • POST /password-reset/email/verify/ - Verify email code
  • POST /password-reset/set/ - Set new password
  • POST /check-weak-password/ - Password strength check

Dashboard & Profile

  • GET /dashboard/ - Main dashboard
  • GET /student-dashboard/ - Student dashboard
  • GET /teacher-dashboard/ - Teacher dashboard
  • GET /parent-dashboard/ - Parent dashboard
  • GET /hod-dashboard/ - HOD dashboard
  • GET /admission-officer-dashboard/ - Admission officer dashboard
  • POST /update-profile/ - Update user profile
  • POST /change-password/ - Change password

Leave Management

  • POST /request-leave/ - Request student leave
  • POST /request-staff-leave/ - Request staff leave
  • POST /approve-student-leave/<int:leave_id>/ - Approve student leave
  • POST /reject-student-leave/<int:leave_id>/ - Reject student leave
  • POST /approve-staff-leave/<int:leave_id>/ - Approve staff leave
  • POST /reject-staff-leave/<int:leave_id>/ - Reject staff leave

Meeting Management

  • POST /schedule-meeting/ - Schedule parent-teacher meeting
  • POST /update-meeting/<int:meeting_id>/ - Update meeting details
  • POST /cancel-meeting/<int:meeting_id>/ - Cancel meeting
  • POST /mark-attendance/<int:meeting_id>/ - Mark meeting attendance

Course Progress

  • GET /course-progress/<int:student_id>/ - Get student's course progress
  • GET /subject-progress/<int:subject_id>/ - Get subject progress
  • POST /update-progress/<int:tracking_id>/ - Update course progress

Attendance

  • POST /mark-attendance/ - Mark class attendance
  • GET /attendance-report/<int:student_id>/ - Get student attendance report
  • GET /class-attendance/<int:routine_id>/ - Get class attendance

🔐 Security Features

Authentication

  • OTP and TOTP-based authentication
  • Session management
  • Password hashing using Django's built-in hashers
  • Password reset tokens with expiration

Data Protection

  • CSRF protection
  • Input validation
  • File upload security with size and type restrictions
  • Secure file storage using Google Cloud Storage

Role-based Access Control

  • Granular permissions per role
  • Custom permission groups
  • Access level restrictions
  • Activity logging

API Security

  • Token-based authentication
  • Rate limiting
  • Request validation
  • Error handling

📱 Frontend Features

🔍 Testing

Test Coverage

  • Unit tests for models
  • Integration tests for views
  • API endpoint tests
  • Security tests

Test Types

  • Model validation tests
  • View response tests
  • Permission tests
  • Integration tests

Test Tools

  • Django Test Client
  • pytest
  • Coverage reporting
  • CI/CD integration

Responsive Design

  • Mobile-first approach
  • Bootstrap 5.3.0 for responsive layouts
  • Custom CSS for specific components
  • Adaptive navigation

Real-time Updates

  • Firebase Cloud Messaging for push notifications
  • WebSocket support for live updates
  • Real-time attendance tracking
  • Instant notification system

User Interface

  • Clean and modern design
  • Intuitive navigation
  • Role-specific dashboards
  • Interactive data visualization

Mobile Optimization

  • Touch-friendly interface
  • Responsive tables
  • Mobile-optimized forms
  • Adaptive image loading

📈 Performance

Optimization

  • Database query optimization
  • Caching implementation
  • Lazy loading
  • Asset compression

Monitoring

  • Error tracking
  • Performance metrics
  • User activity logging
  • System health checks

Scalability

  • Horizontal scaling support
  • Load balancing
  • Database sharding
  • Caching strategies

🤝 Contributing

  1. Fork the repository
  2. Create your feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

Code Style

  • Follow PEP 8
  • Use type hints
  • Write docstrings
  • Add comments
  • Follow Django best practices

Commit Messages

  • Use present tense
  • Be descriptive
  • Reference issues
  • Follow conventional commits

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Credits

If you use this project in your work, please give proper credit by:

  1. Academic Use:

    Student Management System (SMS) by S4NKALP
    GitHub: https://github.com/S4NKALP/Student-Management-System-In-Django
    
  2. Commercial Use:

    Based on Student Management System (SMS) by S4NKALP
    Original Project: https://github.com/S4NKALP/Student-Management-System-In-Django
    
  3. Code References:

    # This code is based on Student Management System (SMS)
    # Original Author: S4NKALP
    # Source: https://github.com/S4NKALP/Student-Management-System-In-Django
    
  4. Documentation:

    • Include a reference to the original project in your documentation
    • Mention any modifications or improvements you've made
    • Provide a link to the original repository
  5. Presentations/Reports:

    • Include the project name and author in your references
    • Provide the GitHub repository link
    • Acknowledge any specific features or components used

Remember to respect the MIT License terms while using this project.

📝 Acknowledgments

  • This project was inspired by the need for a modern, efficient student management system
  • Special thanks to all the testers and users who provided valuable feedback
  • Grateful to the academic community for their support and suggestions

Made with ❤️ by Sankalp

GitHub LinkedIn Twitter

S
Description
A comprehensive Student Management System built with Django, featuring multi-role access, real-time notifications, and secure authentication.
Readme GPL-3.0
1.6 MiB
0 Stars 1 Watchers 0 Forks
V2.0.1
Latest
2025-04-22 00:23:30 +00:00
Languages
HTML 51.1%
Python 31.8%
JavaScript 14.1%
CSS 3%