# justuju-in/feedback-process architecture

> Architecture diagram of the GitHub repository justuju-in/feedback-process, 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/justuju-in/feedback-process
- Repository: https://github.com/justuju-in/feedback-process

## Overview

Feedback Process is a team application for requesting, giving, receiving, and tracking feedback. Its main domain flow covers account creation and verification, request creation, feedback submission, receiver acknowledgement and closure, then history and notifications. Requests also support schedules, due dates, drafts, discussion, follow-ups, attachments, privacy, and moderation; templates, reports, and analytics are distinct capabilities. Backend routes and controllers dispatch to services, which use MySQL and optional email/Mattermost integrations. Frontend-to-API wiring and several unsampled subsystem internals are not shown because the available source excerpts do not establish those calls.

Main entry points: [`backend/src/db/connection.js`](https://github.com/justuju-in/feedback-process/blob/main/backend/src/db/connection.js) (MySQL), [`backend/src/server.js`](https://github.com/justuju-in/feedback-process/blob/main/backend/src/server.js) (API server), [`backend/src/services/feedbackRequestService.js`](https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/feedbackRequestService.js) (Request service), [`backend/src/controllers/feedbackRequestController.js`](https://github.com/justuju-in/feedback-process/blob/main/backend/src/controllers/feedbackRequestController.js) (Request controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_webapp["Feedback app<br/>[page.jsx]"]
  node_account_pages["Account pages<br/>[page.jsx]"]
  node_registration["Registration<br/>[page.jsx]"]
  node_verification["Email verification<br/>[page.jsx]"]
end

subgraph group_identity["Accounts"]
  node_auth_routes["Auth routes<br/>[authRoutes.js]"]
  node_auth_controller["Auth controller<br/>[authController.js]"]
  node_auth_service["Auth service<br/>[authService.js]"]
  node_users["User management<br/>[userService.js]"]
end

subgraph group_feedback["Feedback workflow"]
  node_feedback_routes["Request routes"]
  node_feedback_controller["Request controller"]
  node_request_service["Request service"]
  node_answer_service["Answer service"]
  node_schedule_service["Schedule service"]
  node_reminder_job["Reminder job"]
  node_templates["Templates<br/>[templateService.js]"]
end

subgraph group_oversight["Insights and oversight"]
  node_reports["Feedback reports"]
  node_analytics["Feedback analytics"]
end

subgraph group_platform["Backend platform"]
  node_email["Email service<br/>[email.js]"]
  node_notifications["Notifications"]
  node_notification_routes["Notification routes"]
  node_mysql[("MySQL<br/>[connection.js]")]
  node_server["API server<br/>[server.js]"]
end

node_team(("Team member"))
node_mattermost["Mattermost<br/>[mattermost.js]"]

node_team -->|"uses"| node_webapp
node_team -->|"signs in"| node_account_pages
node_team -->|"registers"| node_registration
node_team -->|"verifies email"| node_verification
node_server -->|"mounts"| node_auth_routes
node_server -->|"mounts"| node_feedback_routes
node_server -->|"mounts"| node_notification_routes
node_auth_routes -->|"dispatches"| node_auth_controller
node_auth_controller -->|"calls"| node_auth_service
node_auth_service -->|"reads/writes"| node_mysql
node_auth_service -->|"sends verification/reset"| node_email
node_feedback_routes -->|"dispatches"| node_feedback_controller
node_feedback_controller -->|"calls"| node_request_service
node_feedback_controller -->|"calls"| node_answer_service
node_feedback_controller -->|"calls"| node_schedule_service
node_request_service -->|"reads/writes"| node_mysql
node_answer_service -->|"reads/writes"| node_mysql
node_schedule_service -->|"reads/writes"| node_mysql
node_request_service -->|"creates"| node_notifications
node_request_service -->|"sends feedback email"| node_email
node_request_service -->|"sends alerts"| node_mattermost
node_reminder_job -->|"requests reminders"| node_request_service
node_feedback_controller -->|"uses templates"| node_templates
node_notification_routes -->|"dispatches"| node_notifications
node_notifications -->|"reads/writes"| node_mysql
node_server -->|"mounts report routes"| node_reports
node_server -->|"mounts analytics routes"| node_analytics
node_server -->|"mounts user routes"| node_users
node_reports -->|"reads/writes"| node_mysql
node_analytics -->|"reads"| node_mysql
node_users -->|"reads/writes"| node_mysql

click node_webapp "https://github.com/justuju-in/feedback-process/blob/main/app/page.jsx"
click node_account_pages "https://github.com/justuju-in/feedback-process/blob/main/app/login/page.jsx"
click node_registration "https://github.com/justuju-in/feedback-process/blob/main/app/register/page.jsx"
click node_verification "https://github.com/justuju-in/feedback-process/blob/main/app/verify-email/page.jsx"
click node_auth_routes "https://github.com/justuju-in/feedback-process/blob/main/backend/src/routes/authRoutes.js"
click node_auth_controller "https://github.com/justuju-in/feedback-process/blob/main/backend/src/controllers/authController.js"
click node_auth_service "https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/authService.js"
click node_email "https://github.com/justuju-in/feedback-process/blob/main/backend/src/integrations/email.js"
click node_feedback_routes "https://github.com/justuju-in/feedback-process/blob/main/backend/src/routes/feedbackRequestRoutes.js"
click node_feedback_controller "https://github.com/justuju-in/feedback-process/blob/main/backend/src/controllers/feedbackRequestController.js"
click node_request_service "https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/feedbackRequestService.js"
click node_answer_service "https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/feedbackAnswerService.js"
click node_schedule_service "https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/feedbackScheduleService.js"
click node_reminder_job "https://github.com/justuju-in/feedback-process/blob/main/backend/src/jobs/feedbackReminderJob.js"
click node_templates "https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/templateService.js"
click node_notifications "https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/notificationService.js"
click node_notification_routes "https://github.com/justuju-in/feedback-process/blob/main/backend/src/routes/notificationRoutes.js"
click node_mattermost "https://github.com/justuju-in/feedback-process/blob/main/backend/src/integrations/mattermost.js"
click node_reports "https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/feedbackReportService.js"
click node_analytics "https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/feedbackAnalyticsService.js"
click node_users "https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/userService.js"
click node_mysql "https://github.com/justuju-in/feedback-process/blob/main/backend/src/db/connection.js"
click node_server "https://github.com/justuju-in/feedback-process/blob/main/backend/src/server.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_webapp,node_account_pages,node_registration,node_verification toneBlue
class node_auth_routes,node_auth_controller,node_auth_service,node_users toneAmber
class node_feedback_routes,node_feedback_controller,node_request_service,node_answer_service,node_schedule_service,node_reminder_job,node_templates toneMint
class node_reports,node_analytics toneRose
class node_email,node_notifications,node_notification_routes,node_mysql,node_server,node_team toneIndigo
class node_mattermost toneTeal
```

## Components

### Web application

- [Feedback app](https://github.com/justuju-in/feedback-process/blob/main/app/page.jsx): `app/page.jsx`
- [Account pages](https://github.com/justuju-in/feedback-process/blob/main/app/login/page.jsx): `app/login/page.jsx`
- [Registration](https://github.com/justuju-in/feedback-process/blob/main/app/register/page.jsx): `app/register/page.jsx`
- [Email verification](https://github.com/justuju-in/feedback-process/blob/main/app/verify-email/page.jsx): `app/verify-email/page.jsx`

### Accounts

- [Auth routes](https://github.com/justuju-in/feedback-process/blob/main/backend/src/routes/authRoutes.js): `backend/src/routes/authRoutes.js`
- [Auth controller](https://github.com/justuju-in/feedback-process/blob/main/backend/src/controllers/authController.js): `backend/src/controllers/authController.js`
- [Auth service](https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/authService.js): `backend/src/services/authService.js`
- [User management](https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/userService.js): `backend/src/services/userService.js`

### Feedback workflow

- [Request routes](https://github.com/justuju-in/feedback-process/blob/main/backend/src/routes/feedbackRequestRoutes.js): `backend/src/routes/feedbackRequestRoutes.js`
- [Request controller](https://github.com/justuju-in/feedback-process/blob/main/backend/src/controllers/feedbackRequestController.js): `backend/src/controllers/feedbackRequestController.js`
- [Request service](https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/feedbackRequestService.js): `backend/src/services/feedbackRequestService.js`
- [Answer service](https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/feedbackAnswerService.js): `backend/src/services/feedbackAnswerService.js`
- [Schedule service](https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/feedbackScheduleService.js): `backend/src/services/feedbackScheduleService.js`
- [Reminder job](https://github.com/justuju-in/feedback-process/blob/main/backend/src/jobs/feedbackReminderJob.js): `backend/src/jobs/feedbackReminderJob.js`
- [Templates](https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/templateService.js): `backend/src/services/templateService.js`

### Insights and oversight

- [Feedback reports](https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/feedbackReportService.js): `backend/src/services/feedbackReportService.js`
- [Feedback analytics](https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/feedbackAnalyticsService.js): `backend/src/services/feedbackAnalyticsService.js`

### Backend platform

- [Email service](https://github.com/justuju-in/feedback-process/blob/main/backend/src/integrations/email.js): `backend/src/integrations/email.js`
- [Notifications](https://github.com/justuju-in/feedback-process/blob/main/backend/src/services/notificationService.js): `backend/src/services/notificationService.js`
- [Notification routes](https://github.com/justuju-in/feedback-process/blob/main/backend/src/routes/notificationRoutes.js): `backend/src/routes/notificationRoutes.js`
- [MySQL](https://github.com/justuju-in/feedback-process/blob/main/backend/src/db/connection.js): `backend/src/db/connection.js`
- [API server](https://github.com/justuju-in/feedback-process/blob/main/backend/src/server.js): `backend/src/server.js`

### Other components

- **Team member**
- [Mattermost](https://github.com/justuju-in/feedback-process/blob/main/backend/src/integrations/mattermost.js): `backend/src/integrations/mattermost.js`

## Connections

- Team member → Feedback app: uses
- Team member → Account pages: signs in
- Team member → Registration: registers
- Team member → Email verification: verifies email
- API server → Auth routes: mounts
- API server → Request routes: mounts
- API server → Notification routes: mounts
- Auth routes → Auth controller: dispatches
- Auth controller → Auth service: calls
- Auth service → MySQL: reads/writes
- Auth service → Email service: sends verification/reset
- Request routes → Request controller: dispatches
- Request controller → Request service: calls
- Request controller → Answer service: calls
- Request controller → Schedule service: calls
- Request service → MySQL: reads/writes
- Answer service → MySQL: reads/writes
- Schedule service → MySQL: reads/writes
- Request service → Notifications: creates
- Request service → Email service: sends feedback email
- Request service → Mattermost: sends alerts
- Reminder job → Request service: requests reminders
- Request controller → Templates: uses templates
- Notification routes → Notifications: dispatches
- Notifications → MySQL: reads/writes
- API server → Feedback reports: mounts report routes
- API server → Feedback analytics: mounts analytics routes
- API server → User management: mounts user routes
- Feedback reports → MySQL: reads/writes
- Feedback analytics → MySQL: reads
- User management → MySQL: reads/writes
