2025-04-03 17:03:53 +05:45
2025-04-03 16:30:28 +05:45
2025-04-03 16:30:28 +05:45
2025-04-03 16:30:28 +05:45
2025-04-03 16:30:28 +05:45
2025-04-03 16:35:14 +05:45
2025-01-06 20:30:30 +05:45
2025-01-06 20:30:30 +05:45
2025-01-06 20:30:30 +05:45
2025-04-03 16:30:28 +05:45
2025-04-03 17:03:53 +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.

📑 Table of Contents

💻 Tech Stack

🔥 Core Technologies
Technology Version Purpose Documentation
Python 3.8+ Backend Development Python Docs
Django 5.1.7 Web Framework Django Docs
Django REST Framework 3.15.2 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 Purpose Documentation
Bootstrap UI Framework Bootstrap Docs
jQuery DOM Manipulation jQuery Docs
Firebase Web SDK Real-time Updates Firebase Web Docs
🛠️ Development Tools
Tool Purpose Documentation
Git Version Control Git Docs
WhiteNoise Static File Serving WhiteNoise Docs
PyOTP OTP Generation PyOTP Docs

🖥️ Development Environment

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

✨ 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:

🛠️ 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. 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

# Apply database migrations
python manage.py migrate

7️⃣ Create Superuser

# Create a superuser account
python manage.py createsuperuser

8️⃣ Run the Development Server

# 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:

🚨 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
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/<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

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

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

# 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 file for details.


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%