https://github.com/s4nkalp/student-management-system-in-django
https://github.com/s4nkalp/student-management-system-in-django
django django-framework django-project python sms student-management-system student-management-system-project
Last synced: 23 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/s4nkalp/student-management-system-in-django
- Owner: S4NKALP
- License: mit
- Created: 2024-12-14T06:09:22.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2025-02-06T02:45:12.000Z (4 months ago)
- Last Synced: 2025-02-06T03:30:52.626Z (4 months ago)
- Topics: django, django-framework, django-project, python, sms, student-management-system, student-management-system-project
- Language: CSS
- Homepage:
- Size: 359 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ๐ Student Management System (SMS)
[](https://www.python.org/)
[](https://www.djangoproject.com/)
[](LICENSE)
[](https://github.com/S4NKALP/Student-Management-System-In-Django/stargazers)
[]()
[]()
[]()
[]()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 with overview statistics and quick actions_
_Student Dashboard showing attendance, course progress, and notices_
_Teacher Dashboard with class schedule and student performance metrics_๐ฅ User Management

_User profile management interface_
_Role-based access control settings_๐ Academic Features

_Course creation and management interface_
_Attendance tracking and reporting_
_Leave request and approval workflow_๐ฑ Mobile Responsive Design

_Dashboard view on mobile devices_
_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 protected]
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 repository5. **Presentations/Reports**:
- Include the project name and author in your references
- Provide the GitHub repository link
- Acknowledge any specific features or components usedRemember 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)
[](https://github.com/S4NKALP)
[](https://linkedin.com/in/sankalp)
[](https://twitter.com/sankalp)