# dddvdd/employcagayan-dev architecture

> Architecture diagram of the GitHub repository dddvdd/employcagayan-dev, 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/dddvdd/employcagayan-dev
- Repository: https://github.com/dddvdd/employcagayan-dev

## Overview

Quest is a PESO job-fair and recruitment platform. Its primary flow is account sign-in and role-gated routing, followed by applicants building profiles and engaging with events/jobs, employers receiving recruitment services, and PESO staff recording event-day outcomes. Admins manage programs and review employment intelligence; the repository also documents AI-assisted extraction/review and semantic recommendations. The graph combines sampled routing and service references with README capabilities; unsampled subsystem links are omitted where call ownership cannot be verified.

Main entry points: [`src/main.jsx`](https://github.com/dddvdd/employcagayan-dev/blob/main/src/main.jsx) (Application routes), [`src/pages/CalendarPage.jsx`](https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/CalendarPage.jsx) (Event calendar), [`src/pages/Admin/AdminReports.jsx`](https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/Admin/AdminReports.jsx) (PESO reports), [`src/contexts/AuthContext.jsx`](https://github.com/dddvdd/employcagayan-dev/blob/main/src/contexts/AuthContext.jsx) (Session and access)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and profiles"]
  node_app["Application routes<br/>[main.jsx]"]
  node_auth["Session and access<br/>[AuthContext.jsx]"]
  node_authcallback["Account callback"]
  node_profiles["Applicant profiles<br/>[RegisterPage.jsx]"]
  node_resume["Resume management<br/>[ResumeManager.jsx]"]
end

subgraph group_events["Events and PESO operations"]
  node_calendar["Event calendar<br/>[CalendarPage.jsx]"]
  node_eventservice["Event services<br/>[eventService.js]"]
  node_registrants["Registrant operations"]
  node_staffsearch["Staff search"]
  node_checkin["Check-in services<br/>[checkInService.js]"]
  node_adminreports["PESO reports<br/>[AdminReports.jsx]"]
  node_outcomes["Employment outcomes"]
end

subgraph group_recruitment["Recruitment intelligence"]
  node_employer["Employer services<br/>[employerService.js]"]
  node_matching["Candidate matching<br/>[matchingService.js]"]
  node_intelligence["Employment intelligence"]
  node_aireview["AI extraction and review<br/>[aiReviewService.js]"]
  node_extract["Employment extraction<br/>[handler.ts]"]
end

subgraph group_platform["Shared platform"]
  node_storage["Storage interface<br/>[storageService.js]"]
  node_supastorage["Supabase storage adapter<br/>[supabaseStorage.js]"]
  node_supabase[("Supabase backend")]
  node_theme["Theme control<br/>[ThemeToggle.jsx]"]
  node_dialog["Accessible dialogs"]
  node_pixel["Public visual component<br/>[pixel.jsx]"]
  node_roles["Role and status rules<br/>[roles.js]"]
end

node_visitor(("Visitors and users"))

node_visitor -->|"opens app"| node_app
node_app -->|"provides session"| node_auth
node_app -->|"routes applicants"| node_profiles
node_app -->|"routes events"| node_calendar
node_app -->|"routes staff"| node_staffsearch
node_app -->|"routes admins"| node_intelligence
node_auth -->|"resolves session"| node_authcallback
node_auth -->|"checks policy"| node_roles
node_resume -->|"saves resume reference"| node_registrants
node_resume -->|"uploads and downloads"| node_storage
node_storage -->|"dispatches storage calls"| node_supastorage
node_supastorage -->|"uses storage"| node_supabase
node_calendar -->|"loads events"| node_eventservice
node_calendar -->|"loads employer data"| node_employer
node_staffsearch -->|"searches registrants"| node_registrants
node_staffsearch -->|"uses check-in"| node_checkin
node_adminreports -->|"loads event data"| node_eventservice
node_adminreports -->|"loads registrants"| node_registrants
node_adminreports -->|"loads employment outcomes"| node_outcomes
node_visitor -.->|"uses recruitment portal"| node_employer
node_employer -.->|"receives recommendations"| node_matching
node_intelligence -.->|"uses recommendation data"| node_matching
node_visitor -.->|"uses AI review workflow"| node_aireview
node_aireview -.->|"requests extraction"| node_extract
node_app -->|"renders theme control"| node_theme
node_calendar -->|"uses dialogs"| node_dialog
node_calendar -->|"uses visual elements"| node_pixel

click node_app "https://github.com/dddvdd/employcagayan-dev/blob/main/src/main.jsx"
click node_auth "https://github.com/dddvdd/employcagayan-dev/blob/main/src/contexts/AuthContext.jsx"
click node_authcallback "https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/Public/AuthCallbackPage.jsx"
click node_profiles "https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/Public/RegisterPage.jsx"
click node_resume "https://github.com/dddvdd/employcagayan-dev/blob/main/src/components/jobseeker/ResumeManager.jsx"
click node_storage "https://github.com/dddvdd/employcagayan-dev/blob/main/src/storage/storageService.js"
click node_supastorage "https://github.com/dddvdd/employcagayan-dev/blob/main/src/storage/supabaseStorage.js"
click node_calendar "https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/CalendarPage.jsx"
click node_eventservice "https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/eventService.js"
click node_registrants "https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/registrantService.js"
click node_staffsearch "https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/Staff/ManualSearchPage.jsx"
click node_checkin "https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/checkInService.js"
click node_adminreports "https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/Admin/AdminReports.jsx"
click node_outcomes "https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/employmentService.js"
click node_employer "https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/employerService.js"
click node_matching "https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/matchingService.js"
click node_intelligence "https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/Admin/EmploymentIntelligencePage.jsx"
click node_aireview "https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/aiReviewService.js"
click node_extract "https://github.com/dddvdd/employcagayan-dev/blob/main/supabase/functions/extract-employment/handler.ts"
click node_theme "https://github.com/dddvdd/employcagayan-dev/blob/main/src/components/ThemeToggle.jsx"
click node_dialog "https://github.com/dddvdd/employcagayan-dev/blob/main/src/components/ui/AccessibleDialog.jsx"
click node_pixel "https://github.com/dddvdd/employcagayan-dev/blob/main/src/components/public/pixel.jsx"
click node_roles "https://github.com/dddvdd/employcagayan-dev/blob/main/src/domain/roles.js"

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_app,node_auth,node_authcallback,node_profiles,node_resume,node_visitor toneBlue
class node_calendar,node_eventservice,node_registrants,node_staffsearch,node_checkin,node_adminreports,node_outcomes toneAmber
class node_employer,node_matching,node_intelligence,node_aireview,node_extract toneMint
class node_storage,node_supastorage,node_supabase,node_theme,node_dialog,node_pixel,node_roles toneRose
```

## Components

### Access and profiles

- [Application routes](https://github.com/dddvdd/employcagayan-dev/blob/main/src/main.jsx): `src/main.jsx`
- [Session and access](https://github.com/dddvdd/employcagayan-dev/blob/main/src/contexts/AuthContext.jsx): `src/contexts/AuthContext.jsx`
- [Account callback](https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/Public/AuthCallbackPage.jsx): `src/pages/Public/AuthCallbackPage.jsx`
- [Applicant profiles](https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/Public/RegisterPage.jsx): `src/pages/Public/RegisterPage.jsx`
- [Resume management](https://github.com/dddvdd/employcagayan-dev/blob/main/src/components/jobseeker/ResumeManager.jsx): `src/components/jobseeker/ResumeManager.jsx`

### Events and PESO operations

- [Event calendar](https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/CalendarPage.jsx): `src/pages/CalendarPage.jsx`
- [Event services](https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/eventService.js): `src/services/eventService.js`
- [Registrant operations](https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/registrantService.js): `src/services/registrantService.js`
- [Staff search](https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/Staff/ManualSearchPage.jsx): `src/pages/Staff/ManualSearchPage.jsx`
- [Check-in services](https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/checkInService.js): `src/services/checkInService.js`
- [PESO reports](https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/Admin/AdminReports.jsx): `src/pages/Admin/AdminReports.jsx`
- [Employment outcomes](https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/employmentService.js): `src/services/employmentService.js`

### Recruitment intelligence

- [Employer services](https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/employerService.js): `src/services/employerService.js`
- [Candidate matching](https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/matchingService.js): `src/services/matchingService.js`
- [Employment intelligence](https://github.com/dddvdd/employcagayan-dev/blob/main/src/pages/Admin/EmploymentIntelligencePage.jsx): `src/pages/Admin/EmploymentIntelligencePage.jsx`
- [AI extraction and review](https://github.com/dddvdd/employcagayan-dev/blob/main/src/services/aiReviewService.js): `src/services/aiReviewService.js`
- [Employment extraction](https://github.com/dddvdd/employcagayan-dev/blob/main/supabase/functions/extract-employment/handler.ts): `supabase/functions/extract-employment/handler.ts`

### Shared platform

- [Storage interface](https://github.com/dddvdd/employcagayan-dev/blob/main/src/storage/storageService.js): `src/storage/storageService.js`
- [Supabase storage adapter](https://github.com/dddvdd/employcagayan-dev/blob/main/src/storage/supabaseStorage.js): `src/storage/supabaseStorage.js`
- **Supabase backend**
- [Theme control](https://github.com/dddvdd/employcagayan-dev/blob/main/src/components/ThemeToggle.jsx): `src/components/ThemeToggle.jsx`
- [Accessible dialogs](https://github.com/dddvdd/employcagayan-dev/blob/main/src/components/ui/AccessibleDialog.jsx): `src/components/ui/AccessibleDialog.jsx`
- [Public visual component](https://github.com/dddvdd/employcagayan-dev/blob/main/src/components/public/pixel.jsx): `src/components/public/pixel.jsx`
- [Role and status rules](https://github.com/dddvdd/employcagayan-dev/blob/main/src/domain/roles.js): `src/domain/roles.js`

### Other components

- **Visitors and users**

## Connections

- Visitors and users → Application routes: opens app (evidence: `src/main.jsx`)
- Application routes → Session and access: provides session (evidence: `src/main.jsx`)
- Application routes → Applicant profiles: routes applicants (evidence: `src/main.jsx`)
- Application routes → Event calendar: routes events (evidence: `src/main.jsx`)
- Application routes → Staff search: routes staff (evidence: `src/main.jsx`)
- Application routes → Employment intelligence: routes admins (evidence: `src/main.jsx`)
- Session and access → Account callback: resolves session (evidence: `src/pages/Public/AuthCallbackPage.jsx`)
- Session and access → Role and status rules: checks policy (evidence: `src/contexts/AuthContext.jsx`)
- Resume management → Registrant operations: saves resume reference (evidence: `src/components/jobseeker/ResumeManager.jsx`)
- Resume management → Storage interface: uploads and downloads (evidence: `src/components/jobseeker/ResumeManager.jsx`)
- Storage interface → Supabase storage adapter: dispatches storage calls (evidence: `src/storage/storageService.js`)
- Supabase storage adapter → Supabase backend: uses storage (evidence: `src/storage/supabaseStorage.js`)
- Event calendar → Event services: loads events (evidence: `src/pages/CalendarPage.jsx`)
- Event calendar → Employer services: loads employer data (evidence: `src/pages/CalendarPage.jsx`)
- Staff search → Registrant operations: searches registrants (evidence: `src/pages/Staff/ManualSearchPage.jsx`)
- Staff search → Check-in services: uses check-in (evidence: `src/pages/Staff/ManualSearchPage.jsx`)
- PESO reports → Event services: loads event data (evidence: `src/pages/Admin/AdminReports.jsx`)
- PESO reports → Registrant operations: loads registrants (evidence: `src/pages/Admin/AdminReports.jsx`)
- PESO reports → Employment outcomes: loads employment outcomes (evidence: `src/pages/Admin/AdminReports.jsx`)
- Visitors and users → Employer services: uses recruitment portal (evidence: `README.md`)
- Employer services → Candidate matching: receives recommendations (evidence: `README.md`)
- Employment intelligence → Candidate matching: uses recommendation data (evidence: `README.md`)
- Visitors and users → AI extraction and review: uses AI review workflow (evidence: `README.md`)
- AI extraction and review → Employment extraction: requests extraction
- Application routes → Theme control: renders theme control
- Event calendar → Accessible dialogs: uses dialogs (evidence: `src/pages/CalendarPage.jsx`)
- Event calendar → Public visual component: uses visual elements (evidence: `src/pages/CalendarPage.jsx`)
