# kkorel/alongside-drp-project architecture

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

- Interactive diagram: https://gitdiagram.com/kkorel/alongside-drp-project
- Repository: https://github.com/kkorel/alongside-drp-project

## Overview

Alongside is a prototype web app for facilitated peer-support groups for bereaved young adults. Participants choose a demo identity, complete onboarding, check in on the dashboard, join a scheduled group chat, privately message a facilitator, and use quiet-space tools; facilitators manage groups and arrivals, run sessions, and review private messages and shared reflections. The frontend calls a Play JSON API backed by Slick and PostgreSQL. README capabilities guide the broader feature map; sampled source confirms several controller-to-repository paths, while some unsampled wiring is shown only where documented.

Main entry points: [`frontend/app/lib/api.ts`](https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/lib/api.ts) (API client), [`frontend/app/lib/identity.ts`](https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/lib/identity.ts) (Demo identity), [`frontend/app/onboarding/OnboardingSurvey.tsx`](https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/onboarding/OnboardingSurvey.tsx) (Onboarding survey), [`frontend/app/dashboard/page.tsx`](https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/dashboard/page.tsx) (Participant dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_participant["Participant experience"]
  node_identity["Demo identity<br/>[identity.ts]"]
  node_onboarding_ui["Onboarding survey"]
  node_dashboard_ui["Participant dashboard<br/>[page.tsx]"]
  node_room_ui["Group room<br/>[ChatRoom.tsx]"]
  node_quiet_ui["Quiet space"]
  node_reflection_state["Reflection state<br/>[useQuietSpace.ts]"]
end

subgraph group_facilitator["Facilitator workspace"]
  node_facilitator_ui["Facilitator workspace"]
end

subgraph group_api["Backend API"]
  node_frontend_api["API client<br/>[api.ts]"]
  node_onboarding_controller["Onboarding API"]
  node_dashboard_controller["Dashboard API"]
  node_peer_controller["Group session API"]
  node_facilitator_controller["Facilitator API"]
  node_fac_support_controller["Private message API"]
  node_quiet_controller["Quiet space API"]
end

subgraph group_data["Persistence"]
  node_onboarding_repo["Onboarding repository"]
  node_dashboard_repo["Dashboard repository"]
  node_peer_repo["Peer support repository"]
  node_facilitator_repo["Facilitator repository"]
  node_fac_support_repo["Private message repository"]
  node_quiet_repo["Quiet room repository"]
  node_database[("PostgreSQL")]
end

node_participant(("Participant"))
node_facilitator_actor(("Facilitator"))

node_participant -->|"chooses identity"| node_identity
node_identity -->|"opens survey"| node_onboarding_ui
node_identity -->|"opens dashboard"| node_dashboard_ui
node_participant -->|"joins group"| node_room_ui
node_participant -->|"uses tools"| node_quiet_ui
node_facilitator_actor -->|"manages groups"| node_facilitator_ui
node_onboarding_ui -->|"submits answers"| node_frontend_api
node_dashboard_ui -->|"loads and saves"| node_frontend_api
node_room_ui -->|"loads and sends"| node_frontend_api
node_facilitator_ui -->|"manages sessions"| node_frontend_api
node_quiet_ui -->|"edits reflections"| node_reflection_state
node_reflection_state -->|"loads and saves"| node_frontend_api
node_frontend_api -->|"calls API"| node_onboarding_controller
node_frontend_api -->|"calls API"| node_dashboard_controller
node_frontend_api -->|"calls API"| node_peer_controller
node_frontend_api -->|"calls API"| node_facilitator_controller
node_frontend_api -->|"calls API"| node_fac_support_controller
node_frontend_api -->|"calls API"| node_quiet_controller
node_onboarding_controller -->|"invokes"| node_onboarding_repo
node_dashboard_controller -->|"invokes"| node_dashboard_repo
node_peer_controller -->|"invokes"| node_peer_repo
node_facilitator_controller -->|"invokes"| node_facilitator_repo
node_fac_support_controller -->|"invokes"| node_fac_support_repo
node_quiet_controller -->|"invokes"| node_quiet_repo
node_onboarding_repo -->|"reads and writes"| node_database
node_dashboard_repo -->|"reads and writes"| node_database
node_peer_repo -->|"reads and writes"| node_database
node_facilitator_repo -->|"reads and writes"| node_database
node_fac_support_repo -->|"reads and writes"| node_database
node_quiet_repo -->|"reads and writes"| node_database

click node_identity "https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/lib/identity.ts"
click node_onboarding_ui "https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/onboarding/OnboardingSurvey.tsx"
click node_dashboard_ui "https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/dashboard/page.tsx"
click node_room_ui "https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/components/ChatRoom.tsx"
click node_quiet_ui "https://github.com/kkorel/alongside-drp-project/tree/main/frontend/app/(quiet)"
click node_reflection_state "https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/lib/useQuietSpace.ts"
click node_facilitator_ui "https://github.com/kkorel/alongside-drp-project/tree/main/frontend/app/facilitator"
click node_frontend_api "https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/lib/api.ts"
click node_onboarding_controller "https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/controllers/OnboardingController.scala"
click node_dashboard_controller "https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/controllers/DashboardController.scala"
click node_peer_controller "https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/controllers/PeerSupportController.scala"
click node_facilitator_controller "https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/controllers/FacilitatorController.scala"
click node_fac_support_controller "https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/controllers/FacilitatorSupportController.scala"
click node_quiet_controller "https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/controllers/QuietRoomController.scala"
click node_onboarding_repo "https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/repositories/Onboarding/OnboardingRepository.scala"
click node_dashboard_repo "https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/repositories/Dashboard/DashboardRepository.scala"
click node_peer_repo "https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/repositories/PeerSupport/PeerSupportRepository.scala"
click node_facilitator_repo "https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/repositories/Facilitator/FacilitatorRepository.scala"
click node_fac_support_repo "https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/repositories/FacilitatorSupport/FacilitatorSupportRepository.scala"
click node_quiet_repo "https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/repositories/QuietRoom/QuietRoomRepository.scala"

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_identity,node_onboarding_ui,node_dashboard_ui,node_room_ui,node_quiet_ui,node_reflection_state toneBlue
class node_facilitator_ui toneAmber
class node_frontend_api,node_onboarding_controller,node_dashboard_controller,node_peer_controller,node_facilitator_controller,node_fac_support_controller,node_quiet_controller toneMint
class node_onboarding_repo,node_dashboard_repo,node_peer_repo,node_facilitator_repo,node_fac_support_repo,node_quiet_repo,node_database toneRose
class node_participant,node_facilitator_actor toneIndigo
```

## Components

### Participant experience

- [Demo identity](https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/lib/identity.ts): `frontend/app/lib/identity.ts`
- [Onboarding survey](https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/onboarding/OnboardingSurvey.tsx): `frontend/app/onboarding/OnboardingSurvey.tsx`
- [Participant dashboard](https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/dashboard/page.tsx): `frontend/app/dashboard/page.tsx`
- [Group room](https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/components/ChatRoom.tsx): `frontend/app/components/ChatRoom.tsx`
- [Quiet space](https://github.com/kkorel/alongside-drp-project/tree/main/frontend/app/(quiet)): `frontend/app/(quiet)`
- [Reflection state](https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/lib/useQuietSpace.ts): `frontend/app/lib/useQuietSpace.ts`

### Facilitator workspace

- [Facilitator workspace](https://github.com/kkorel/alongside-drp-project/tree/main/frontend/app/facilitator): `frontend/app/facilitator`

### Backend API

- [API client](https://github.com/kkorel/alongside-drp-project/blob/main/frontend/app/lib/api.ts): `frontend/app/lib/api.ts`
- [Onboarding API](https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/controllers/OnboardingController.scala): `backend/app/controllers/OnboardingController.scala`
- [Dashboard API](https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/controllers/DashboardController.scala): `backend/app/controllers/DashboardController.scala`
- [Group session API](https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/controllers/PeerSupportController.scala): `backend/app/controllers/PeerSupportController.scala`
- [Facilitator API](https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/controllers/FacilitatorController.scala): `backend/app/controllers/FacilitatorController.scala`
- [Private message API](https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/controllers/FacilitatorSupportController.scala): `backend/app/controllers/FacilitatorSupportController.scala`
- [Quiet space API](https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/controllers/QuietRoomController.scala): `backend/app/controllers/QuietRoomController.scala`

### Persistence

- [Onboarding repository](https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/repositories/Onboarding/OnboardingRepository.scala): `backend/app/repositories/Onboarding/OnboardingRepository.scala`
- [Dashboard repository](https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/repositories/Dashboard/DashboardRepository.scala): `backend/app/repositories/Dashboard/DashboardRepository.scala`
- [Peer support repository](https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/repositories/PeerSupport/PeerSupportRepository.scala): `backend/app/repositories/PeerSupport/PeerSupportRepository.scala`
- [Facilitator repository](https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/repositories/Facilitator/FacilitatorRepository.scala): `backend/app/repositories/Facilitator/FacilitatorRepository.scala`
- [Private message repository](https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/repositories/FacilitatorSupport/FacilitatorSupportRepository.scala): `backend/app/repositories/FacilitatorSupport/FacilitatorSupportRepository.scala`
- [Quiet room repository](https://github.com/kkorel/alongside-drp-project/blob/main/backend/app/repositories/QuietRoom/QuietRoomRepository.scala): `backend/app/repositories/QuietRoom/QuietRoomRepository.scala`
- **PostgreSQL**

### Other components

- **Participant**
- **Facilitator**

## Connections

- Participant → Demo identity: chooses identity
- Demo identity → Onboarding survey: opens survey
- Demo identity → Participant dashboard: opens dashboard
- Participant → Group room: joins group
- Participant → Quiet space: uses tools
- Facilitator → Facilitator workspace: manages groups
- Onboarding survey → API client: submits answers
- Participant dashboard → API client: loads and saves
- Group room → API client: loads and sends
- Facilitator workspace → API client: manages sessions
- Quiet space → Reflection state: edits reflections
- Reflection state → API client: loads and saves
- API client → Onboarding API: calls API
- API client → Dashboard API: calls API
- API client → Group session API: calls API
- API client → Facilitator API: calls API
- API client → Private message API: calls API
- API client → Quiet space API: calls API
- Onboarding API → Onboarding repository: invokes
- Dashboard API → Dashboard repository: invokes
- Group session API → Peer support repository: invokes
- Facilitator API → Facilitator repository: invokes
- Private message API → Private message repository: invokes
- Quiet space API → Quiet room repository: invokes
- Onboarding repository → PostgreSQL: reads and writes
- Dashboard repository → PostgreSQL: reads and writes
- Peer support repository → PostgreSQL: reads and writes
- Facilitator repository → PostgreSQL: reads and writes
- Private message repository → PostgreSQL: reads and writes
- Quiet room repository → PostgreSQL: reads and writes
