How kannan-a7801/schoolwebsite works
Purpose and deployable surfaces
This is a school LMS repository with a Java/Spring backend, a lightweight learner-facing static frontend, a separate React admin portal, and versioned curriculum documents for grades 3–10. The primary runtime entry points are backend/src/main/java/com/school/lms/LmsApplication.java, frontend/index.html, frontend/app.js, and admin-portal/src/index.js.
Backend API and application layering
The backend is a Spring Boot 3 application organized as REST controller → service → JPA repository → relational database. Controllers expose role-oriented API surfaces for authentication, courses, students, teachers, and administration:
• backend/src/main/java/com/school/lms/controller/AuthController.java
• backend/src/main/java/com/school/lms/controller/CourseController.java
• backend/src/main/java/com/school/lms/controller/AdminController.java
Business logic is separated by domain in backend/src/main/java/com/school/lms/service/StudentService.java, backend/src/main/java/com/school/lms/service/TeacherService.java, and backend/src/main/java/com/school/lms/service/CourseService.java. Error translation is centralized at backend/src/main/java/com/school/lms/exception/GlobalExceptionHandler.java.
Identity and authorization boundary
Authentication is JWT-based. Login/signup requests enter through the auth controller and service, then JWT issuance/validation and request authentication are handled by the security package. Role data exists as a persisted domain concept, supporting admin, teacher, and student-specific API behavior.
• backend/src/main/java/com/school/lms/security/SecurityConfig.java
• backend/src/main/java/com/school/lms/security/JwtAuthenticationFilter.java
• backend/src/main/java/com/school/lms/security/JwtUtils.java
The frontend/admin clients are expected to cross this boundary through authenticated HTTP requests rather than direct database access.
Learning and school operations domain
The persistent model covers course hierarchy and classroom activity: terms and chapters define curriculum, day classes and attendance capture delivery, and progress, quizzes, submissions, grades, and daily reports capture student work and evaluation.
• backend/src/main/java/com/school/lms/entity/Term.java
• backend/src/main/java/com/school/lms/entity/Chapter.java
• backend/src/main/java/com/school/lms/entity/StudentProgress.java
Related operational flows include quiz submission/results, teacher daily reporting, submission review, and administrative dashboard aggregation, represented by DTO contracts such as backend/src/main/java/com/school/lms/dto/QuizSubmissionDto.java, backend/src/main/java/com/school/lms/dto/DailyReportDto.java, and backend/src/main/java/com/school/lms/dto/AdminDashboardStatsDto.java.
Client applications
The learner-facing client is plain browser JavaScript, with course content/data separated from rendering logic:
• frontend/index.html
• frontend/app.js
• frontend/coursesData.js
The admin portal is a separate React application. admin-portal/src/App.js is its composition point; layout/navigation is shared through admin-portal/src/components/layout/AdminLayout.js; global auth state and API access are isolated in admin-portal/src/context/AuthContext.js and admin-portal/src/services/api.js. Its pages cover students, courses, approvals, submissions, analytics, and system administration.
Data, infrastructure, and external services
The backend uses Spring Data JPA/Hibernate with MySQL connectivity and HikariCP, configured through backend/src/main/resources/application.yml; repositories define database access boundaries, e.g. backend/src/main/java/com/school/lms/repository/UserRepository.java and backend/src/main/java/com/school/lms/repository/SubmissionRepository.java. It also includes backend/src/main/java/com/school/lms/service/SupabaseStorageService.java, indicating Supabase-backed object storage for uploaded/content files.
Curriculum source material is filesystem-managed rather than modeled solely in code. It is organized by grade, chapter, class session, assets, activities, and assessments under paths such as asset/6th class/Chapter 2 Digital Technologies, asset/8th class/Chapter 3 Coding Fundamentals, and asset/10th class/chapter 1. This document corpus is a major content boundary: ingestion, normalization, and storage mapping would need to accommodate inconsistent directory/file naming and mixed DOCX/PDF formats.
Main entry points: AuthController.java Role-oriented REST APIs · app.js Learner rendering · StudentService.java Learning domain services · UserRepository.java JPA repositories
Components 18
Client applications
- Learner static UI · Learner-facing course experience.
frontend/index.html - Learner rendering · Separates rendering from course data.
frontend/app.js - Learner course data
frontend/coursesData.js - Admin React portal · Administrative pages for school operations.
admin-portal/src/App.js - Admin layout
admin-portal/src/components/layout/AdminLayout.js - Admin auth and API client · Owns session state and authenticated API access.
admin-portal/src/context/AuthContext.js
Spring backend
- LMS application
backend/src/main/java/com/school/lms/LmsApplication.java - Role-oriented REST APIs · Authentication, course, and administration endpoints.
backend/src/main/java/com/school/lms/controller/AuthController.java - JWT security boundary · Authenticates requests and enforces role-based access.
backend/src/main/java/com/school/lms/security/SecurityConfig.java - JWT request filter
backend/src/main/java/com/school/lms/security/JwtAuthenticationFilter.java - JWT token service · Issues and validates login tokens.
backend/src/main/java/com/school/lms/security/JwtUtils.java - Learning domain services · Student, teacher, and course business workflows.
backend/src/main/java/com/school/lms/service/StudentService.java - API error translation
backend/src/main/java/com/school/lms/exception/GlobalExceptionHandler.java
Data and content
- JPA repositories · Persistence boundary for users, submissions, and learning data.
backend/src/main/java/com/school/lms/repository/UserRepository.java - Learning operations model · Terms, chapters, attendance, progress, quizzes, submissions, grades, and reports.
backend/src/main/java/com/school/lms/entity/StudentProgress.java - MySQL database · JPA/Hibernate persistence with HikariCP connectivity.
backend/src/main/resources/application.yml - Supabase object storage · Stores uploaded and content files.
backend/src/main/java/com/school/lms/service/SupabaseStorageService.java - Versioned curriculum corpus · Grade, chapter, session, asset, activity, and assessment material in mixed formats.
asset/6th class/Chapter 2 Digital Technologies
Connections 18
- Learner static UI → Learner rendering: loads
- Learner rendering → Learner course data: renders from
- Learner rendering → Role-oriented REST APIs: authenticated HTTP
- Admin React portal → Admin layout: composes
- Admin React portal → Admin auth and API client: uses
- Admin auth and API client → Role-oriented REST APIs: authenticated HTTP
- LMS application → JWT security boundary: configures
- JWT security boundary → JWT request filter: applies
- JWT request filter → JWT token service: validates token
- Role-oriented REST APIs → JWT security boundary: protected by
- Role-oriented REST APIs → JWT token service: login token issuance
- Role-oriented REST APIs → Learning domain services: delegates workflows
- Role-oriented REST APIs → API error translation: errors translated by
- Learning domain services → JPA repositories: persists through
- Learning domain services → Supabase object storage: stores files
- JPA repositories → Learning operations model: maps
- JPA repositories → MySQL database: reads and writes
- Versioned curriculum corpus → Supabase object storage: content storage mapping · Requires normalization for inconsistent names and DOCX/PDF files.