# dean-pawiro/uptimechecker architecture

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

- Interactive diagram: https://gitdiagram.com/dean-pawiro/uptimechecker
- Repository: https://github.com/dean-pawiro/uptimechecker

## Overview

UpTime Checker lets users authenticate, configure monitored URLs, and review uptime, response times, and status history; an internal worker performs scheduled checks and sends transition alerts. The UI also exposes monitor details, user administration, email settings, and service-client contact records. The sampled source confirms authentication, service-client loading, worker behavior, email delivery, and server wiring; several page and route implementations were not sampled, so their internal API links are not inferred.

Main entry points: [`frontend/src/App.jsx`](https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/App.jsx) (App navigation), [`backend/src/server.js`](https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/server.js) (Express server), [`backend/src/routes/service.js`](https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/routes/service.js) (Service routes), [`backend/src/workers/monitorWorker.js`](https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/workers/monitorWorker.js) (Monitoring worker)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["User interface"]
  node_app["App navigation<br/>[App.jsx]"]
  node_authui["Auth context<br/>[AuthContext.jsx]"]
  node_overview["Overview dashboard"]
  node_monitorui["Monitor pages<br/>[MonitorsPage.jsx]"]
  node_details["Monitor details<br/>[MonitorDetails.jsx]"]
  node_usersui["User management<br/>[UserManagement.jsx]"]
  node_settingsui["Settings<br/>[SettingsPage.jsx]"]
  node_serviceui["Service clients<br/>[ServicePage.jsx]"]
end

subgraph group_api["API and access"]
  node_server["Express server<br/>[server.js]"]
  node_authroutes["Authentication routes<br/>[auth.js]"]
  node_monroutes["Monitor routes<br/>[monitors.js]"]
  node_settingsroutes["Settings routes<br/>[settings.js]"]
  node_contactroutes["Contact routes<br/>[contactInfo.js]"]
  node_serviceroutes["Service routes<br/>[service.js]"]
  node_authmw["Auth middleware<br/>[auth.js]"]
end

subgraph group_monitoring["Monitoring"]
  node_worker["Monitoring worker<br/>[monitorWorker.js]"]
end

subgraph group_state["Persistent state"]
  node_mysql[("MySQL database<br/>[database.js]")]
end

subgraph group_integrations["Integrations"]
  node_email["Email service<br/>[emailService.js]"]
end

node_operator(("User"))
node_smtp{{"SMTP provider"}}
node_externalcron(("External cron"))

node_operator -->|"uses"| node_app
node_app -->|"checks session"| node_authui
node_app -->|"renders"| node_overview
node_app -->|"renders"| node_monitorui
node_app -->|"renders"| node_details
node_app -->|"renders"| node_usersui
node_app -->|"renders"| node_settingsui
node_app -->|"renders"| node_serviceui
node_authui -->|"requests auth"| node_authroutes
node_serviceui -->|"loads clients"| node_serviceroutes
node_server -->|"mounts routes"| node_authroutes
node_server -->|"mounts routes"| node_monroutes
node_server -->|"mounts routes"| node_settingsroutes
node_server -->|"mounts routes"| node_contactroutes
node_server -->|"mounts routes"| node_serviceroutes
node_server -->|"connects and syncs"| node_mysql
node_server -->|"starts worker"| node_worker
node_authroutes -->|"protects endpoints"| node_authmw
node_serviceroutes -->|"protects clients"| node_authmw
node_serviceroutes -->|"triggers checks"| node_worker
node_worker -->|"loads and saves checks"| node_mysql
node_worker -->|"sends status alerts"| node_email
node_email -->|"loads SMTP settings"| node_mysql
node_email -.->|"delivers email"| node_smtp
node_externalcron -.->|"triggers checks"| node_serviceroutes

click node_app "https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/App.jsx"
click node_authui "https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/context/AuthContext.jsx"
click node_overview "https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/pages/OverviewDashboard.jsx"
click node_monitorui "https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/pages/MonitorsPage.jsx"
click node_details "https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/pages/MonitorDetails.jsx"
click node_usersui "https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/pages/UserManagement.jsx"
click node_settingsui "https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/pages/SettingsPage.jsx"
click node_serviceui "https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/pages/ServicePage.jsx"
click node_server "https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/server.js"
click node_authroutes "https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/routes/auth.js"
click node_monroutes "https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/routes/monitors.js"
click node_settingsroutes "https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/routes/settings.js"
click node_contactroutes "https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/routes/contactInfo.js"
click node_serviceroutes "https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/routes/service.js"
click node_authmw "https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/middleware/auth.js"
click node_worker "https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/workers/monitorWorker.js"
click node_email "https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/services/emailService.js"
click node_mysql "https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/config/database.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_app,node_authui,node_overview,node_monitorui,node_details,node_usersui,node_settingsui,node_serviceui,node_operator toneBlue
class node_server,node_authroutes,node_monroutes,node_settingsroutes,node_contactroutes,node_serviceroutes,node_authmw toneAmber
class node_worker toneMint
class node_mysql toneRose
class node_email,node_smtp,node_externalcron toneIndigo
```

## Components

### User interface

- [App navigation](https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Auth context](https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Overview dashboard](https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/pages/OverviewDashboard.jsx): `frontend/src/pages/OverviewDashboard.jsx`
- [Monitor pages](https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/pages/MonitorsPage.jsx): `frontend/src/pages/MonitorsPage.jsx`
- [Monitor details](https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/pages/MonitorDetails.jsx): `frontend/src/pages/MonitorDetails.jsx`
- [User management](https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/pages/UserManagement.jsx): `frontend/src/pages/UserManagement.jsx`
- [Settings](https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/pages/SettingsPage.jsx): `frontend/src/pages/SettingsPage.jsx`
- [Service clients](https://github.com/dean-pawiro/uptimechecker/blob/master/frontend/src/pages/ServicePage.jsx): `frontend/src/pages/ServicePage.jsx`

### API and access

- [Express server](https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/server.js): `backend/src/server.js`
- [Authentication routes](https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/routes/auth.js): `backend/src/routes/auth.js`
- [Monitor routes](https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/routes/monitors.js): `backend/src/routes/monitors.js`
- [Settings routes](https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/routes/settings.js): `backend/src/routes/settings.js`
- [Contact routes](https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/routes/contactInfo.js): `backend/src/routes/contactInfo.js`
- [Service routes](https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/routes/service.js): `backend/src/routes/service.js`
- [Auth middleware](https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/middleware/auth.js): `backend/src/middleware/auth.js`

### Monitoring

- [Monitoring worker](https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/workers/monitorWorker.js): `backend/src/workers/monitorWorker.js`

### Persistent state

- [MySQL database](https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/config/database.js): `backend/src/config/database.js`

### Integrations

- [Email service](https://github.com/dean-pawiro/uptimechecker/blob/master/backend/src/services/emailService.js): `backend/src/services/emailService.js`

### Other components

- **User**
- **SMTP provider**
- **External cron**

## Connections

- User → App navigation: uses
- App navigation → Auth context: checks session
- App navigation → Overview dashboard: renders
- App navigation → Monitor pages: renders
- App navigation → Monitor details: renders
- App navigation → User management: renders
- App navigation → Settings: renders
- App navigation → Service clients: renders
- Auth context → Authentication routes: requests auth
- Service clients → Service routes: loads clients
- Express server → Authentication routes: mounts routes
- Express server → Monitor routes: mounts routes
- Express server → Settings routes: mounts routes
- Express server → Contact routes: mounts routes
- Express server → Service routes: mounts routes
- Express server → MySQL database: connects and syncs
- Express server → Monitoring worker: starts worker
- Authentication routes → Auth middleware: protects endpoints
- Service routes → Auth middleware: protects clients
- Service routes → Monitoring worker: triggers checks
- Monitoring worker → MySQL database: loads and saves checks
- Monitoring worker → Email service: sends status alerts
- Email service → MySQL database: loads SMTP settings
- Email service → SMTP provider: delivers email
- External cron → Service routes: triggers checks
