# comanalex33/quickfix architecture

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

- Interactive diagram: https://gitdiagram.com/comanalex33/quickfix
- Repository: https://github.com/comanalex33/quickfix

## Overview

QuickFix connects an Android app for students and handymen and a React administration app to a .NET API. The main workflow is submitting a repair request, making it available to handymen, then updating its status and visit time; the mobile app also retrieves user, building, and category data. Administrators manage users and buildings through the web app. The graph reflects documented capabilities and sampled controller/API behavior; web-page API calls and some server notification wiring were not sampled, so those links are limited to documented interactions.

Main entry points: [`Mobile/app/src/main/java/app/quic/mobile/services/ApiService.kt`](https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/services/ApiService.kt) (Mobile API contract), [`Mobile/app/src/main/java/app/quic/mobile/activities/MainActivity.kt`](https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/activities/MainActivity.kt) (Android app), [`Web/web/src/App.js`](https://github.com/comanalex33/quickfix/blob/main/Web/web/src/App.js) (Admin web app), [`Server/Server/Models/AppDbContext.cs`](https://github.com/comanalex33/quickfix/blob/main/Server/Server/Models/AppDbContext.cs) (Application database)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Client applications"]
  node_mobile["Android app<br/>[MainActivity.kt]"]
  node_login["Mobile login<br/>[LoginActivity.kt]"]
  node_requestform["Request form"]
  node_requestviews["Request views"]
  node_webapp["Admin web app<br/>[App.js]"]
  node_webusers["User management<br/>[Users.js]"]
  node_webbuildings["Building management<br/>[Buildings.js]"]
  node_webcategories["Category management<br/>[Category.js]"]
  node_mobileapi["Mobile API contract<br/>[ApiService.kt]"]
  node_messaging["Mobile notification receiver"]
end

subgraph group_api["Server API"]
  node_auth["Authentication<br/>[AuthController.cs]"]
  node_users["User operations<br/>[UserController.cs]"]
  node_requests["Request lifecycle"]
  node_buildings["Building operations"]
  node_categories["Category operations"]
  node_notifications["Notification API"]
end

subgraph group_data["Persistence and integrations"]
  node_database[("Application database<br/>[AppDbContext.cs]")]
  node_email["Email service<br/>[EmailService.cs]"]
end

node_student(("Student"))
node_handyman(("Handyman"))
node_administrator(("Administrator"))
node_smtp["SMTP provider"]
node_push["Push messaging"]

node_student -->|"uses"| node_mobile
node_handyman -->|"uses"| node_mobile
node_administrator -->|"uses"| node_webapp
node_mobile -->|"opens"| node_login
node_mobile -->|"opens"| node_requestform
node_mobile -->|"opens"| node_requestviews
node_login -->|"calls"| node_mobileapi
node_requestform -->|"calls"| node_mobileapi
node_requestviews -->|"calls"| node_mobileapi
node_mobileapi -->|"requests"| node_auth
node_mobileapi -->|"requests"| node_requests
node_mobileapi -->|"requests"| node_users
node_mobileapi -->|"requests"| node_buildings
node_mobileapi -->|"requests"| node_categories
node_webapp -->|"routes"| node_webusers
node_webapp -->|"routes"| node_webbuildings
node_webapp -->|"routes"| node_webcategories
node_webusers -->|"manages users"| node_users
node_webbuildings -->|"manages buildings"| node_buildings
node_webcategories -->|"manages categories"| node_categories
node_requests -->|"reads and writes"| node_database
node_users -->|"reads and writes"| node_database
node_buildings -->|"reads and writes"| node_database
node_categories -->|"reads and writes"| node_database
node_auth -->|"sends verification"| node_email
node_email -->|"delivers email"| node_smtp
node_requests -.->|"notifies handymen"| node_notifications
node_notifications -.->|"sends push"| node_push
node_push -.->|"delivers message"| node_messaging

click node_mobile "https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/activities/MainActivity.kt"
click node_login "https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/activities/LoginActivity.kt"
click node_requestform "https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/fragments/MakeRequestFragment.kt"
click node_requestviews "https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/fragments/RequestsFragment.kt"
click node_webapp "https://github.com/comanalex33/quickfix/blob/main/Web/web/src/App.js"
click node_webusers "https://github.com/comanalex33/quickfix/blob/main/Web/web/src/pages/Users.js"
click node_webbuildings "https://github.com/comanalex33/quickfix/blob/main/Web/web/src/pages/Buildings.js"
click node_webcategories "https://github.com/comanalex33/quickfix/blob/main/Web/web/src/pages/Category.js"
click node_auth "https://github.com/comanalex33/quickfix/blob/main/Server/Server/Controllers/AuthController.cs"
click node_users "https://github.com/comanalex33/quickfix/blob/main/Server/Server/Controllers/UserController.cs"
click node_requests "https://github.com/comanalex33/quickfix/blob/main/Server/Server/Controllers/RequestController.cs"
click node_buildings "https://github.com/comanalex33/quickfix/blob/main/Server/Server/Controllers/BuildingController.cs"
click node_categories "https://github.com/comanalex33/quickfix/blob/main/Server/Server/Controllers/CategoryController.cs"
click node_notifications "https://github.com/comanalex33/quickfix/blob/main/Server/Server/Controllers/ServicesController.cs"
click node_mobileapi "https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/services/ApiService.kt"
click node_database "https://github.com/comanalex33/quickfix/blob/main/Server/Server/Models/AppDbContext.cs"
click node_email "https://github.com/comanalex33/quickfix/blob/main/Server/Server/Services/EmailService.cs"
click node_messaging "https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/FirebaseMessagingService.kt"

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_mobile,node_login,node_requestform,node_requestviews,node_webapp,node_webusers,node_webbuildings,node_webcategories,node_mobileapi,node_messaging toneBlue
class node_auth,node_users,node_requests,node_buildings,node_categories,node_notifications toneAmber
class node_database,node_email toneMint
class node_student,node_handyman,node_administrator,node_smtp,node_push toneIndigo
```

## Components

### Client applications

- [Android app](https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/activities/MainActivity.kt): `Mobile/app/src/main/java/app/quic/mobile/activities/MainActivity.kt`
- [Mobile login](https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/activities/LoginActivity.kt): `Mobile/app/src/main/java/app/quic/mobile/activities/LoginActivity.kt`
- [Request form](https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/fragments/MakeRequestFragment.kt): `Mobile/app/src/main/java/app/quic/mobile/fragments/MakeRequestFragment.kt`
- [Request views](https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/fragments/RequestsFragment.kt): `Mobile/app/src/main/java/app/quic/mobile/fragments/RequestsFragment.kt`
- [Admin web app](https://github.com/comanalex33/quickfix/blob/main/Web/web/src/App.js): `Web/web/src/App.js`
- [User management](https://github.com/comanalex33/quickfix/blob/main/Web/web/src/pages/Users.js): `Web/web/src/pages/Users.js`
- [Building management](https://github.com/comanalex33/quickfix/blob/main/Web/web/src/pages/Buildings.js): `Web/web/src/pages/Buildings.js`
- [Category management](https://github.com/comanalex33/quickfix/blob/main/Web/web/src/pages/Category.js): `Web/web/src/pages/Category.js`
- [Mobile API contract](https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/services/ApiService.kt): `Mobile/app/src/main/java/app/quic/mobile/services/ApiService.kt`
- [Mobile notification receiver](https://github.com/comanalex33/quickfix/blob/main/Mobile/app/src/main/java/app/quic/mobile/FirebaseMessagingService.kt): `Mobile/app/src/main/java/app/quic/mobile/FirebaseMessagingService.kt`

### Server API

- [Authentication](https://github.com/comanalex33/quickfix/blob/main/Server/Server/Controllers/AuthController.cs): `Server/Server/Controllers/AuthController.cs`
- [User operations](https://github.com/comanalex33/quickfix/blob/main/Server/Server/Controllers/UserController.cs): `Server/Server/Controllers/UserController.cs`
- [Request lifecycle](https://github.com/comanalex33/quickfix/blob/main/Server/Server/Controllers/RequestController.cs): `Server/Server/Controllers/RequestController.cs`
- [Building operations](https://github.com/comanalex33/quickfix/blob/main/Server/Server/Controllers/BuildingController.cs): `Server/Server/Controllers/BuildingController.cs`
- [Category operations](https://github.com/comanalex33/quickfix/blob/main/Server/Server/Controllers/CategoryController.cs): `Server/Server/Controllers/CategoryController.cs`
- [Notification API](https://github.com/comanalex33/quickfix/blob/main/Server/Server/Controllers/ServicesController.cs): `Server/Server/Controllers/ServicesController.cs`

### Persistence and integrations

- [Application database](https://github.com/comanalex33/quickfix/blob/main/Server/Server/Models/AppDbContext.cs): `Server/Server/Models/AppDbContext.cs`
- [Email service](https://github.com/comanalex33/quickfix/blob/main/Server/Server/Services/EmailService.cs): `Server/Server/Services/EmailService.cs`

### Other components

- **Student**
- **Handyman**
- **Administrator**
- **SMTP provider**
- **Push messaging**

## Connections

- Student → Android app: uses
- Handyman → Android app: uses
- Administrator → Admin web app: uses
- Android app → Mobile login: opens
- Android app → Request form: opens
- Android app → Request views: opens
- Mobile login → Mobile API contract: calls
- Request form → Mobile API contract: calls
- Request views → Mobile API contract: calls
- Mobile API contract → Authentication: requests
- Mobile API contract → Request lifecycle: requests
- Mobile API contract → User operations: requests
- Mobile API contract → Building operations: requests
- Mobile API contract → Category operations: requests
- Admin web app → User management: routes
- Admin web app → Building management: routes
- Admin web app → Category management: routes
- User management → User operations: manages users
- Building management → Building operations: manages buildings
- Category management → Category operations: manages categories
- Request lifecycle → Application database: reads and writes
- User operations → Application database: reads and writes
- Building operations → Application database: reads and writes
- Category operations → Application database: reads and writes
- Authentication → Email service: sends verification
- Email service → SMTP provider: delivers email
- Request lifecycle → Notification API: notifies handymen
- Notification API → Push messaging: sends push
- Push messaging → Mobile notification receiver: delivers message
