# ๐Ÿ“š Student Management System (SMS)
[![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/) [![Django](https://img.shields.io/badge/django-5.2-green.svg)](https://www.djangoproject.com/) [![License](https://img.shields.io/badge/license-MIT-yellow.svg)](LICENSE) [![Stars](https://img.shields.io/github/stars/S4NKALP/Student-Management-System-In-Django)](https://github.com/S4NKALP/Student-Management-System-In-Django/stargazers) [![Status](https://img.shields.io/badge/status-active-success.svg)]() [![Code Quality](https://img.shields.io/badge/code%20quality-A-green)]() [![Documentation](https://img.shields.io/badge/docs-95%25-brightgreen)]() [![Tests](https://img.shields.io/badge/tests-85%25-yellow)]() 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](#-tech-stack) - [๐Ÿ‘ฅ Role System](#-role-system) - [โœจ Key Features](#-key-features) - [๐Ÿ“ธ Screenshots](#-screenshots) - [๐ŸŽฏ Project Architecture](#-project-architecture) - [๐ŸŒ Feasibility](#-feasibility) - [๐Ÿš€ Getting Started](#-getting-started) - [๐Ÿ”ง Configuration](#-configuration) - [๐Ÿ“ฆ Dependencies](#-dependencies) - [๐Ÿ” Security Features](#-security-features) - [๐Ÿ“Š Database Schema](#-database-schema) - [๐Ÿ”Œ API Endpoints](#-api-endpoints) - [๐Ÿ“ฑ Frontend Features](#-frontend-features) - [๐Ÿ” Testing](#-testing) - [๐Ÿ“ˆ Performance](#-performance) - [๐Ÿค Contributing](#-contributing) - [๐Ÿ“„ License](#-license) - [๐Ÿ™ Credits](#-credits) ## ๐Ÿ’ป Tech Stack
๐Ÿ”ฅ Core Technologies | Technology | Version | Purpose | Documentation | | --------------------- | ------- | ------------------- | -------------------------------------------------- | | Python | 3.8+ | Backend Development | [Python Docs](https://docs.python.org/) | | Django | 5.2 | Web Framework | [Django Docs](https://docs.djangoproject.com/) | | Django REST Framework | 3.16.0 | API Development | [DRF Docs](https://www.django-rest-framework.org/) | | Firebase Admin | 6.7.0 | Real-time Features | [Firebase Docs](https://firebase.google.com/docs) | | Google Cloud Storage | 3.1.0 | File Storage | [GCS Docs](https://cloud.google.com/storage/docs) |
โšก Frontend Technologies | Technology | Version | Purpose | Documentation | | ---------------- | ------- | ----------------- | --------------------------------------------------------- | | Bootstrap | 5.3.0 | UI Framework | [Bootstrap Docs](https://getbootstrap.com/docs/) | | jQuery | Latest | DOM Manipulation | [jQuery Docs](https://api.jquery.com/) | | Firebase Web SDK | 9.22.0 | Real-time Updates | [Firebase Web Docs](https://firebase.google.com/docs/web) | | Font Awesome | 6.0.0 | Icons | [Font Awesome Docs](https://fontawesome.com/docs) |
๐Ÿ› ๏ธ Development Tools | Tool | Version | Purpose | Documentation | | ------------------ | ------- | ------------------- | --------------------------------------------------------------- | | Git | Latest | Version Control | [Git Docs](https://git-scm.com/doc) | | WhiteNoise | 6.9.0 | Static File Serving | [WhiteNoise Docs](https://whitenoise.readthedocs.io/) | | PyOTP | 2.9.0 | OTP Generation | [PyOTP Docs](https://github.com/pyauth/pyotp) | | Django Jazzmin | 3.0.1 | Admin Interface | [Jazzmin Docs](https://django-jazzmin.readthedocs.io/) | | Django Mathfilters | 1.0.0 | Math Operations | [Mathfilters Docs](https://github.com/dbrgn/django-mathfilters) | | Django Model Utils | 5.0.0 | Model Utilities | [Model Utils Docs](https://django-model-utils.readthedocs.io/) |
### ๐Ÿ–ฅ๏ธ Development Environment | Component | Details | | -------------------- | ---------------------------------------------- | | **Operating System** | [Arch Linux](https://archlinux.org/) | | **Window Manager** | [Hyprland](https://github.com/hyprwm/Hyprland) | | **Status Bar** | [Modus](https://github.com/S4NKALP/Modus) | | **Editor** | [Neovim](https://neovim.io/) | | **Terminal** | [Kitty](https://sw.kovidgoyal.net/kitty/) | | **Shell** | [Zsh](https://www.zsh.org/) | ## ๐Ÿ‘ฅ 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](screenshots/admin_dashboard.png) _Admin Dashboard with overview statistics and quick actions_ ![Student Dashboard](screenshots/student_dashboard.png) _Student Dashboard showing attendance, course progress, and notices_ ![Teacher Dashboard](screenshots/teacher_dashboard.png) _Teacher Dashboard with class schedule and student performance metrics_
๐Ÿ‘ฅ User Management ![User Profiles](screenshots/user_profiles.png) _User profile management interface_ ![Role Management](screenshots/role_management.png) _Role-based access control settings_
๐Ÿ“š Academic Features ![Course Management](screenshots/course_management.png) _Course creation and management interface_ ![Attendance System](screenshots/attendance_system.png) _Attendance tracking and reporting_ ![Leave Management](screenshots/leave_management.png) _Leave request and approval workflow_
๐Ÿ“ฑ Mobile Responsive Design ![Mobile Dashboard](screenshots/mobile_dashboard.png) _Dashboard view on mobile devices_ ![Mobile Navigation](screenshots/mobile_navigation.png) _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: - [Python](https://www.python.org/downloads/) (3.8 or higher) - [Git](https://git-scm.com/downloads) - [UV](https://github.com/astral-sh/uv) (Python package installer and resolver) - [Firebase Account](https://firebase.google.com/) (for notifications) - [Google Cloud Account](https://cloud.google.com/) (for storage) ### ๐Ÿ› ๏ธ Installation Steps #### 1๏ธโƒฃ Clone the Repository ```bash # 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 ##### Method A: Using UV (Recommended) ```bash # 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 ```bash # 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 ```bash # 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](https://console.firebase.google.com/) 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: ```gitignore firebase-key.json ``` #### 3๏ธโƒฃ Firebase Configuration Files 1. Copy the example files and rename them: ```bash # 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: ```env 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: - **Admin Panel**: http://localhost:8000/admin - **Main Application**: http://localhost:8000 ### ๐Ÿšจ 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: ```env # 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//` - Approve student leave - `POST /reject-student-leave//` - Reject student leave - `POST /approve-staff-leave//` - Approve staff leave - `POST /reject-staff-leave//` - Reject staff leave ### Meeting Management - `POST /schedule-meeting/` - Schedule parent-teacher meeting - `POST /update-meeting//` - Update meeting details - `POST /cancel-meeting//` - Cancel meeting - `POST /mark-attendance//` - Mark meeting attendance ### Course Progress - `GET /course-progress//` - Get student's course progress - `GET /subject-progress//` - Get subject progress - `POST /update-progress//` - Update course progress ### Attendance - `POST /mark-attendance/` - Mark class attendance - `GET /attendance-report//` - Get student attendance report - `GET /class-attendance//` - 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](LICENSE) file for details. ## ๐Ÿ™ Credits If you use this project in your work, please give proper credit by: 1. **Academic Use**: ```markdown Student Management System (SMS) by S4NKALP GitHub: https://github.com/S4NKALP/Student-Management-System-In-Django ``` 2. **Commercial Use**: ```markdown Based on Student Management System (SMS) by S4NKALP Original Project: https://github.com/S4NKALP/Student-Management-System-In-Django ``` 3. **Code References**: ```python # 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](https://github.com/S4NKALP) [![GitHub](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/S4NKALP) [![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://linkedin.com/in/sankalp) [![Twitter](https://img.shields.io/badge/Twitter-1DA1F2?style=for-the-badge&logo=twitter&logoColor=white)](https://twitter.com/sankalp)