AcademiaOS is a comprehensive, production-ready Academic Enterprise Resource Planning (ERP) system designed to streamline and automate academic operations for educational institutions. With role-based portals for administrators, faculty members, and students, the application manages multi-tenant registrations, course schedules, batch-wise attendance, grade inputs, and academic structures.
- Key Features
- Tech Stack & Architecture
- Project Directory Structure
- Getting Started & Installation
- Demo & Testing Credentials
- Useful Management Commands
- API Endpoints & Swagger Documentation
- Troubleshooting & Visibility Resolutions
- Verification & System Testing
- Custom Fields Management: Administrators can define custom registration fields (e.g., text, numbers, dates, dropdowns, email, phone) on a per-institution/tenant basis.
- Flexible Storage: Fields are saved inside a JSONField in the student's profile, validating inputs dynamically both on the client and server side.
- Program-Based Structure: Degree programs are dynamically tied to academic departments with credit management limits.
- Auto-Assignment: Automated core course enrollment for first-semester students.
- Backlog & Prerequisite Verification: Automatic checking for course pre-requisites and credit thresholds.
- Fee Integration: Integrates tracking for registration fees with support for multi-step transaction history.
- Admin Approval Dashboard: Unified approval interface for pending student registration requests.
- Bulk Attendance Marking: Allows faculty members to mark attendance for an entire class in a single request.
- Roll Number Pattern Recognition: Automatic grouping and sorting of student registrations based on roll numbers.
- Conflict Prevention: Unique DB constraints ensure no double marking occurs for a student, subject, and date.
- Attendance Submission: Workflow for faculty to submit reports for admin review.
- Faculty Autonomy: Manual entry of marks and letter grades on a 10-point scale (A=10.0 to F=0.0). No automatic calculations are forced, ensuring academic freedom.
- CGPA/GPA Calculations: Automatically recalculates cumulative performance from finalized grades.
- Detailed Analytics: Subject-wise analytics, pass/fail ratios, and class-wide performance distributions.
- PDF Schedule Uploads: Admins can upload timetables as PDFs for specific departments or institution-wide.
- Role-Based Visibility: Students and faculty are shown only timetables relevant to their department or those marked as institution-wide.
- Schedule Conflict Alerts: Backend conflict validation prevents overlapping class assignments.
- Framework: Django 6.0.2 & Django REST Framework 3.16.1
- Database: SQLite (for development), PostgreSQL (for production/deployment)
- Authentication: JWT (JSON Web Tokens) via
djangorestframework-simplejwt - API Docs: Swagger / OpenAPI using
drf-yasg - Testing: Django test suite & Property-Based Testing using
Hypothesis
- Framework: React 19.2.4 & Vite 8.0.1
- Routing: React Router DOM (v7)
- HTTP Client: Axios with interceptors for token refresh
- Styling: Modular CSS3 with clean, responsive grid/flex layouts
ββββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β React Frontend β β Django Backend β β PostgreSQL β
β β’ Role routing β ββββΊ β β’ REST API β ββββΊ β Database β
β β’ Responsive UI β β β’ JWT Auth β β β’ ACID Complianceβ
ββββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
academia-os/
βββ backend/
β βββ apps/ # Modular Django apps
β β βββ academics/ # Departments, courses, subjects, timetables
β β βββ assignments/ # Assignment tasks (read-only/archived)
β β βββ attendance/ # Bulk attendance, reports
β β βββ common/ # Shared models & helper classes
β β βββ communication/ # Noticeboards, alerts
β β βββ exams/ # Grading and exam schedules
β β βββ faculty/ # Faculty profiles, subjects assigned
β β βββ students/ # Student profiles, enrollments, registrations
β β βββ users/ # Custom User models, role definitions, JWT Auth
β βββ config/ # Settings, middleware, central URLs
β βββ faculty_data.csv # Import template data
β βββ manage.py # Django execution CLI
β βββ requirements.txt # Backend dependencies
β
βββ frontend/
β βββ public/ # Public assets
β βββ src/
β β βββ components/ # Layouts, Login, Toast, Modals, Route protections
β β βββ pages/ # Role dashboards (Admin, Faculty, Student)
β β βββ api.js # Central API endpoints client with Axios
β β βββ App.jsx # Routing configuration
β βββ package.json # Node dependencies & scripts
β βββ vite.config.js # Vite configurations
β
βββ PROJECT_REPORT.md # Detailed development status
βββ TIMETABLE_ISSUE_RESOLUTION.md # Troubleshooting guidelines
- Python 3.10+
- Node.js 18+ (with npm)
-
Navigate to the backend directory:
cd backend -
Create and activate a virtual environment:
python -m venv venv # On Windows (PowerShell): .\venv\Scripts\Activate.ps1 # On macOS/Linux: source venv/bin/activate
-
Install dependencies:
pip install -r requirements.txt
-
Create your environment configuration: Create a
.envfile based on.env.example:cp .env.example .env
(Adjust database, secret keys, or debug settings in
.envas required). -
Run migrations and apply database schema:
python manage.py migrate
-
Seed mock data for development:
python manage.py seed_data
-
Start the local Django server:
python manage.py runserver
(The backend API will run on http://127.0.0.1:8000)
-
Navigate to the frontend directory:
cd ../frontend -
Install frontend packages:
npm install
-
Run the local Vite development server:
npm run dev
(The web interface will run on http://localhost:5173 or http://localhost:5174)
Use the following pre-seeded credentials to log in and inspect individual portals:
| Role | Username | Password | Notes |
|---|---|---|---|
| System Administrator | admin_demo |
Admin@2026 |
Full system control, user setup |
| Faculty Member | prof_smith |
Faculty@2026 |
Attendance and grades marking |
| Student | john_doe |
Student@2026 |
Enrollment, timetable view, results |
For testing the role-restricted department timetable logic:
- Student (CSE Dept):
Aksh/Student@2026(Should see global timetables only) - Faculty (ES Dept):
aj_k/Faculty@2026(Should see ES and global timetables)
AcademiaOS features custom Django administrative commands to speed up development:
- Synchronize Programs: Connect course requirements with program parameters.
python manage.py sync_programs
- Seed Real Academic Content: Populates real departments, courses, and schedules.
python manage.py seed_real_data
- Import Faculty from CSV: Import profiles directly.
python manage.py import_faculty faculty_data.csv
- Safe Hard/Soft Deletion:
python manage.py delete_courses --codes BTECH-CSE python manage.py simple_delete_depts --codes MATH CS
For a full list of shell tricks and custom admin capabilities, refer to MANAGEMENT_COMMANDS.md.
When running the backend server locally, detailed documentation of all REST controllers is accessible at:
- Interactive Swagger UI: http://127.0.0.1:8000/swagger/
- ReDoc UI: http://127.0.0.1:8000/redoc/
POST /api/auth/login/β Token generation (JWT access + refresh)GET/POST /api/academics/custom-fields/β Multi-tenant registration field configurationsPOST /api/students/semester-register/β Registration requestsPOST /api/attendance/bulk-mark/β Faculty batch markingPOST /api/faculty/grades/β Grade assignments
If data (such as Timetables or Student Attendance) is not displaying in the frontend, ensure the following setup steps:
- CORS Allowed Origins: Ensure
backend/config/settings.pyincludes the active Vite dev port in theCORS_ALLOWED_ORIGINSlist. - API Base URL: Confirm
frontend/src/api.jsconnects to the correct protocol and port (default ishttp://127.0.0.1:8000). - Local Storage Cache: If switching roles on the same browser window, clear local storage or open an Incognito page to purge conflicting cookies or user credentials.
For deep-dive steps, view the TIMETABLE_ISSUE_RESOLUTION.md file.
To execute automated tests inside the backend:
cd backend
python manage.py testTo run tests specifically on selected apps:
python manage.py test apps.academics
python manage.py test apps.users
python manage.py test apps.attendance