# boltgriffin/wipms architecture

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

- Interactive diagram: https://gitdiagram.com/boltgriffin/wipms
- Repository: https://github.com/boltgriffin/wipms

## Overview

This is a role-based work-integrated learning / internship management web app for administrators, teachers, students, and supervisors. Users sign in and enter role-specific dashboards to manage student placements and records, record or review attendance and GPS scans, and handle journals, evaluations, conduct, and completion reporting. Administrators also manage imports, deployments, accounts, and system operations. The graph follows the evidenced app routing, authentication, API, and offline paths; several domain subsystems are represented from the file tree and route references, not sampled implementation details.

Main entry points: [`src/App.jsx`](https://github.com/boltgriffin/wipms/blob/master/src/App.jsx) (Role-based app), [`src/pages/ImportWizard.jsx`](https://github.com/boltgriffin/wipms/blob/master/src/pages/ImportWizard.jsx) (Admin operations), [`src/store/authStore.js`](https://github.com/boltgriffin/wipms/blob/master/src/store/authStore.js) (Session state), [`src/hooks/useOffline.js`](https://github.com/boltgriffin/wipms/blob/master/src/hooks/useOffline.js) (Connectivity and sync)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application and access"]
  node_app["Role-based app<br/>[App.jsx]"]
  node_auth["Session state<br/>[authStore.js]"]
  node_authsvc["Authentication API<br/>[authService.js]"]
  node_api["HTTP client<br/>[api.js]"]
  node_shell["Role navigation<br/>[AppShell.jsx]"]
  node_tables["Data tables<br/>[datatable.jsx]"]
end

subgraph group_operations["Placements and administration"]
  node_admin["Admin operations<br/>[ImportWizard.jsx]"]
  node_deployment["Placement deployment<br/>[deployService.js]"]
  node_system["System controls<br/>[systemService.js]"]
end

subgraph group_records["Student records"]
  node_attendance["Attendance and DTR<br/>[TeacherDtr.jsx]"]
  node_gps["GPS review<br/>[TeacherGps.jsx]"]
  node_journals["Journals and evaluations"]
  node_conduct["Conduct records<br/>[ConductManage.jsx]"]
  node_completion["Completion reports<br/>[useCompletion.js]"]
  node_gpssvc["GPS service<br/>[gpsService.js]"]
  node_reports["Shared report views<br/>[ReportViews.jsx]"]
end

subgraph group_offline["Offline support"]
  node_offlinehost["Offline app host<br/>[PwaHost.jsx]"]
  node_offlinehook["Connectivity and sync<br/>[useOffline.js]"]
  node_queue[("Pending scan queue<br/>[queue.js]")]
  node_localdb[("Local storage<br/>[db.js]")]
  node_cache[("Offline cache<br/>[cache.js]")]
end

node_user(("App user"))

node_user -->|"uses"| node_app
node_app -->|"hydrates session"| node_auth
node_app -->|"routes through"| node_shell
node_app -->|"routes to"| node_admin
node_app -->|"routes to"| node_attendance
node_app -->|"routes to"| node_gps
node_app -->|"routes to"| node_journals
node_app -->|"routes to"| node_conduct
node_app -->|"uses"| node_reports
node_admin -->|"uses"| node_tables
node_auth -->|"calls"| node_authsvc
node_authsvc -->|"sends requests"| node_api
node_admin -.->|"manages placements"| node_deployment
node_admin -.->|"manages system controls"| node_system
node_offlinehost -->|"starts offline support"| node_offlinehook
node_offlinehook -->|"syncs scans"| node_queue
node_offlinehook -->|"uploads scans"| node_gpssvc
node_queue -->|"stores queue"| node_localdb
node_auth -->|"stores profile"| node_cache
node_attendance -.->|"uses"| node_reports
node_completion -->|"uses"| node_reports

click node_app "https://github.com/boltgriffin/wipms/blob/master/src/App.jsx"
click node_auth "https://github.com/boltgriffin/wipms/blob/master/src/store/authStore.js"
click node_authsvc "https://github.com/boltgriffin/wipms/blob/master/src/services/authService.js"
click node_api "https://github.com/boltgriffin/wipms/blob/master/src/services/api.js"
click node_shell "https://github.com/boltgriffin/wipms/blob/master/src/components/AppShell.jsx"
click node_admin "https://github.com/boltgriffin/wipms/blob/master/src/pages/ImportWizard.jsx"
click node_deployment "https://github.com/boltgriffin/wipms/blob/master/src/services/deployService.js"
click node_system "https://github.com/boltgriffin/wipms/blob/master/src/services/systemService.js"
click node_attendance "https://github.com/boltgriffin/wipms/blob/master/src/pages/TeacherDtr.jsx"
click node_gps "https://github.com/boltgriffin/wipms/blob/master/src/pages/TeacherGps.jsx"
click node_journals "https://github.com/boltgriffin/wipms/blob/master/src/pages/TeacherJournals.jsx"
click node_conduct "https://github.com/boltgriffin/wipms/blob/master/src/pages/ConductManage.jsx"
click node_completion "https://github.com/boltgriffin/wipms/blob/master/src/hooks/useCompletion.js"
click node_offlinehost "https://github.com/boltgriffin/wipms/blob/master/src/components/PwaHost.jsx"
click node_offlinehook "https://github.com/boltgriffin/wipms/blob/master/src/hooks/useOffline.js"
click node_queue "https://github.com/boltgriffin/wipms/blob/master/src/offline/queue.js"
click node_localdb "https://github.com/boltgriffin/wipms/blob/master/src/offline/db.js"
click node_cache "https://github.com/boltgriffin/wipms/blob/master/src/offline/cache.js"
click node_gpssvc "https://github.com/boltgriffin/wipms/blob/master/src/services/gpsService.js"
click node_reports "https://github.com/boltgriffin/wipms/blob/master/src/components/ReportViews.jsx"
click node_tables "https://github.com/boltgriffin/wipms/blob/master/src/components/datatable.jsx"

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_authsvc,node_api,node_shell,node_tables,node_user toneBlue
class node_admin,node_deployment,node_system toneAmber
class node_attendance,node_gps,node_journals,node_conduct,node_completion,node_gpssvc,node_reports toneMint
class node_offlinehost,node_offlinehook,node_queue,node_localdb,node_cache toneRose
```

## Components

### Application and access

- [Role-based app](https://github.com/boltgriffin/wipms/blob/master/src/App.jsx): `src/App.jsx`
- [Session state](https://github.com/boltgriffin/wipms/blob/master/src/store/authStore.js): `src/store/authStore.js`
- [Authentication API](https://github.com/boltgriffin/wipms/blob/master/src/services/authService.js): `src/services/authService.js`
- [HTTP client](https://github.com/boltgriffin/wipms/blob/master/src/services/api.js): `src/services/api.js`
- [Role navigation](https://github.com/boltgriffin/wipms/blob/master/src/components/AppShell.jsx): `src/components/AppShell.jsx`
- [Data tables](https://github.com/boltgriffin/wipms/blob/master/src/components/datatable.jsx): `src/components/datatable.jsx`

### Placements and administration

- [Admin operations](https://github.com/boltgriffin/wipms/blob/master/src/pages/ImportWizard.jsx): `src/pages/ImportWizard.jsx`
- [Placement deployment](https://github.com/boltgriffin/wipms/blob/master/src/services/deployService.js): `src/services/deployService.js`
- [System controls](https://github.com/boltgriffin/wipms/blob/master/src/services/systemService.js): `src/services/systemService.js`

### Student records

- [Attendance and DTR](https://github.com/boltgriffin/wipms/blob/master/src/pages/TeacherDtr.jsx): `src/pages/TeacherDtr.jsx`
- [GPS review](https://github.com/boltgriffin/wipms/blob/master/src/pages/TeacherGps.jsx): `src/pages/TeacherGps.jsx`
- [Journals and evaluations](https://github.com/boltgriffin/wipms/blob/master/src/pages/TeacherJournals.jsx): `src/pages/TeacherJournals.jsx`
- [Conduct records](https://github.com/boltgriffin/wipms/blob/master/src/pages/ConductManage.jsx): `src/pages/ConductManage.jsx`
- [Completion reports](https://github.com/boltgriffin/wipms/blob/master/src/hooks/useCompletion.js): `src/hooks/useCompletion.js`
- [GPS service](https://github.com/boltgriffin/wipms/blob/master/src/services/gpsService.js): `src/services/gpsService.js`
- [Shared report views](https://github.com/boltgriffin/wipms/blob/master/src/components/ReportViews.jsx): `src/components/ReportViews.jsx`

### Offline support

- [Offline app host](https://github.com/boltgriffin/wipms/blob/master/src/components/PwaHost.jsx): `src/components/PwaHost.jsx`
- [Connectivity and sync](https://github.com/boltgriffin/wipms/blob/master/src/hooks/useOffline.js): `src/hooks/useOffline.js`
- [Pending scan queue](https://github.com/boltgriffin/wipms/blob/master/src/offline/queue.js): `src/offline/queue.js`
- [Local storage](https://github.com/boltgriffin/wipms/blob/master/src/offline/db.js): `src/offline/db.js`
- [Offline cache](https://github.com/boltgriffin/wipms/blob/master/src/offline/cache.js): `src/offline/cache.js`

### Other components

- **App user**

## Connections

- App user → Role-based app: uses (evidence: `src/App.jsx`)
- Role-based app → Session state: hydrates session (evidence: `src/App.jsx`)
- Role-based app → Role navigation: routes through (evidence: `src/App.jsx`)
- Role-based app → Admin operations: routes to (evidence: `src/App.jsx`)
- Role-based app → Attendance and DTR: routes to (evidence: `src/App.jsx`)
- Role-based app → GPS review: routes to (evidence: `src/App.jsx`)
- Role-based app → Journals and evaluations: routes to (evidence: `src/App.jsx`)
- Role-based app → Conduct records: routes to (evidence: `src/App.jsx`)
- Role-based app → Shared report views: uses
- Admin operations → Data tables: uses (evidence: `src/pages/ImportWizard.jsx`)
- Session state → Authentication API: calls (evidence: `src/store/authStore.js`)
- Authentication API → HTTP client: sends requests (evidence: `src/services/authService.js`)
- Admin operations → Placement deployment: manages placements
- Admin operations → System controls: manages system controls
- Offline app host → Connectivity and sync: starts offline support (evidence: `src/components/PwaHost.jsx`)
- Connectivity and sync → Pending scan queue: syncs scans (evidence: `src/hooks/useOffline.js`)
- Connectivity and sync → GPS service: uploads scans (evidence: `src/hooks/useOffline.js`)
- Pending scan queue → Local storage: stores queue (evidence: `src/offline/queue.js`)
- Session state → Offline cache: stores profile (evidence: `src/store/authStore.js`)
- Attendance and DTR → Shared report views: uses
- Completion reports → Shared report views: uses (evidence: `src/pages/CompletionManage.jsx`)
