How jhansi-07-10/edunova-cr works
EduNova is a school ERP and public-facing CMS, with a React frontend and Django/DRF backend backed by Supabase PostgreSQL. Visitors explore school information and admissions; authenticated students, teachers, parents, and administrators use role-specific portals for academic and operational workflows. The graph includes documented OTP authentication and file-storage behavior. Other feature links are represented at subsystem level from the route and module tree; unsampled view implementations limit certainty about their internal call paths.
Main entry points: AppRoutes.jsx Application routes · urls.py Backend routing · useOtpAuth.js OTP client · portalClient.js Portal API client
Components 25
React application
- Application routes
frontend/src/routes/AppRoutes.jsx - Public website
frontend/src/portals/public - Admissions pages
frontend/src/portals/public/pages/Admissions.jsx - Student portal
frontend/src/portals/student/StudentRoutes.jsx - Teacher portal
frontend/src/portals/teacher/TeacherRoutes.jsx - Parent portal
frontend/src/portals/parent/ParentRoutes.jsx - Admin portal
frontend/src/portals/admin/AdminRoutes.jsx - OTP client
frontend/src/lib/useOtpAuth.js - Portal API client
frontend/src/api/portalClient.js - Admissions API
frontend/src/api/admissionsApi.js - CMS API
frontend/src/api/cmsApi.js
Django services
- Backend routing
backend/config/urls.py - Authentication
backend/portal/auth_views.py - Email delivery
backend/portal/services/email_service.py - Admissions service
backend/apps/admissions/views.py - CMS service
backend/apps/cms/views.py - ERP domain
backend/portal - Data models
backend/portal/models.py
Persistence and delivery
- Supabase PostgreSQL
- File storage
backend/config/storage.py - Supabase Storage
- Local media
- Brevo / email backend
External actors
- Visitor
- School user
Connections 36
- Visitor → Application routes: browses
- School user → Application routes: opens portal
- Application routes → Public website: routes public pages
- Application routes → Admissions pages: routes admissions
- Application routes → Student portal: routes student
- Application routes → Teacher portal: routes teacher
- Application routes → Parent portal: routes parent
- Application routes → Admin portal: routes admin
- Admissions pages → Admissions API: uses API
- Public website → CMS API: uses API
- Student portal → Portal API client: uses client
- Teacher portal → Portal API client: uses client
- Parent portal → Portal API client: uses client
- Admin portal → Portal API client: uses client
- Student portal → OTP client: authenticates with
- Teacher portal → OTP client: authenticates with
- Parent portal → OTP client: authenticates with
- Admin portal → OTP client: authenticates with
- Portal API client → Backend routing: sends API requests
- OTP client → Backend routing: posts OTP requests
- Admissions API → Backend routing: sends API requests
- CMS API → Backend routing: sends API requests
- Backend routing → Authentication: dispatches auth
- Backend routing → Admissions service: dispatches admissions
- Backend routing → CMS service: dispatches CMS
- Authentication → Email delivery: sends OTP email
- Email delivery → Brevo / email backend: delivers email
- Admissions service → Data models: uses models
- CMS service → Data models: uses models
- Backend routing → ERP domain: routes ERP features
- ERP domain → Data models: uses models
- Data models → Supabase PostgreSQL: persists records
- Admissions service → File storage: stores uploads
- CMS service → File storage: stores media
- File storage → Supabase Storage: uploads and reads
- File storage → Local media: falls back to