How manhpp/malsec-public works
MalSec LMS supports a browser-based course workflow: users sign in, students work through labs and submit reports, and instructors review submissions and manage grades. Lab sessions can provision isolated VMs and deliver browser-based access; submissions pass through security inspection before storage. Admins manage users, classes, and semesters. The graph combines documented capabilities with sampled wiring; several routers and monitoring configurations are represented at their exact enclosing paths because their runtime internals were not sampled.
Main entry points: main.py FastAPI application · database.py PostgreSQL · main.jsx React application · monitoring Monitoring configuration
Components 29
Web experience
- React application
frontend/src/main.jsx - Login & roles
frontend/src/App.jsx - Student workspace
frontend/src/pages/StudentDashboard.jsx - Instructor tools
frontend/src/pages/InstructorDashboard.jsx - Admin portal
frontend/src/pages/AdminDashboard.jsx
LMS API
- FastAPI application
backend/app/main.py - Authentication
backend/app/routers/auth.py - Access control
backend/app/security.py - User management
backend/app/routers/users.py - Administration
backend/app/routers/admin.py - PostgreSQL
backend/app/database.py - LMS data models
backend/app/models.py
Learning workflow
- Classes & gradebook
backend/app/routers/classes.py - Lab management
backend/app/routers/labs.py - Semester management
backend/app/routers/semesters.py - Submission workflow
backend/app/routers/submissions.py - File inspection
backend/app/services/file_service.py - Similarity analysis
backend/app/services/plagiarism.py - Uploaded files
backend/app/uploads
VM sandbox
- VM lifecycle & VDI tokens
backend/app/services/vm_service.py - Proxmox VE
- Apache Guacamole
- Isolated lab VMs
Observability
- Monitoring configuration
monitoring - Prometheus
- Grafana dashboards
monitoring/grafana - Loki log aggregation
monitoring/loki - Promtail log shipping
monitoring/promtail
Other components
- Students & staff
Connections 41
- Students & staff → React application: use
- React application → Login & roles: route to
- React application → Student workspace: route to
- React application → Instructor tools: route to
- React application → Admin portal: route to
- Login & roles → FastAPI application: request API
- Student workspace → FastAPI application: request API
- Instructor tools → FastAPI application: request API
- Admin portal → FastAPI application: request API
- FastAPI application → Authentication: dispatch
- FastAPI application → User management: dispatch
- FastAPI application → Classes & gradebook: dispatch
- FastAPI application → Lab management: dispatch
- FastAPI application → Semester management: dispatch
- FastAPI application → Submission workflow: dispatch
- FastAPI application → Administration: dispatch
- Authentication → Access control: verify credentials
- Authentication → PostgreSQL: read/write accounts
- User management → PostgreSQL: read/write users
- Classes & gradebook → PostgreSQL: read/write classes
- Classes & gradebook → VM lifecycle & VDI tokens: manage class VMs
- Lab management → PostgreSQL: read/write labs
- Semester management → PostgreSQL: read/write terms
- Submission workflow → PostgreSQL: read/write submissions
- Submission workflow → File inspection: inspect uploads
- Submission workflow → Similarity analysis: analyze similarity
- File inspection → Uploaded files: save inspected files
- Administration → PostgreSQL: manage records
- FastAPI application → PostgreSQL: initialize data
- PostgreSQL → LMS data models: map records
- Student workspace → FastAPI application: request VM session
- VM lifecycle & VDI tokens → Proxmox VE: provision & reset
- VM lifecycle & VDI tokens → Apache Guacamole: build session token
- Proxmox VE → Isolated lab VMs: run isolated VMs
- Apache Guacamole → Isolated lab VMs: connect sessions
- Monitoring configuration → Prometheus: configure metrics
- Monitoring configuration → Grafana dashboards: configure dashboards
- Monitoring configuration → Loki log aggregation: configure logs
- Monitoring configuration → Promtail log shipping: configure shipping
- Promtail log shipping → Loki log aggregation: ship logs
- Prometheus → Grafana dashboards: provide metrics