# txrenters/texasrenters-inspection-app architecture

> Architecture diagram of the GitHub repository txrenters/texasrenters-inspection-app, 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/txrenters/texasrenters-inspection-app
- Repository: https://github.com/txrenters/texasrenters-inspection-app

## Overview

TexasRenters is a property-inspection platform: technicians use the mobile app to handle assigned inspections, document rooms and findings, and capture media; administrators manage properties, assignments, planning, reviews, and reporting through the web app. Both clients use the shared NestJS REST API, which owns business rules, privileged access, and database/provider integrations. The tree and README establish the main product areas; source excerpts confirm selected planning, AI-review, and storage relationships. Many subsystem internals were not sampled, so their specific runtime links are omitted.

Main entry points: [`backend/src/main.ts`](https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/main.ts) (REST API), [`backend/src/planning/planning.controller.ts`](https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/planning/planning.controller.ts) (Inspection planning), [`backend/src/routing/route.service.ts`](https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/routing/route.service.ts) (Route calculation), [`mobile/app`](https://github.com/txrenters/texasrenters-inspection-app/tree/main/mobile/app) (Technician app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Client apps"]
  node_technician["Technician app"]
  node_admin["Admin web app"]
end

subgraph group_operations["Inspection operations"]
  node_media["Media handling"]
  node_visual_review["AI visual review"]
  node_floorplans["Floor plans"]
  node_planning["Inspection planning"]
  node_quarter_planner["Quarter planner"]
  node_tbp_plan["TBP plans"]
  node_tbp_publish["Plan publishing"]
  node_routing["Route calculation<br/>[route.service.ts]"]
  node_manual_grouping["Manual grouping<br/>[manual-grouping.ts]"]
end

subgraph group_platform["API platform"]
  node_api["REST API<br/>[main.ts]"]
  node_auth["Authentication"]
  node_database[("PostgreSQL data")]
  node_object_storage["Object storage<br/>[object-storage.ts]"]
end

subgraph group_integrations["External systems"]
  node_propertyware["Propertyware sync"]
  node_jobber["Jobber integration"]
  node_xero["Xero accounting"]
  node_mail["Email delivery"]
end

node_supabase["Supabase Auth"]
node_map_services["Routing providers"]

node_technician -->|"uses REST API"| node_api
node_admin -->|"uses REST API"| node_api
node_technician -->|"authenticates with"| node_supabase
node_admin -->|"authenticates with"| node_supabase
node_api -->|"owns data access"| node_database
node_api -->|"syncs portfolio"| node_propertyware
node_planning -->|"invokes"| node_quarter_planner
node_planning -->|"invokes"| node_tbp_plan
node_planning -->|"invokes"| node_tbp_publish
node_planning -->|"uses routes"| node_routing
node_visual_review -->|"files frames"| node_object_storage
node_floorplans -->|"stores plans"| node_object_storage
node_routing -.->|"requests directions"| node_map_services
node_manual_grouping -.->|"displays routes"| node_routing
node_api -.->|"integrates"| node_jobber
node_api -.->|"integrates"| node_xero
node_api -.->|"sends mail"| node_mail

click node_technician "https://github.com/txrenters/texasrenters-inspection-app/tree/main/mobile/app"
click node_admin "https://github.com/txrenters/texasrenters-inspection-app/tree/main/web/app"
click node_api "https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/main.ts"
click node_auth "https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/auth"
click node_database "https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/database"
click node_media "https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/media"
click node_visual_review "https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/technician/visual-review.service.ts"
click node_object_storage "https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/common/object-storage.ts"
click node_floorplans "https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/admin"
click node_planning "https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/planning/planning.controller.ts"
click node_quarter_planner "https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/planning/quarter-planner.service.ts"
click node_tbp_plan "https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/planning/tbp-plan.service.ts"
click node_tbp_publish "https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/planning/tbp-publish.service.ts"
click node_routing "https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/routing/route.service.ts"
click node_manual_grouping "https://github.com/txrenters/texasrenters-inspection-app/blob/main/web/components/planning/manual-grouping.ts"
click node_propertyware "https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/integrations/propertyware"
click node_jobber "https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/integrations/jobber"
click node_xero "https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/integrations/xero"
click node_mail "https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/mail"

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_technician,node_admin toneBlue
class node_media,node_visual_review,node_floorplans,node_planning,node_quarter_planner,node_tbp_plan,node_tbp_publish,node_routing,node_manual_grouping toneAmber
class node_api,node_auth,node_database,node_object_storage toneMint
class node_propertyware,node_jobber,node_xero,node_mail toneRose
class node_supabase,node_map_services toneIndigo
```

## Components

### Client apps

- [Technician app](https://github.com/txrenters/texasrenters-inspection-app/tree/main/mobile/app): `mobile/app`
- [Admin web app](https://github.com/txrenters/texasrenters-inspection-app/tree/main/web/app): `web/app`

### Inspection operations

- [Media handling](https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/media): `backend/src/media`
- [AI visual review](https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/technician/visual-review.service.ts): `backend/src/technician/visual-review.service.ts`
- [Floor plans](https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/admin): `backend/src/admin`
- [Inspection planning](https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/planning/planning.controller.ts): `backend/src/planning/planning.controller.ts`
- [Quarter planner](https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/planning/quarter-planner.service.ts): `backend/src/planning/quarter-planner.service.ts`
- [TBP plans](https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/planning/tbp-plan.service.ts): `backend/src/planning/tbp-plan.service.ts`
- [Plan publishing](https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/planning/tbp-publish.service.ts): `backend/src/planning/tbp-publish.service.ts`
- [Route calculation](https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/routing/route.service.ts): `backend/src/routing/route.service.ts`
- [Manual grouping](https://github.com/txrenters/texasrenters-inspection-app/blob/main/web/components/planning/manual-grouping.ts): `web/components/planning/manual-grouping.ts`

### API platform

- [REST API](https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/main.ts): `backend/src/main.ts`
- [Authentication](https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/auth): `backend/src/auth`
- [PostgreSQL data](https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/database): `backend/src/database`
- [Object storage](https://github.com/txrenters/texasrenters-inspection-app/blob/main/backend/src/common/object-storage.ts): `backend/src/common/object-storage.ts`

### External systems

- [Propertyware sync](https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/integrations/propertyware): `backend/src/integrations/propertyware`
- [Jobber integration](https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/integrations/jobber): `backend/src/integrations/jobber`
- [Xero accounting](https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/integrations/xero): `backend/src/integrations/xero`
- [Email delivery](https://github.com/txrenters/texasrenters-inspection-app/tree/main/backend/src/mail): `backend/src/mail`

### Other components

- **Supabase Auth**
- **Routing providers**

## Connections

- Technician app → REST API: uses REST API
- Admin web app → REST API: uses REST API
- Technician app → Supabase Auth: authenticates with
- Admin web app → Supabase Auth: authenticates with
- REST API → PostgreSQL data: owns data access
- REST API → Propertyware sync: syncs portfolio
- Inspection planning → Quarter planner: invokes (evidence: `backend/src/planning/planning.controller.ts`)
- Inspection planning → TBP plans: invokes (evidence: `backend/src/planning/planning.controller.ts`)
- Inspection planning → Plan publishing: invokes (evidence: `backend/src/planning/planning.controller.ts`)
- Inspection planning → Route calculation: uses routes (evidence: `backend/src/planning/planning.controller.ts`)
- AI visual review → Object storage: files frames (evidence: `backend/src/technician/visual-review.service.ts`)
- Floor plans → Object storage: stores plans (evidence: `backend/src/admin/floor-plan-storage.service.ts`)
- Route calculation → Routing providers: requests directions
- Manual grouping → Route calculation: displays routes
- REST API → Jobber integration: integrates
- REST API → Xero accounting: integrates
- REST API → Email delivery: sends mail
