How dangothecat/vieva works
AIVES is an oral-exam platform with lecturer workflows for course-material ingestion and AI-assisted question-bank management, student voice exams, and administrator account and speech configuration. The repository includes a React client and a Spring modular-monolith backend. The graph emphasizes the documented RAG workflow and sampled account-management flow; exam-session, streaming, grading, and speech-configuration capabilities are documented in the README but lack corresponding sampled implementation files, so their links are documentation-based rather than source-verified.
Main entry points: client.js API client · AdminUserPage.jsx Admin user management · database Question and document store · App.jsx Web application
Components 29
Web client
- Web application
FE/src/App.jsx - Login and registration
FE/src/pages/LoginPage.jsx
Identity and admin
- Authentication state
FE/src/context/AuthContext.jsx - API client
FE/src/api/client.js - Authentication API
FE/src/api/authApi.js - User API
FE/src/api/userApi.js - Admin user management
FE/src/pages/AdminUserPage.jsx - User management dialogs
FE/src/components/users/CreateUserModal.jsx - User table
FE/src/components/users/UserTable.jsx - Admin user API
FE/src/api/adminUserApi.js - Admin user endpoints
BE/src/main/java/com/example/vieva/adapters/controllers/AdminUserController.java - Admin user use case
BE/src/main/java/com/example/vieva/application/usecases/user/AdminUserServiceImpl.java - Authentication endpoints
BE/src/main/java/com/example/vieva/adapters/controllers/AuthController.java - Authentication use case
BE/src/main/java/com/example/vieva/application/usecases/auth/AuthServiceImpl.java
Question bank and RAG
- Course documents
BE/src/main/java/com/example/vieva/application/usecases/document/DocumentIndexingServiceImpl.java - Async indexing worker
BE/src/main/java/com/example/vieva/infrastructure/service/AsyncDocumentIndexingWorker.java - Document parsing
BE/src/main/java/com/example/vieva/infrastructure/service/TikaDocumentParserGateway.java - Embedding service
BE/src/main/java/com/example/vieva/infrastructure/service/SpringAiEmbeddingGateway.java - RAG question generation
BE/src/main/java/com/example/vieva/infrastructure/service/OpenAiQuestionGeneratorGateway.java - Question bank use case
BE/src/main/java/com/example/vieva/application/usecases/question/QuestionBankServiceImpl.java - Lecturer question endpoints
BE/src/main/java/com/example/vieva/adapters/controllers/LecturerQuestionController.java - LLM service
Oral examination
- Exam attempts and snapshots
BE/src/main/java/com/example/vieva - Real-time speech interaction
BE/src/main/java/com/example/vieva - Adaptive follow-up and grading
BE/src/main/java/com/example/vieva - STT and TTS services
Backend foundations
- Question and document store
BE/src/main/java/com/example/vieva/infrastructure/database - PostgreSQL
Other components
- User
Connections 35
- User → Web application: uses
README.md - Web application → Login and registration: routes to
FE/src/App.jsx - Login and registration → Authentication state: authenticates via
FE/src/pages/LoginPage.jsx - Authentication state → Authentication API: calls
FE/src/context/AuthContext.jsx - Authentication state → User API: loads profile
FE/src/context/AuthContext.jsx - Authentication API → API client: sends requests
FE/src/api/authApi.js - User API → API client: sends requests
FE/src/api/userApi.js - API client → Authentication endpoints: REST API
- Web application → Admin user management: routes to
FE/src/App.jsx - Admin user management → Admin user API: loads and updates
FE/src/pages/AdminUserPage.jsx - Admin user management → User table: renders
FE/src/pages/AdminUserPage.jsx - Admin user management → User management dialogs: opens
FE/src/pages/AdminUserPage.jsx - User management dialogs → Admin user API: submits changes
FE/src/components/users/CreateUserModal.jsx - Admin user API → API client: sends requests
FE/src/api/adminUserApi.js - API client → Admin user endpoints: REST API
- Admin user endpoints → Admin user use case: delegates
- Authentication endpoints → Authentication use case: delegates
- User → Course documents: uploads course material
README.md - Course documents → Async indexing worker: indexes asynchronously
README.md - Async indexing worker → Document parsing: extracts text
README.md - Async indexing worker → Embedding service: creates vectors
README.md - Course documents → Question and document store: stores indexed material
- User → Lecturer question endpoints: reviews questions
README.md - Lecturer question endpoints → Question bank use case: manages drafts and approval
- Question bank use case → RAG question generation: requests generation
README.md - RAG question generation → Embedding service: retrieves context
README.md - RAG question generation → LLM service: generates questions
README.md - Question bank use case → Question and document store: persists questions
- User → Exam attempts and snapshots: starts exam
README.md - Exam attempts and snapshots → Real-time speech interaction: starts voice session
README.md - Real-time speech interaction → STT and TTS services: streams audio
README.md - Real-time speech interaction → Adaptive follow-up and grading: submits transcript
README.md - Adaptive follow-up and grading → LLM service: evaluates and follows up
README.md - Exam attempts and snapshots → Question and document store: stores exam evidence
README.md - Question and document store → PostgreSQL: persists records