# prohussain/careercompass-ai architecture

> Architecture diagram of the GitHub repository prohussain/careercompass-ai, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/prohussain/careercompass-ai
- Repository: https://github.com/prohussain/careercompass-ai

## Overview

Career Compass is an Android career-guidance app: users create or sign into an account, complete an education and experience profile, answer a career interview, and receive ranked Gemini recommendations with fit details and deeper analysis. The main activity hosts the app’s home, career, notification, and profile areas; profile data is backed by Firebase. The README also documents AI follow-up career chat. Sampled source shows the interview-to-results handoff and Gemini calls; ViewModel and backend implementation details were not sampled, so their internal wiring is left unspecified.

Main entry points: [`app/src/main/java/com/hashmac/careercompass/ui/main/activity/MainActivity.java`](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/main/activity/MainActivity.java) (Main navigation), [`app/src/main/java/com/hashmac/careercompass/ui/main/fragments/career/CareerFragment.java`](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/main/fragments/career/CareerFragment.java) (Career interview), [`app/src/main/java/com/hashmac/careercompass/ui/result/ResultActivity.java`](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/result/ResultActivity.java) (Career recommendations), [`app/src/main/java/com/hashmac/careercompass/ui/auth/fragments/complete_profile/CompleteProfileFragment.java`](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/auth/fragments/complete_profile/CompleteProfileFragment.java) (Profile completion)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App entry"]
  node_onboard["Onboarding"]
  node_main_activity["Main navigation<br/>[MainActivity.java]"]
end

subgraph group_account["Account and profile"]
  node_auth["Authentication flow"]
  node_login["Login<br/>[LoginFragment.java]"]
  node_register["Registration"]
  node_profile_setup["Profile completion"]
  node_profile_data["User profile<br/>[User.java]"]
end

subgraph group_guidance["Career guidance"]
  node_career_chat["Career interview"]
  node_chat_model["Chat messages<br/>[Chat.java]"]
  node_results["Career recommendations"]
  node_career_paths["Ranked career paths<br/>[CareerPaths.java]"]
  node_career_path["Career path details<br/>[CareerPath.java]"]
  node_prompt_builder["Prompt definitions<br/>[Constants.java]"]
end

subgraph group_main["Main app features"]
  node_home["Home<br/>[HomeFragment.java]"]
  node_notifications["Notifications"]
  node_notification_model["Notification data<br/>[Notification.java]"]
  node_profile_screen["Profile and logout"]
end

subgraph group_services["External services"]
  node_firebase_auth{{"Firebase Auth"}}
  node_firestore[("Firestore")]
  node_gemini{{"Google Gemini"}}
end

node_user(("User"))

node_user -->|"opens app"| node_onboard
node_onboard -->|"resumes session"| node_main_activity
node_onboard -->|"starts onboarding"| node_auth
node_user -->|"chooses account"| node_auth
node_auth -->|"hosts"| node_login
node_auth -->|"hosts"| node_register
node_login -->|"authenticates"| node_firebase_auth
node_register -->|"creates account"| node_firebase_auth
node_register -->|"continues to"| node_profile_setup
node_login -->|"routes incomplete profile"| node_profile_setup
node_profile_setup -->|"stores profile"| node_firestore
node_profile_setup -->|"forms profile"| node_profile_data
node_login -->|"opens after login"| node_main_activity
node_profile_setup -->|"opens after completion"| node_main_activity
node_main_activity -->|"hosts navigation"| node_home
node_main_activity -->|"hosts navigation"| node_career_chat
node_main_activity -->|"hosts navigation"| node_notifications
node_main_activity -->|"hosts navigation"| node_profile_screen
node_user -->|"answers interview"| node_career_chat
node_career_chat -->|"updates messages"| node_chat_model
node_career_chat -->|"reads profile"| node_profile_data
node_career_chat -->|"builds prompt"| node_prompt_builder
node_career_chat -->|"opens with prompt"| node_results
node_home -->|"requests analysis"| node_results
node_results -->|"generates recommendations"| node_gemini
node_results -->|"parses response"| node_career_paths
node_career_paths -->|"contains ranked paths"| node_career_path
node_results -->|"builds detail prompt"| node_prompt_builder
node_results -->|"requests path analysis"| node_gemini
node_profile_screen -->|"loads profile"| node_firestore
node_profile_screen -->|"logs out"| node_firebase_auth
node_notifications -->|"displays items"| node_notification_model

click node_onboard "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/onboard/activity/OnBoardActivity.java"
click node_auth "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/auth/activity/AuthenticationActivity.java"
click node_login "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/auth/fragments/login/LoginFragment.java"
click node_register "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/auth/fragments/register/RegisterFragment.java"
click node_profile_setup "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/auth/fragments/complete_profile/CompleteProfileFragment.java"
click node_profile_data "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/beans/user/User.java"
click node_main_activity "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/main/activity/MainActivity.java"
click node_home "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/main/fragments/home/HomeFragment.java"
click node_career_chat "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/main/fragments/career/CareerFragment.java"
click node_chat_model "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/beans/chat/Chat.java"
click node_results "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/result/ResultActivity.java"
click node_career_paths "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/beans/result/CareerPaths.java"
click node_career_path "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/beans/result/CareerPath.java"
click node_prompt_builder "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/utils/Constants.java"
click node_notifications "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/main/fragments/notifications/NotificationFragment.java"
click node_notification_model "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/beans/Notification.java"
click node_profile_screen "https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/main/fragments/profile/ProfileFragment.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_onboard,node_main_activity,node_user toneBlue
class node_auth,node_login,node_register,node_profile_setup,node_profile_data toneAmber
class node_career_chat,node_chat_model,node_results,node_career_paths,node_career_path,node_prompt_builder toneMint
class node_home,node_notifications,node_notification_model,node_profile_screen toneRose
class node_firebase_auth,node_firestore,node_gemini toneIndigo
```

## Components

### App entry

- [Onboarding](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/onboard/activity/OnBoardActivity.java): `app/src/main/java/com/hashmac/careercompass/ui/onboard/activity/OnBoardActivity.java`
- [Main navigation](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/main/activity/MainActivity.java): `app/src/main/java/com/hashmac/careercompass/ui/main/activity/MainActivity.java`

### Account and profile

- [Authentication flow](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/auth/activity/AuthenticationActivity.java): `app/src/main/java/com/hashmac/careercompass/ui/auth/activity/AuthenticationActivity.java`
- [Login](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/auth/fragments/login/LoginFragment.java): `app/src/main/java/com/hashmac/careercompass/ui/auth/fragments/login/LoginFragment.java`
- [Registration](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/auth/fragments/register/RegisterFragment.java): `app/src/main/java/com/hashmac/careercompass/ui/auth/fragments/register/RegisterFragment.java`
- [Profile completion](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/auth/fragments/complete_profile/CompleteProfileFragment.java): `app/src/main/java/com/hashmac/careercompass/ui/auth/fragments/complete_profile/CompleteProfileFragment.java`
- [User profile](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/beans/user/User.java): `app/src/main/java/com/hashmac/careercompass/beans/user/User.java`

### Career guidance

- [Career interview](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/main/fragments/career/CareerFragment.java): `app/src/main/java/com/hashmac/careercompass/ui/main/fragments/career/CareerFragment.java`
- [Chat messages](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/beans/chat/Chat.java): `app/src/main/java/com/hashmac/careercompass/beans/chat/Chat.java`
- [Career recommendations](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/result/ResultActivity.java): `app/src/main/java/com/hashmac/careercompass/ui/result/ResultActivity.java`
- [Ranked career paths](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/beans/result/CareerPaths.java): `app/src/main/java/com/hashmac/careercompass/beans/result/CareerPaths.java`
- [Career path details](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/beans/result/CareerPath.java): `app/src/main/java/com/hashmac/careercompass/beans/result/CareerPath.java`
- [Prompt definitions](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/utils/Constants.java): `app/src/main/java/com/hashmac/careercompass/utils/Constants.java`

### Main app features

- [Home](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/main/fragments/home/HomeFragment.java): `app/src/main/java/com/hashmac/careercompass/ui/main/fragments/home/HomeFragment.java`
- [Notifications](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/main/fragments/notifications/NotificationFragment.java): `app/src/main/java/com/hashmac/careercompass/ui/main/fragments/notifications/NotificationFragment.java`
- [Notification data](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/beans/Notification.java): `app/src/main/java/com/hashmac/careercompass/beans/Notification.java`
- [Profile and logout](https://github.com/prohussain/careercompass-ai/blob/master/app/src/main/java/com/hashmac/careercompass/ui/main/fragments/profile/ProfileFragment.java): `app/src/main/java/com/hashmac/careercompass/ui/main/fragments/profile/ProfileFragment.java`

### External services

- **Firebase Auth**
- **Firestore**
- **Google Gemini**

### Other components

- **User**

## Connections

- User → Onboarding: opens app
- Onboarding → Main navigation: resumes session
- Onboarding → Authentication flow: starts onboarding
- User → Authentication flow: chooses account
- Authentication flow → Login: hosts
- Authentication flow → Registration: hosts
- Login → Firebase Auth: authenticates
- Registration → Firebase Auth: creates account
- Registration → Profile completion: continues to
- Login → Profile completion: routes incomplete profile
- Profile completion → Firestore: stores profile
- Profile completion → User profile: forms profile
- Login → Main navigation: opens after login
- Profile completion → Main navigation: opens after completion
- Main navigation → Home: hosts navigation
- Main navigation → Career interview: hosts navigation
- Main navigation → Notifications: hosts navigation
- Main navigation → Profile and logout: hosts navigation
- User → Career interview: answers interview
- Career interview → Chat messages: updates messages
- Career interview → User profile: reads profile
- Career interview → Prompt definitions: builds prompt
- Career interview → Career recommendations: opens with prompt
- Home → Career recommendations: requests analysis
- Career recommendations → Google Gemini: generates recommendations
- Career recommendations → Ranked career paths: parses response
- Ranked career paths → Career path details: contains ranked paths
- Career recommendations → Prompt definitions: builds detail prompt
- Career recommendations → Google Gemini: requests path analysis
- Profile and logout → Firestore: loads profile
- Profile and logout → Firebase Auth: logs out
- Notifications → Notification data: displays items
