# hemanth3112007-boop/pbl_b3_cse_3b architecture

> Architecture diagram of the GitHub repository hemanth3112007-boop/pbl_b3_cse_3b, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hemanth3112007-boop/pbl_b3_cse_3b
- Repository: https://github.com/hemanth3112007-boop/pbl_b3_cse_3b

## Overview

SkillLoop is a training, skills-development, and employment-intelligence platform: trainees and staff use a browser interface, while a Spring Boot API provides training records, skill-gap analysis, recommendations, and employment tracking. The documented backend workflow spans trainee enrollment, assessment and certification, followed by employment outcomes and scheduled follow-ups; skills analysis and course recommendations form a separate development branch. The frontend also includes a profile-to-role gap workflow. Source excerpts verify only selected service interactions, so unverified links are omitted; some backend capabilities are included from the README and repository tree.

Main entry points: [`frontend/src/App.tsx`](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/frontend/src/App.tsx) (Web application), [`src/main/java/com/skillloop/training/EnrollmentService.java`](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/EnrollmentService.java) (Enrollment service), [`src/main/java/com/skillloop/training/CertificationService.java`](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/CertificationService.java) (Certification service), [`src/main/java/com/skillloop/recommendations/CourseRecommendationService.java`](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/recommendations/CourseRecommendationService.java) (Course recommendations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Frontend experience"]
  node_webapp["Web application<br/>[App.tsx]"]
  node_profiles["Sample profiles<br/>[mockProfiles.ts]"]
  node_gapui["Profile gap analysis<br/>[gapAnalyzer.ts]"]
  node_frontendpages["Product pages"]
  node_apiclient["API client<br/>[apiClient.ts]"]
end

subgraph group_identity["Identity and access"]
  node_authapi["Authentication API"]
  node_authservice["Authentication service<br/>[AuthService.java]"]
  node_users[("User accounts<br/>[User.java]")]
end

subgraph group_training["Training lifecycle"]
  node_trainees[("Trainee records<br/>[Trainee.java]")]
  node_courses[("Courses and batches<br/>[Course.java]")]
  node_enrollments["Enrollment service"]
  node_enrollmentapi["Enrollment API"]
  node_assessment[("Assessment records<br/>[Assessment.java]")]
  node_certification["Certification service"]
end

subgraph group_skills["Skills development"]
  node_skillsapi["Skills and job requirements"]
  node_aiextraction["AI skill extraction"]
  node_gapservice["Skill gap analysis"]
  node_recommendations["Course recommendations"]
end

subgraph group_employment["Employment intelligence"]
  node_outcomes["Employment outcomes"]
  node_followups["Longitudinal follow-ups"]
  node_verification["Employment verification"]
  node_analytics["Employment analytics"]
end

node_trainee(("Trainee or staff"))

node_trainee -->|"uses"| node_webapp
node_webapp -->|"loads"| node_profiles
node_webapp -->|"evaluates"| node_gapui
node_webapp -->|"renders"| node_frontendpages
node_webapp -.->|"uses services"| node_apiclient
node_trainee -->|"authenticates"| node_authapi
node_authapi -.->|"delegates"| node_authservice
node_authservice -->|"reads and saves"| node_users
node_trainee -->|"requests enrollment"| node_enrollmentapi
node_enrollmentapi -->|"delegates"| node_enrollments
node_enrollments -->|"loads trainee"| node_trainees
node_enrollments -->|"loads batch"| node_courses
node_enrollments -.->|"records progress"| node_assessment
node_trainee -->|"requests credential"| node_certification
node_certification -->|"checks scores"| node_assessment
node_certification -->|"checks eligibility"| node_enrollments
node_trainee -->|"submits skills data"| node_skillsapi
node_skillsapi -.->|"extracts skills"| node_aiextraction
node_gapservice -->|"uses extraction"| node_aiextraction
node_trainee -->|"requests gap analysis"| node_gapservice
node_trainee -->|"requests recommendations"| node_recommendations
node_recommendations -->|"reads analysis"| node_gapservice
node_recommendations -->|"loads course"| node_courses
node_trainee -->|"records outcome"| node_outcomes
node_outcomes -->|"schedules milestones"| node_followups
node_trainee -->|"responds to follow-up"| node_followups
node_trainee -->|"submits evidence"| node_verification
node_trainee -.->|"views outcomes"| node_analytics

click node_webapp "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/frontend/src/App.tsx"
click node_profiles "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/frontend/src/data/mockProfiles.ts"
click node_gapui "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/frontend/src/engine/gapAnalyzer.ts"
click node_frontendpages "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/tree/main/frontend/src/pages"
click node_apiclient "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/frontend/src/services/apiClient.ts"
click node_authapi "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/auth/AuthController.java"
click node_authservice "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/auth/AuthService.java"
click node_users "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/auth/User.java"
click node_trainees "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/Trainee.java"
click node_courses "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/Course.java"
click node_enrollments "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/EnrollmentService.java"
click node_enrollmentapi "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/EnrollmentController.java"
click node_assessment "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/Assessment.java"
click node_certification "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/CertificationService.java"
click node_skillsapi "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/tree/main/src/main/java/com/skillloop/skills"
click node_aiextraction "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/skills/AiSkillExtractionService.java"
click node_gapservice "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/skills/SkillGapAnalysisService.java"
click node_recommendations "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/recommendations/CourseRecommendationService.java"
click node_outcomes "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/employment/EmploymentOutcomeService.java"
click node_followups "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/employment/EmploymentFollowUpService.java"
click node_verification "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/employment/EmploymentVerificationService.java"
click node_analytics "https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/analytics/AnalyticsService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_webapp,node_profiles,node_gapui,node_frontendpages,node_apiclient toneBlue
class node_authapi,node_authservice,node_users toneAmber
class node_trainees,node_courses,node_enrollments,node_enrollmentapi,node_assessment,node_certification toneMint
class node_skillsapi,node_aiextraction,node_gapservice,node_recommendations toneRose
class node_outcomes,node_followups,node_verification,node_analytics,node_trainee toneIndigo
```

## Components

### Frontend experience

- [Web application](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Sample profiles](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/frontend/src/data/mockProfiles.ts): `frontend/src/data/mockProfiles.ts`
- [Profile gap analysis](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/frontend/src/engine/gapAnalyzer.ts): `frontend/src/engine/gapAnalyzer.ts`
- [Product pages](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/tree/main/frontend/src/pages): `frontend/src/pages`
- [API client](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/frontend/src/services/apiClient.ts): `frontend/src/services/apiClient.ts`

### Identity and access

- [Authentication API](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/auth/AuthController.java): `src/main/java/com/skillloop/auth/AuthController.java`
- [Authentication service](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/auth/AuthService.java): `src/main/java/com/skillloop/auth/AuthService.java`
- [User accounts](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/auth/User.java): `src/main/java/com/skillloop/auth/User.java`

### Training lifecycle

- [Trainee records](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/Trainee.java): `src/main/java/com/skillloop/training/Trainee.java`
- [Courses and batches](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/Course.java): `src/main/java/com/skillloop/training/Course.java`
- [Enrollment service](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/EnrollmentService.java): `src/main/java/com/skillloop/training/EnrollmentService.java`
- [Enrollment API](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/EnrollmentController.java): `src/main/java/com/skillloop/training/EnrollmentController.java`
- [Assessment records](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/Assessment.java): `src/main/java/com/skillloop/training/Assessment.java`
- [Certification service](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/training/CertificationService.java): `src/main/java/com/skillloop/training/CertificationService.java`

### Skills development

- [Skills and job requirements](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/tree/main/src/main/java/com/skillloop/skills): `src/main/java/com/skillloop/skills`
- [AI skill extraction](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/skills/AiSkillExtractionService.java): `src/main/java/com/skillloop/skills/AiSkillExtractionService.java`
- [Skill gap analysis](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/skills/SkillGapAnalysisService.java): `src/main/java/com/skillloop/skills/SkillGapAnalysisService.java`
- [Course recommendations](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/recommendations/CourseRecommendationService.java): `src/main/java/com/skillloop/recommendations/CourseRecommendationService.java`

### Employment intelligence

- [Employment outcomes](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/employment/EmploymentOutcomeService.java): `src/main/java/com/skillloop/employment/EmploymentOutcomeService.java`
- [Longitudinal follow-ups](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/employment/EmploymentFollowUpService.java): `src/main/java/com/skillloop/employment/EmploymentFollowUpService.java`
- [Employment verification](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/employment/EmploymentVerificationService.java): `src/main/java/com/skillloop/employment/EmploymentVerificationService.java`
- [Employment analytics](https://github.com/hemanth3112007-boop/pbl_b3_cse_3b/blob/main/src/main/java/com/skillloop/analytics/AnalyticsService.java): `src/main/java/com/skillloop/analytics/AnalyticsService.java`

### Other components

- **Trainee or staff**

## Connections

- Trainee or staff → Web application: uses
- Web application → Sample profiles: loads (evidence: `frontend/src/App.tsx`)
- Web application → Profile gap analysis: evaluates (evidence: `frontend/src/App.tsx`)
- Web application → Product pages: renders (evidence: `frontend/src/App.tsx`)
- Web application → API client: uses services
- Trainee or staff → Authentication API: authenticates (evidence: `README.md`)
- Authentication API → Authentication service: delegates (evidence: `src/main/java/com/skillloop/auth/AuthController.java`)
- Authentication service → User accounts: reads and saves (evidence: `src/main/java/com/skillloop/auth/AuthService.java`)
- Trainee or staff → Enrollment API: requests enrollment (evidence: `README.md`)
- Enrollment API → Enrollment service: delegates (evidence: `src/main/java/com/skillloop/training/EnrollmentController.java`)
- Enrollment service → Trainee records: loads trainee (evidence: `src/main/java/com/skillloop/training/EnrollmentService.java`)
- Enrollment service → Courses and batches: loads batch (evidence: `src/main/java/com/skillloop/training/EnrollmentService.java`)
- Enrollment service → Assessment records: records progress (evidence: `src/main/java/com/skillloop/training/EnrollmentService.java`)
- Trainee or staff → Certification service: requests credential (evidence: `README.md`)
- Certification service → Assessment records: checks scores (evidence: `src/main/java/com/skillloop/training/CertificationService.java`)
- Certification service → Enrollment service: checks eligibility (evidence: `src/main/java/com/skillloop/training/CertificationService.java`)
- Trainee or staff → Skills and job requirements: submits skills data (evidence: `README.md`)
- Skills and job requirements → AI skill extraction: extracts skills (evidence: `src/main/java/com/skillloop/skills/SkillGapAnalysisService.java`)
- Skill gap analysis → AI skill extraction: uses extraction (evidence: `src/main/java/com/skillloop/skills/SkillGapAnalysisService.java`)
- Trainee or staff → Skill gap analysis: requests gap analysis (evidence: `README.md`)
- Trainee or staff → Course recommendations: requests recommendations (evidence: `README.md`)
- Course recommendations → Skill gap analysis: reads analysis (evidence: `src/main/java/com/skillloop/recommendations/CourseRecommendationService.java`)
- Course recommendations → Courses and batches: loads course (evidence: `src/main/java/com/skillloop/recommendations/CourseRecommendationService.java`)
- Trainee or staff → Employment outcomes: records outcome (evidence: `README.md`)
- Employment outcomes → Longitudinal follow-ups: schedules milestones (evidence: `src/main/java/com/skillloop/employment/EmploymentOutcomeService.java`)
- Trainee or staff → Longitudinal follow-ups: responds to follow-up (evidence: `README.md`)
- Trainee or staff → Employment verification: submits evidence (evidence: `README.md`)
- Trainee or staff → Employment analytics: views outcomes
