# 📚 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.1.7-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.
## 📑 Table of Contents - [💻 Tech Stack](#-tech-stack) - [✨ Key Features](#-key-features) - [🎯 Project Architecture](#-project-architecture) - [🚀 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) ## 💻 Tech Stack
🔥 Core Technologies | Technology | Version | Purpose | Documentation | |------------|---------|---------|---------------| | Python | 3.8+ | Backend Development | [Python Docs](https://docs.python.org/) | | Django | 5.1.7 | Web Framework | [Django Docs](https://docs.djangoproject.com/) | | Django REST Framework | 3.15.2 | 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 | Purpose | Documentation | |------------|---------|---------------| | Bootstrap | UI Framework | [Bootstrap Docs](https://getbootstrap.com/docs/) | | jQuery | DOM Manipulation | [jQuery Docs](https://api.jquery.com/) | | Firebase Web SDK | Real-time Updates | [Firebase Web Docs](https://firebase.google.com/docs/web) |
🛠️ Development Tools | Tool | Purpose | Documentation | |------|---------|---------------| | Git | Version Control | [Git Docs](https://git-scm.com/doc) | | WhiteNoise | Static File Serving | [WhiteNoise Docs](https://whitenoise.readthedocs.io/) | | PyOTP | OTP Generation | [PyOTP Docs](https://github.com/pyauth/pyotp) |
### 🖥️ 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/) | ## ✨ Key Features ### 👥 User Management - **Multi-role System**: Admin, Staff, and Student interfaces - **Secure Authentication**: OTP-based verification system - **Role-based Access Control**: Granular permissions for each role - **User Profiles**: Comprehensive user information management ### 📚 Academic Management - **Course Management**: Create and manage courses and subjects - **Class Scheduling**: Timetable generation and management - **Grade Management**: Track and calculate student grades - **Exam Management**: Schedule and conduct examinations ### 📊 Attendance System - **Real-time Tracking**: Live attendance monitoring - **Automated Reports**: Generate attendance reports - **Notification System**: Alert for low attendance - **Bulk Operations**: Manage multiple students at once ### 📝 Leave Management - **Online Applications**: Digital leave request system - **Approval Workflow**: Multi-level approval process - **Leave History**: Track all leave records - **Automated Notifications**: Status updates via email/SMS ### 🔐 Security Features - **OTP Verification**: Two-factor authentication - **Session Management**: Secure session handling - **CSRF Protection**: Cross-site request forgery prevention - **XSS Protection**: Cross-site scripting prevention - **SQL Injection Prevention**: Secure database queries ### 📱 Mobile Features - **Responsive Design**: Works on all devices - **Push Notifications**: Real-time updates via Firebase - **Offline Support**: Basic functionality without internet - **Mobile-first Approach**: Optimized for mobile devices ## 🎯 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) - [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️⃣ Set Up Virtual Environment ```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 ``` #### 3️⃣ Install Dependencies ```bash # Install Python dependencies pip install -r requirements.txt ``` #### 4️⃣ 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. Create a Firebase project 2. Download the service account key 3. Place it as `firebase-key.json` in the project root 4. Configure Firebase Web SDK in `static/js/firebase-config.js` #### 6️⃣ Run Migrations ```bash # Apply database migrations python manage.py migrate ``` #### 7️⃣ Create Superuser ```bash # Create a superuser account python manage.py createsuperuser ``` #### 8️⃣ Run the Development Server ```bash # Start the development server python manage.py runserver # The application will be available at: # http://localhost:8000 ``` ### 📱 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 DB_PORT=3306 # Email (for OTP) EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend EMAIL_HOST=smtp.gmail.com EMAIL_PORT=587 EMAIL_USE_TLS=True EMAIL_HOST_USER=your-email@gmail.com EMAIL_HOST_PASSWORD=your-app-password # Firebase FIREBASE_DATABASE_URL=your-firebase-url FIREBASE_TYPE=service_account FIREBASE_PROJECT_ID=your-project-id FIREBASE_PRIVATE_KEY_ID=your-private-key-id FIREBASE_PRIVATE_KEY=your-private-key FIREBASE_CLIENT_EMAIL=your-client-email FIREBASE_CLIENT_ID=your-client-id # Google Cloud GOOGLE_CLOUD_PROJECT=your-google-cloud-project GOOGLE_CLOUD_KEY_FILE=path/to/your/google-cloud-key.json ``` ## 📦 Dependencies ### Backend - Django 5.1.7 - Django REST Framework - Firebase Admin - Google Cloud Storage - PyOTP - WhiteNoise ### Frontend - Bootstrap - jQuery - Firebase Web SDK ## 🔐 Security Features ### Authentication - OTP-based authentication - Session management - Password hashing ### 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`, `duration`, `duration_type` (Year/Semester) #### Subject - `name`, `course` (FK), `semester_or_year`, `syllabus_pdf`, `files` #### Student - `name`, `status`, `gender`, `birth_date`, `email`, `phone`, `addresses`, `marital_status` - `parent_name`, `parent_phone`, `citizenship_no`, `batches` (M2M), `image` - `course` (FK), `current_semester`, `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` #### Routine - `course` (FK), `subject` (FK), `teacher` (FK), `start_time`, `end_time` - `semester_or_year`, `is_active` #### Attendance - `date`, `routine` (FK), `teacher` (FK), `teacher_attend`, `class_status` #### Leave Management - `Staff_leave`: `staff` (FK), `start_date`, `end_date`, `message`, `status` - `Student_Leave`: `student` (FK), `start_date`, `end_date`, `message`, `status` #### Feedback System - `StudentFeedback`: `student` (FK), `teacher` (FK), `rating`, `feedback_text` - `InstituteFeedback`: `institute` (FK), `user` (FK), `feedback_type`, `rating`, `feedback_text` - `StaffInstituteFeedback`: `institute` (FK), `staff` (FK), `feedback_type`, `rating`, `feedback_text` #### Course Tracking - `student` (FK), `course` (FK), `enrollment_date`, `start_date`, `expected_end_date` - `actual_end_date`, `progress_status`, `completion_percentage`, `current_semester` - `semester_start_date`, `semester_end_date`, `notes` ### 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 - `POST /update-profile/` - Update user profile - `POST /change-password/` - Change password - `POST /teacher-update-profile-picture/` - Update teacher profile picture - `POST /teacher-change-password/` - Change teacher 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 ### Feedback System - `POST /submit-feedback/` - Submit general feedback - `POST /submit-institute-feedback/` - Submit institute feedback - `POST /submit-staff-institute-feedback/` - Submit staff institute feedback ### Subject & Course Management - `GET /subject//files/` - Get subject files - `GET /subject//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//` - Delete notice ### Firebase Integration - `POST /saveFCMToken/` - Save Firebase Cloud Messaging token ## 📱 Frontend Features ### User Interface - Responsive design - Dark/Light mode - Custom themes - Accessibility support ### Interactive Features - Real-time updates - File uploads - Data visualization ### Mobile Optimization - Touch-friendly interface - Offline support - Push notifications ## 🔍 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 ```bash # 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 ### Monitoring - Performance metrics - Error tracking - User analytics - Resource usage ## 🤝 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 ### Commit Messages - Use present tense - Be descriptive - Reference issues ## 📄 License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ---
### 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)