A comprehensive Django-based Student Management System with modern features and robust architecture. π
- π User Authentication and Authorization
- π¨βπ Student Information Management
- π Course Management
- π Attendance Tracking
- π Grade Management
- π¨βπ©βπ§βπ¦ Parent Portal
- π± Admin Dashboard
- π₯ Firebase Integration
- π± SMS Notifications
- π§ Email Notifications
- πΎ Caching System
- π Security Features
- π¨ Responsive UI with Jazzmin Admin Theme
- Python 3.8 or higher
- Redis Server
- PostgreSQL (recommended) or SQLite
- Firebase Account (for Firebase features)
- SMS Gateway Account (for SMS features)
-
Create a Firebase Project:
- Go to Firebase Console
- Click "Add project" and follow the setup wizard
- Give your project a name and enable Google Analytics (optional)
-
Get Firebase Configuration:
- In Firebase Console, click on the gear icon (βοΈ) next to "Project Overview"
- Select "Project settings"
- Scroll down to "Your apps" section
- Click the web icon (</>)
- Register your app with a nickname
- Copy the configuration object that looks like this:
const firebaseConfig = { apiKey: "xxx", authDomain: "xxx", projectId: "xxx", storageBucket: "xxx", messagingSenderId: "xxx", appId: "xxx", measurementId: "xxx" };
-
Set up Firebase configuration files:
# Copy and rename the example files cp static/firebase-messaging-sw.example.js static/firebase-messaging-sw.js cp static/js/firebase-config.example.js static/js/firebase-config.js # Update the configuration in both files with your Firebase credentials # - In firebase-messaging-sw.js: Update the firebaseConfig object # - In firebase-config.js: Update both firebaseConfig and vapidKey
-
Get Service Account Key:
- In Project Settings, go to "Service accounts" tab
- Click "Generate new private key"
- Save the downloaded JSON file as
firebase-key.jsonin your project root - Add this file to
.gitignoreto keep it secure
-
Update Environment Variables:
- Copy the values from your Firebase configuration to your
.envfile:
FIREBASE_API_KEY=your-api-key FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com FIREBASE_PROJECT_ID=your-project-id FIREBASE_STORAGE_BUCKET=your-project.appspot.com FIREBASE_MESSAGING_SENDER_ID=your-sender-id FIREBASE_APP_ID=your-app-id FIREBASE_MEASUREMENT_ID=your-measurement-id
- Copy the values from your Firebase configuration to your
-
Clone the repository:
git clone https://github.com/S4NKALP/Student-Management-System-In-Django.git cd Student-Management-System-In-Django -
Choose your installation method:
Using UV (Recommended, faster):
# Install UV if not already installed curl -LsSf https://astral.sh/uv/install.sh | sh # UV will automatically: # - Create and manage virtual environment # - Install all dependencies # - Handle package versions # - Optimize installation process
Using pip (Traditional method):
# Create and activate virtual environment python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install dependencies pip install -r requirements.txt
-
Set up environment variables: Create a
.envfile in the project root with the following variables:DEBUG=True SECRET_KEY=your-secret-key ALLOWED_HOSTS=localhost,127.0.0.1 DATABASE_URL=your-database-url # Email Configuration EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend DEFAULT_FROM_EMAIL=your-email@example.com EMAIL_HOST=smtp.gmail.com EMAIL_PORT=587 EMAIL_HOST_USER=your-email@gmail.com EMAIL_HOST_PASSWORD=your-app-password EMAIL_USE_TLS=True # Firebase Configuration FIREBASE_API_KEY=your-api-key FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com FIREBASE_PROJECT_ID=your-project-id FIREBASE_STORAGE_BUCKET=your-project.appspot.com FIREBASE_MESSAGING_SENDER_ID=your-sender-id FIREBASE_APP_ID=your-app-id FIREBASE_MEASUREMENT_ID=your-measurement-id # SMS Configuration SMS_API_KEY=your-sms-api-key SMS_SENDER_ID=your-sender-id
-
Run migrations:
# Create database migrations python manage.py makemigrations # Apply migrations python manage.py migrate
-
Create a superuser:
python manage.py createsuperuser
-
Collect static files:
python manage.py collectstatic
python manage.py runserverVisit http://localhost:8000 to access the application.
For production deployment, it's recommended to:
- Set
DEBUG=Falsein your environment variables - Use a production-grade database (PostgreSQL recommended)
- Set up proper SSL/TLS certificates
- Configure a production-grade web server (Nginx/Apache)
- Use Gunicorn as the WSGI server:
gunicorn student_management_system.wsgi:application
student_management_system/
βββ app/ # Main application directory
βββ static/ # Static files (CSS, JS, images)
βββ templates/ # HTML templates
βββ student_management_system/ # Project settings
βββ manage.py # Django management script
βββ requirements.txt # Project dependencies
βββ README.md # This file
- CSRF Protection
- XSS Protection
- SQL Injection Protection
- Secure Password Hashing
- Session Security
- HTTPS Enforcement
- Security Headers
- Rate Limiting
The system provides various AJAX endpoints for data exchange between the frontend and backend:
POST /login/- User loginPOST /logout/- User logoutPOST /password-reset/- Password reset optionsPOST /password-reset/phone/- Phone-based password resetPOST /password-reset/email/- Email-based password resetPOST /password-reset/set/- Set new password
GET /app/dashboard/- Main dashboardGET /app/student-dashboard/- Student dashboardGET /app/teacher-dashboard/- Teacher dashboardGET /app/parent-dashboard/- Parent dashboardGET /app/admission-officer-dashboard/- Admission officer dashboardGET /app/hodDashboard/- HOD dashboard
GET /app/get-students/- Get all studentsGET /app/get-student/<int:student_id>/- Get student detailsPOST /app/add-student/- Add new studentPUT /app/edit-student/<int:student_id>/- Edit studentDELETE /app/delete-student/<int:student_id>/- Delete student
GET /app/get-subjects/- Get all subjectsGET /app/get-courses/- Get all coursesPOST /app/add-subject/- Add new subjectPUT /app/edit-subject/<int:subject_id>/- Edit subjectDELETE /app/delete-subject/<int:subject_id>/- Delete subjectGET /app/get-course-duration/- Get course durationGET /app/get-subject-schedule/- Get subject schedule
GET /app/get-teachers/- Get all teachersPOST /app/add-staff/- Add new staffGET /app/staff/<int:staff_id>/- Get staff detailsPUT /app/edit-staff/<int:staff_id>/- Edit staffDELETE /app/delete-staff/<int:staff_id>/- Delete staff
GET /app/api/meetings/<int:meeting_id>/- Get meeting detailsPOST /app/api/meetings/add/- Create new meetingPUT /app/api/meetings/<int:meeting_id>/edit/- Update meetingPOST /app/api/meetings/<int:meeting_id>/cancel/- Cancel meetingGET /app/api/meetings/<int:meeting_id>/notes/- Get meeting notesGET /app/api/meetings/<int:meeting_id>/agenda/- Get meeting agenda
GET /app/api/hod/routines/<int:routine_id>/- Get routine detailsPOST /app/api/hod/routines/- Create new routinePUT /app/api/hod/routines/<int:routine_id>/edit/- Update routineDELETE /app/api/hod/routines/<int:routine_id>/delete/- Delete routine
POST /app/request-leave/- Request student leavePOST /app/request-staff-leave/- Request staff leavePOST /app/approve-student-leave/<int:leave_id>/- Approve student leavePOST /app/approve-staff-leave/<int:leave_id>/- Approve staff leavePOST /app/reject-student-leave/<int:leave_id>/- Reject student leavePOST /app/reject-staff-leave/<int:leave_id>/- Reject staff leaveGET /app/get-student-leaves/- Get student leavesGET /app/get-staff-leaves/- Get staff leaves
POST /app/submit-feedback/- Submit student feedbackPOST /app/submit-institute-feedback/- Submit institute feedbackPOST /app/submit-staff-institute-feedback/- Submit staff institute feedbackPOST /app/parent/feedback/submit/- Submit parent feedbackPOST /app/parent/feedback/institute/submit/- Submit parent institute feedback
POST /app/update-profile/- Update user profilePOST /app/change-password/- Change passwordPOST /app/teacher-update-profile-picture/- Update teacher profile picturePOST /app/teacher-change-password/- Change teacher password
POST /app/saveFCMToken/- Save Firebase Cloud Messaging tokenGET /firebase-messaging-sw.js- Firebase service worker
POST /app/add-notice/- Add new noticeDELETE /app/delete-notice/<int:notice_id>/- Delete noticePOST /app/hod/add-notice/- Add HOD noticeGET /app/notice/<int:notice_id>/- View notice
POST /app/save-attendance/- Save attendanceGET /app/get-attendance-form/- Get attendance form
GET /app/api/get-student-progress/- Get student progressGET /app/api/get-progress/<int:progress_id>/- Get specific progressPUT /app/api/edit-progress/<int:progress_id>/- Edit progress
This project is licensed under the GNU General Public License v3.0 (GPL-3.0) - see the LICENSE file for details.
For support, please open an issue in the GitHub repository or contact the maintainers.