This commit is contained in:
sankalp committed 2025-04-03 23:28:55 +05:45
1 parent 33b4941c5b
commit c7b0e1d91f
2 files changed
+149 -419

No files matched your search

+135 -419
View File
@@ -1,264 +1,133 @@
# 📚 Student Management System (SMS)
<div align="center">
[![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/)
[![Python](https://img.shields.io/badge/python-3.x-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)
[![Arch Linux](https://img.shields.io/badge/Arch%20Linux-1793D1?logo=arch-linux&logoColor=white)](https://archlinux.org/)
[![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.
A modern and comprehensive Student Management System built with Django.
</div>
## 📑 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
<details>
<summary><b>🔥 Core Technologies</b></summary>
<div align="center">
| 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) |
### 🔥 Core Technologies
| <img src="https://techstack-generator.vercel.app/python-icon.svg" alt="Python" width="100" height="100"/> | <img src="https://techstack-generator.vercel.app/django-icon.svg" alt="Django" width="100" height="100"/> | <img src="https://techstack-generator.vercel.app/js-icon.svg" alt="JavaScript" width="100" height="100"/> | <img src="https://techstack-generator.vercel.app/mysql-icon.svg" alt="MySQL" width="100" height="100"/> | <img src="https://techstack-generator.vercel.app/restapi-icon.svg" alt="REST API" width="100" height="100"/> |
|:---:|:---:|:---:|:---:|:---:|
| <b>Python</b> | <b>Django</b> | <b>JavaScript</b> | <b>MySQL</b> | <b>REST API</b> |
</details>
### ⚡ Additional Technologies
| <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/redis/redis-original-wordmark.svg" alt="Redis" width="80" height="80"/> | <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/nginx/nginx-original.svg" alt="Nginx" width="80" height="80"/> | <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/bootstrap/bootstrap-plain-wordmark.svg" alt="Bootstrap" width="80" height="80"/> | <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/html5/html5-original-wordmark.svg" alt="HTML5" width="80" height="80"/> | <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/css3/css3-original-wordmark.svg" alt="CSS3" width="80" height="80"/> | <img src="https://raw.githubusercontent.com/devicons/devicon/master/icons/git/git-original-wordmark.svg" alt="Git" width="80" height="80"/> |
|:---:|:---:|:---:|:---:|:---:|:---:|
| <b>Redis</b> | <b>Nginx</b> | <b>Bootstrap</b> | <b>HTML5</b> | <b>CSS3</b> | <b>Git</b> |
<details>
<summary><b>⚡ Frontend Technologies</b></summary>
</div>
| 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 Environment
</details>
<details>
<summary><b>🛠️ Development Tools</b></summary>
| 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) |
</details>
### 🖥️ 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/) |
- **Processor**: Intel Core i5-7300U
- **Operating System**: Arch Linux
- **Window Manager**: [Hyprland](https://github.com/S4NKALP/hyprland)
- **Status Bar**: [Modus](https://github.com/S4NKALP/Modus)
- **Editor**: [Neovim](https://github.com/S4NKALP/nvim)
## ✨ 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
<div align="center">
### 📚 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
| Feature | Description |
|---------|-------------|
| 👥 Multi-User Roles | Admin, Staff, and Student interfaces |
| 📚 Course Management | Comprehensive course and subject tracking |
| 📊 Attendance System | Real-time attendance monitoring |
| 📝 Leave Management | Streamlined leave application process |
| 📢 Notice Board | Instant announcements and updates |
| 💬 Feedback System | Student and staff feedback collection |
| 🔐 OTP Verification | Secure authentication system |
| ☁️ Cloud Storage | Google Cloud integration |
| 🔥 Firebase | Real-time notifications and auth |
### 📊 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
</div>
### 📝 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
## 🚀 Quick Start
### 🔐 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
### Linux Users
```bash
# Clone the repository
# Clone & Setup
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
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
```
#### 4️⃣ Configure Environment Variables
```bash
# Copy the example environment file
cp .env.example .env
# Configure
cp .env.example .env # Edit with your settings
# 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
# Run
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
### Windows Users
```powershell
# Prerequisites
# Install Python from https://www.python.org/downloads/
# Install Git from https://git-scm.com/download/win
# Install Visual C++ Build Tools: https://visualstudio.microsoft.com/visual-cpp-build-tools/
Once everything is set up, you can access:
- **Admin Panel**: http://localhost:8000/admin
- **Main Application**: http://localhost:8000
# Clone & Setup
git clone https://github.com/S4NKALP/Student-Management-System-In-Django.git
cd Student-Management-System-In-Django
python -m venv venv
.\venv\Scripts\activate
pip install -r requirements.txt
### 🚨 Troubleshooting Guide
# Configure
copy .env.example .env
# Edit .env file with your settings
#### 🔧 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
# Run
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
```
## 🔧 Configuration
### ⚠️ Common Issues (Windows)
- If `pip install` fails, make sure you have Visual C++ Build Tools installed
- If `python` command not found, add Python to your PATH environment variable
- If permission errors occur, run Command Prompt as Administrator
- If virtualenv fails, try: `python -m pip install --upgrade virtualenv`
### Environment Variables
Create a `.env` file in the project root:
### 🔐 Environment Variables (.env)
```env
# Django Settings
DEBUG=True
SECRET_KEY=your-secret-key
SECRET_KEY=your-secret-key-here
ALLOWED_HOSTS=localhost,127.0.0.1
# Database
# Database Configuration
DB_NAME=sms_db
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_HOST=localhost
DB_PORT=3306
# Email (for OTP)
# Email Configuration (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
EMAIL_HOST_PASSWORD=your-app-specific-password
# Firebase
# Firebase Configuration
FIREBASE_DATABASE_URL=your-firebase-url
FIREBASE_TYPE=service_account
FIREBASE_PROJECT_ID=your-project-id
@@ -266,241 +135,88 @@ 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
FIREBASE_AUTH_URI=https://accounts.google.com/o/oauth2/auth
FIREBASE_TOKEN_URI=https://oauth2.googleapis.com/token
FIREBASE_AUTH_PROVIDER_X509_CERT_URL=https://www.googleapis.com/oauth2/v1/certs
FIREBASE_CLIENT_X509_CERT_URL=your-cert-url
# Google Cloud
GOOGLE_CLOUD_PROJECT=your-google-cloud-project
GOOGLE_CLOUD_KEY_FILE=path/to/your/google-cloud-key.json
# Google Cloud Storage
GS_BUCKET_NAME=your-bucket-name
GS_CREDENTIALS=path/to/credentials.json
```
## 📦 Dependencies
> **Note**: Never commit your `.env` file to version control. Keep your credentials secure!
### Backend
- Django 5.1.7
- Django REST Framework
- Firebase Admin
- Google Cloud Storage
- PyOTP
- WhiteNoise
## 🎯 Project Roadmap
### Frontend
- Bootstrap
- jQuery
- Firebase Web SDK
<div align="center">
## 🔐 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
```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
### ⚠️ Important Notice
```
This is a Minor Project created for educational purposes.
Features listed in the roadmap may or may not be implemented.
```
### Test Areas
1. Authentication & Authorization
- OTP verification
- Password reset
- Role-based access
</div>
2. Data Management
- CRUD operations
- Data validation
- File handling
### 🎯 Current (v1.0)
- ✅ Core SMS functionality
- ✅ User management
- ✅ Course tracking
- ✅ Basic features
3. Business Logic
- Attendance calculation
- Leave approval workflow
- Course progress tracking
### 🔜 Upcoming (v1.1+)
- 👨‍👩‍👧‍👦 Parents dashboard
- 📚 Teacher study materials
- 📖 Library management
- 📊 Enhanced analytics
- 🤝 Parent-teacher meetings
4. Integration
- Firebase messaging
- File storage
- Email/SMS notifications
## 📮 Support & Links
## 📈 Performance
<div align="center">
### Optimization Techniques
- Database indexing
- Query optimization
- Caching
- Lazy loading
- Code minification
[![GitHub Issues](https://img.shields.io/github/issues/S4NKALP/Student-Management-System-In-Django)](https://github.com/S4NKALP/Student-Management-System-In-Django/issues)
[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/S4NKALP/Student-Management-System-In-Django)](https://github.com/S4NKALP/Student-Management-System-In-Django/pulls)
[![Documentation](https://img.shields.io/badge/docs-wiki-blue)](https://github.com/S4NKALP/Student-Management-System-In-Django/wiki)
### Monitoring
- Performance metrics
- Error tracking
- User analytics
- Resource usage
</div>
## 🤝 Contributing
## 🙏 Credits
1. Fork the repository
2. Create your feature branch
3. Commit your changes
4. Push to the branch
5. Create a Pull Request
If you use this project in your work, please give credit where credit is due:
### Code Style
- Follow PEP 8
- Use type hints
- Write docstrings
- Add comments
```markdown
Student Management System
Created by Sankalp
GitHub: https://github.com/S4NKALP
```
### Commit Messages
- Use present tense
- Be descriptive
- Reference issues
### 📝 Citation
If you're using this project in an academic context, you can cite it as:
```bibtex
@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
## 📄 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
<div align="center">
[![License](https://img.shields.io/badge/license-MIT-yellow.svg)](LICENSE)
</div>
---
@@ -509,7 +225,7 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
### 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)
<!-- [![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) -->
</div>
</div>
+14
View File
@@ -0,0 +1,14 @@
[x] Multi-User Roles
[x] User Management
[x] OTP Verification
[x] Course Management
[x] Notice Board
[x] Attendance System
[x] Notification System
[x] Feedback System
[x] Leave Management
[x] Course Tracking
[x] Teacher Study Materials
[ ] Parent User Roles
[ ] Parent Roles
[ ] Library Management