# k-kabeesan/labbooker architecture

> Architecture diagram of the GitHub repository k-kabeesan/labbooker, 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/k-kabeesan/labbooker
- Repository: https://github.com/k-kabeesan/labbooker

## Overview

LabBooker is a Qt desktop system for laboratory reservations and administration. Users sign in, check availability, request or manage bookings, and track decisions; administrators also manage accounts and resources, configure schedules, and produce reports. The graph separates UI, domain services, and SQLite persistence. Some page-to-service wiring is not shown in the excerpts, so those links are dashed and unverified rather than asserted as calls.

Main entry points: [`src/mainwindow.cpp`](https://github.com/k-kabeesan/labbooker/blob/main/src/mainwindow.cpp) (Role-based pages), [`src/database.cpp`](https://github.com/k-kabeesan/labbooker/blob/main/src/database.cpp) (Database manager), [`src/services.cpp`](https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp) (Authentication), [`src/main.cpp`](https://github.com/k-kabeesan/labbooker/blob/main/src/main.cpp) (Startup shell)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application and UI"]
  node_app["Startup shell<br/>[main.cpp]"]
  node_login["Sign-in UI<br/>[mainwindow.cpp]"]
  node_mainui["Role-based pages<br/>[mainwindow.cpp]"]
end

subgraph group_booking["Booking workflow"]
  node_availability["Availability checks<br/>[services.cpp]"]
  node_bookingops["Booking operations<br/>[services.cpp]"]
end

subgraph group_admin["Administration"]
  node_useradmin["User management<br/>[services.cpp]"]
  node_labadmin["Laboratory management<br/>[services.cpp]"]
  node_equipment["Equipment management<br/>[services.cpp]"]
  node_reports["Reports and export<br/>[services.cpp]"]
end

subgraph group_core["Domain and persistence"]
  node_domain["Domain records<br/>[domain.h]"]
  node_auth["Authentication<br/>[services.cpp]"]
  node_database["Database manager<br/>[database.cpp]"]
  node_sqlite[("SQLite database")]
end

node_users(("Students and staff"))

node_users -->|"sign in"| node_login
node_app -->|"opens"| node_database
node_app -->|"bootstraps admin"| node_auth
node_app -->|"creates"| node_login
node_login -->|"authenticated signal"| node_mainui
node_users -->|"use booking features"| node_mainui
node_mainui -->|"reads booking data"| node_database
node_mainui -.->|"authentication actions"| node_auth
node_mainui -.->|"check availability"| node_availability
node_mainui -.->|"submit and manage"| node_bookingops
node_mainui -.->|"manage accounts"| node_useradmin
node_mainui -.->|"manage laboratories"| node_labadmin
node_mainui -.->|"manage equipment"| node_equipment
node_mainui -.->|"request reports"| node_reports
node_auth -->|"reads and writes"| node_database
node_availability -->|"checks schedules"| node_database
node_bookingops -->|"validates request"| node_availability
node_bookingops -.->|"stores bookings"| node_database
node_useradmin -->|"creates accounts"| node_auth
node_database -->|"persists records"| node_sqlite

click node_app "https://github.com/k-kabeesan/labbooker/blob/main/src/main.cpp"
click node_login "https://github.com/k-kabeesan/labbooker/blob/main/src/mainwindow.cpp"
click node_mainui "https://github.com/k-kabeesan/labbooker/blob/main/src/mainwindow.cpp"
click node_domain "https://github.com/k-kabeesan/labbooker/blob/main/src/domain.h"
click node_auth "https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp"
click node_availability "https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp"
click node_bookingops "https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp"
click node_useradmin "https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp"
click node_labadmin "https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp"
click node_equipment "https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp"
click node_reports "https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp"
click node_database "https://github.com/k-kabeesan/labbooker/blob/main/src/database.cpp"

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_login,node_mainui toneBlue
class node_availability,node_bookingops toneAmber
class node_useradmin,node_labadmin,node_equipment,node_reports toneMint
class node_domain,node_auth,node_database,node_sqlite toneRose
class node_users toneIndigo
```

## Components

### Application and UI

- [Startup shell](https://github.com/k-kabeesan/labbooker/blob/main/src/main.cpp): `src/main.cpp`
- [Sign-in UI](https://github.com/k-kabeesan/labbooker/blob/main/src/mainwindow.cpp): `src/mainwindow.cpp`
- [Role-based pages](https://github.com/k-kabeesan/labbooker/blob/main/src/mainwindow.cpp): `src/mainwindow.cpp`

### Booking workflow

- [Availability checks](https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp): `src/services.cpp`
- [Booking operations](https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp): `src/services.cpp`

### Administration

- [User management](https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp): `src/services.cpp`
- [Laboratory management](https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp): `src/services.cpp`
- [Equipment management](https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp): `src/services.cpp`
- [Reports and export](https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp): `src/services.cpp`

### Domain and persistence

- [Domain records](https://github.com/k-kabeesan/labbooker/blob/main/src/domain.h): `src/domain.h`
- [Authentication](https://github.com/k-kabeesan/labbooker/blob/main/src/services.cpp): `src/services.cpp`
- [Database manager](https://github.com/k-kabeesan/labbooker/blob/main/src/database.cpp): `src/database.cpp`
- **SQLite database**

### Other components

- **Students and staff**

## Connections

- Students and staff → Sign-in UI: sign in (evidence: `README.md`)
- Startup shell → Database manager: opens (evidence: `src/main.cpp`)
- Startup shell → Authentication: bootstraps admin (evidence: `src/main.cpp`)
- Startup shell → Sign-in UI: creates (evidence: `src/main.cpp`)
- Sign-in UI → Role-based pages: authenticated signal (evidence: `src/mainwindow.cpp`)
- Students and staff → Role-based pages: use booking features (evidence: `README.md`)
- Role-based pages → Database manager: reads booking data (evidence: `src/mainwindow.cpp`)
- Role-based pages → Authentication: authentication actions
- Role-based pages → Availability checks: check availability
- Role-based pages → Booking operations: submit and manage
- Role-based pages → User management: manage accounts
- Role-based pages → Laboratory management: manage laboratories
- Role-based pages → Equipment management: manage equipment
- Role-based pages → Reports and export: request reports
- Authentication → Database manager: reads and writes (evidence: `src/services.cpp`)
- Availability checks → Database manager: checks schedules (evidence: `src/services.cpp`)
- Booking operations → Availability checks: validates request (evidence: `src/services.cpp`)
- Booking operations → Database manager: stores bookings
- User management → Authentication: creates accounts (evidence: `src/services.cpp`)
- Database manager → SQLite database: persists records (evidence: `README.md`)
