2025-04-22 03:47:56 +05:45
2025-04-22 03:47:31 +05:45
2025-04-22 03:47:56 +05:45
2025-04-22 03:47:31 +05:45
2025-04-22 03:47:31 +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-01-06 20:30:30 +05:45
2025-01-06 20:30:30 +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
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

🔄 Recent Improvements

🧹 Code Reorganization

  • Reduced Redundancy: Consolidated duplicate code in view functions
  • Improved Structure: Created common view utilities and helper functions
  • Better Code Reuse: Implemented common handlers for common operations
  • Standardized Response Format: Created consistent API response formats

⚡ Performance Optimizations

  • Dependency Management: Updated and optimized package requirements
  • Firebase Integration: Enhanced Firebase functionality and error handling
  • View Efficiency: Reduced redundant database queries
  • API Improvements: Standardized API response formats for better client handling

🔧 Technical Enhancements

  • Role-based Access: Improved role verification with utility functions
  • Error Handling: Better error detection and user feedback
  • File Upload Handling: Centralized file upload handling with validation
  • Password Security: Enhanced password strength validation

🧹 Code Cleanup

  • Removed Print Statements: Eliminated unnecessary print debug statements
  • Standardized Views: Consistent view behavior across the application
  • Simplified Middleware: Streamlined HTTP error handling
  • Better Exception Handling: More graceful error handling throughout the app

These improvements make the codebase more maintainable, easier to extend, and more efficient in its operation, while maintaining all the original functionality.

🚀 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️⃣ Set Up Virtual Environment

# Create a virtual environment
python -m venv venv

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

# For Windows:
.\venv\Scripts\activate

3️⃣ Install Dependencies

# Install Python dependencies
pip install -r requirements.txt

4️⃣ 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

Subject

  • name, code, course, period_or_year, syllabus_pdf, files

Student

  • name, status, gender, birth_date, email, phone, addresses
  • marital_status, parent_name, parent_phone, citizenship_no
  • batches, image, course, current_period, joining_date, fcm_token

Staff

  • name, phone, designation, gender, birth_date, email, addresses
  • marital_status, parent_name, parent_phone, citizenship_no, passport
  • image, joining_date, fcm_token, course

Parent

  • name, phone, email, address, students, image, fcm_token

Routine

  • course, subject, teacher, start_time, end_time, period_or_year, is_active

Attendance

  • date, routine, teacher, teacher_attend, class_status

Leave Management

  • StaffLeave: staff, start_date, end_date, message, status
  • StudentLeave: student, start_date, end_date, message, status

Feedback System

  • StudentFeedback: Student feedback for teachers
  • ParentFeedback: Parent feedback for teachers
  • InstituteFeedback: Student feedback for institute
  • StaffInstituteFeedback: Staff feedback for institute
  • ParentInstituteFeedback: Parent feedback for institute

Course Tracking

  • student, course, enrollment_date, start_date, expected_end_date
  • actual_end_date, progress_status, completion_percentage, current_period
  • period_start_date, period_end_date, notes

Teacher-Parent Meeting

  • meeting_date, meeting_time, duration, status, agenda, notes
  • cancellation_reason, meeting_link, is_online

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

Feedback System

  • POST /submit-feedback/ - Submit general feedback
  • POST /submit-institute-feedback/ - Submit institute feedback
  • POST /submit-staff-institute-feedback/ - Submit staff institute feedback
  • POST /submit-parent-feedback/ - Submit parent feedback
  • POST /submit-parent-institute-feedback/ - Submit parent institute feedback

Subject & Course Management

  • GET /subject/<int:subject_id>/files/ - Get subject files
  • GET /subject/<int:subject_id>/syllabus/ - View subject syllabus
  • GET /get-subjects/ - Get all subjects
  • GET /get-teachers/ - Get all teachers
  • GET /get-course-duration/ - Get course duration
  • GET /get-subject-schedule/ - Get subject schedule
  • POST /manage-subject-files/ - Manage subject files
  • POST /delete-subject-file/ - Delete subject file
  • GET /get-teacher-subjects/ - Get teacher's subjects

Attendance Management

  • POST /save-attendance/ - Save attendance
  • GET /get-attendance-form/ - Get attendance form
  • GET /get-students/ - Get student list

Notice Management

  • POST /add-notice/ - Add new notice
  • POST /delete-notice/<int:notice_id>/ - Delete notice

Parent-Teacher Meeting

  • POST /schedule-meeting/ - Schedule a meeting
  • POST /update-meeting/<int:meeting_id>/ - Update meeting details
  • POST /cancel-meeting/<int:meeting_id>/ - Cancel a meeting
  • GET /get-meetings/ - Get all meetings
  • GET /get-upcoming-meetings/ - Get upcoming meetings

Course Progress

  • GET /get-course-progress/<int:student_id>/ - Get student's course progress
  • POST /update-course-progress/ - Update course progress
  • GET /get-progress-analytics/ - Get progress analytics

Firebase Integration

  • POST /saveFCMToken/ - Save Firebase Cloud Messaging token

🔐 Authentication System

OTP Verification

  • Phone-based OTP verification
  • OTP expiry management
  • OTP resend functionality
  • Secure OTP storage

📱 Frontend Features

User Interface

  • Responsive design
  • Dark/Light mode
  • Custom themes
  • Accessibility support
  • Mobile-first approach

Interactive Features

  • Real-time updates
  • File uploads
  • Data visualization
  • Interactive forms
  • Dynamic content loading

Mobile Optimization

  • Touch-friendly interface
  • Push notifications
  • Mobile-specific layouts
  • Gesture support

🔍 Testing

Current Test Coverage

  • Unit Tests: Basic test structure in place
  • API Tests: Endpoint testing framework available
  • Integration Tests: Setup for comprehensive testing

Running Tests

# Run all tests
python manage.py test

# Run specific app tests
python manage.py test app

# Run with coverage
coverage run --source='.' manage.py test
coverage report

Test Areas

  1. Authentication & Authorization

    • OTP verification
    • Password reset
    • Role-based access
  2. Data Management

    • CRUD operations
    • Data validation
    • File handling
  3. Business Logic

    • Attendance calculation
    • Leave approval workflow
    • Course progress tracking
  4. Integration

    • Firebase messaging
    • File storage
    • Email/SMS notifications

📈 Performance

Optimization Techniques

  • Database indexing
  • Query optimization
  • Caching
  • Lazy loading
  • Code minification
  • Asset compression
  • CDN integration

Monitoring

  • Performance metrics
  • Error tracking
  • User analytics
  • Resource usage
  • API response times

🤝 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 credit where credit is due:

Student Management System
Created by Sankalp
GitHub: https://github.com/S4NKALP

📝 Citation

If you're using this project in an academic context, you can cite it as:

@software{StudentManagementSystem2025,
  author = {Sankalp},
  title = {Student Management System},
  year = {2025},
  publisher = {GitHub},
  url = {https://github.com/S4NKALP/Student-Management-System-In-Django}
}

🤝 Acknowledgments

  • Thanks to all contributors who have helped improve this project
  • Special thanks to the open-source community for their valuable resources
  • Appreciation to all users who have provided feedback 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%