From c7b0e1d91f29b9838ccdb974c7a8bd41acbc3520 Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Thu, 3 Apr 2025 23:28:55 +0545 Subject: [PATCH] update --- README.md | 554 +++++++++++++----------------------------------------- todo.md | 14 ++ 2 files changed, 149 insertions(+), 419 deletions(-) create mode 100644 todo.md diff --git a/README.md b/README.md index f4c230f..9639bbf 100644 --- a/README.md +++ b/README.md @@ -1,264 +1,133 @@ + # ๐Ÿ“š Student Management System (SMS)
-[![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.
-## ๐Ÿ“‘ 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) | +### ๐Ÿ”ฅ Core Technologies +| Python | Django | JavaScript | MySQL | REST API | +|:---:|:---:|:---:|:---:|:---:| +| Python | Django | JavaScript | MySQL | REST API | -
+### โšก Additional Technologies +| Redis | Nginx | Bootstrap | HTML5 | CSS3 | Git | +|:---:|:---:|:---:|:---:|:---:|:---:| +| Redis | Nginx | Bootstrap | HTML5 | CSS3 | Git | -
-โšก 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 Environment -
- -
-๐Ÿ› ๏ธ 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/) | +- **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 +
-### ๐Ÿ“š 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 +
-### ๐Ÿ“ 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 +
-## ๐Ÿ” 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 +### โš ๏ธ 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 +
-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 +
-### 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 +
-## ๐Ÿค 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. +
+ +[![License](https://img.shields.io/badge/license-MIT-yellow.svg)](LICENSE) + +
--- @@ -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) + - \ No newline at end of file + diff --git a/todo.md b/todo.md new file mode 100644 index 0000000..331fa26 --- /dev/null +++ b/todo.md @@ -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