# limbooc/mycrm architecture

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

- Interactive diagram: https://gitdiagram.com/limbooc/mycrm
- Repository: https://github.com/limbooc/mycrm

## Overview

MyCRM is a Flask CRM for managing requests, objects, contractors, and related workflow data. Users authenticate, browse and search records, create requests, then process them with contractor/manufacturer assignments, status changes, and attachments; comments and REST integrations support that core workflow. The graph also preserves documented admin, audit, and OP capabilities. README describes the wider UI and integrations; where their implementation was not sampled, links are limited to paths supported by the tree and documented behavior.

Main entry points: [`app.py`](https://github.com/limbooc/mycrm/blob/main/app.py) (Flask application), [`models`](https://github.com/limbooc/mycrm/tree/main/models) (ORM models), [`blueprints/auth.py`](https://github.com/limbooc/mycrm/blob/main/blueprints/auth.py) (Authentication), [`routes/request_process_routes.py`](https://github.com/limbooc/mycrm/blob/main/routes/request_process_routes.py) (Request processing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Web entry and UI"]
  node_flask["Flask application<br/>[app.py]"]
  node_browser["Browser UI"]
end

subgraph group_workflow["CRM workflows"]
  node_auth["Authentication<br/>[auth.py]"]
  node_dashboard["Dashboard<br/>[main_routes.py]"]
  node_requests["Request CRUD"]
  node_processing["Request processing"]
  node_objects["Object management<br/>[object_routes.py]"]
  node_contractors["Contractor management"]
  node_comments["Request comments"]
  node_search["Search routes<br/>[search_routes.py]"]
end

subgraph group_integration["Integration and operations"]
  node_rest["REST API v1/v2"]
  node_op["OP module<br/>[op.py]"]
  node_admin["Admin operations<br/>[admin_routes.py]"]
  node_audit["Audit events<br/>[audit_routes.py]"]
  node_files["File handling<br/>[file_routes.py]"]
end

subgraph group_internal["Security and persistence"]
  node_models["ORM models"]
  node_database[("Relational database<br/>[database.py]")]
  node_security["Validation and security<br/>[security_utils.py]"]
end

node_user(("CRM user"))
node_redis[("Redis service")]
node_recaptcha["reCAPTCHA service"]

node_user -->|"uses"| node_browser
node_browser -->|"HTTP requests"| node_flask
node_flask -->|"dispatches"| node_auth
node_flask -->|"dispatches"| node_dashboard
node_flask -->|"dispatches"| node_requests
node_flask -->|"dispatches"| node_processing
node_flask -->|"dispatches"| node_objects
node_flask -->|"dispatches"| node_contractors
node_flask -->|"dispatches"| node_comments
node_flask -->|"dispatches"| node_search
node_flask -->|"dispatches"| node_rest
node_flask -->|"dispatches"| node_op
node_flask -->|"dispatches"| node_admin
node_flask -->|"dispatches"| node_audit
node_flask -->|"dispatches"| node_files
node_auth -->|"loads user"| node_models
node_auth -->|"validates credentials"| node_security
node_auth -.->|"verifies token"| node_recaptcha
node_dashboard -->|"queries records"| node_models
node_requests -->|"reads/writes requests"| node_models
node_processing -->|"updates workflow"| node_models
node_processing -->|"handles uploads"| node_files
node_objects -->|"reads/writes objects"| node_models
node_contractors -->|"reads/writes contractors"| node_models
node_comments -->|"reads/writes comments"| node_models
node_search -->|"searches records"| node_models
node_rest -->|"serves CRM data"| node_models
node_op -->|"uses OP data"| node_models
node_admin -->|"manages data"| node_models
node_audit -->|"records events"| node_models
node_models -->|"persists through"| node_database
node_flask -->|"enforces protections"| node_security
node_flask -.->|"configures optional storage"| node_redis

click node_flask "https://github.com/limbooc/mycrm/blob/main/app.py"
click node_browser "https://github.com/limbooc/mycrm/tree/main/static"
click node_auth "https://github.com/limbooc/mycrm/blob/main/blueprints/auth.py"
click node_dashboard "https://github.com/limbooc/mycrm/blob/main/routes/main_routes.py"
click node_requests "https://github.com/limbooc/mycrm/blob/main/routes/request_crud_routes.py"
click node_processing "https://github.com/limbooc/mycrm/blob/main/routes/request_process_routes.py"
click node_objects "https://github.com/limbooc/mycrm/blob/main/routes/object_routes.py"
click node_contractors "https://github.com/limbooc/mycrm/blob/main/routes/contractor_routes.py"
click node_comments "https://github.com/limbooc/mycrm/blob/main/routes/request_comment_routes.py"
click node_search "https://github.com/limbooc/mycrm/blob/main/routes/search_routes.py"
click node_rest "https://github.com/limbooc/mycrm/tree/main/routes/api"
click node_op "https://github.com/limbooc/mycrm/blob/main/blueprints/op.py"
click node_admin "https://github.com/limbooc/mycrm/blob/main/routes/admin_routes.py"
click node_audit "https://github.com/limbooc/mycrm/blob/main/routes/audit_routes.py"
click node_files "https://github.com/limbooc/mycrm/blob/main/routes/file_routes.py"
click node_models "https://github.com/limbooc/mycrm/tree/main/models"
click node_database "https://github.com/limbooc/mycrm/blob/main/database.py"
click node_security "https://github.com/limbooc/mycrm/blob/main/security_utils.py"

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_flask,node_browser,node_user toneBlue
class node_auth,node_dashboard,node_requests,node_processing,node_objects,node_contractors,node_comments,node_search,node_redis toneAmber
class node_rest,node_op,node_admin,node_audit,node_files toneMint
class node_models,node_database,node_security toneRose
class node_recaptcha toneIndigo
```

## Components

### Web entry and UI

- [Flask application](https://github.com/limbooc/mycrm/blob/main/app.py): `app.py`
- [Browser UI](https://github.com/limbooc/mycrm/tree/main/static): `static`

### CRM workflows

- [Authentication](https://github.com/limbooc/mycrm/blob/main/blueprints/auth.py): `blueprints/auth.py`
- [Dashboard](https://github.com/limbooc/mycrm/blob/main/routes/main_routes.py): `routes/main_routes.py`
- [Request CRUD](https://github.com/limbooc/mycrm/blob/main/routes/request_crud_routes.py): `routes/request_crud_routes.py`
- [Request processing](https://github.com/limbooc/mycrm/blob/main/routes/request_process_routes.py): `routes/request_process_routes.py`
- [Object management](https://github.com/limbooc/mycrm/blob/main/routes/object_routes.py): `routes/object_routes.py`
- [Contractor management](https://github.com/limbooc/mycrm/blob/main/routes/contractor_routes.py): `routes/contractor_routes.py`
- [Request comments](https://github.com/limbooc/mycrm/blob/main/routes/request_comment_routes.py): `routes/request_comment_routes.py`
- [Search routes](https://github.com/limbooc/mycrm/blob/main/routes/search_routes.py): `routes/search_routes.py`

### Integration and operations

- [REST API v1/v2](https://github.com/limbooc/mycrm/tree/main/routes/api): `routes/api`
- [OP module](https://github.com/limbooc/mycrm/blob/main/blueprints/op.py): `blueprints/op.py`
- [Admin operations](https://github.com/limbooc/mycrm/blob/main/routes/admin_routes.py): `routes/admin_routes.py`
- [Audit events](https://github.com/limbooc/mycrm/blob/main/routes/audit_routes.py): `routes/audit_routes.py`
- [File handling](https://github.com/limbooc/mycrm/blob/main/routes/file_routes.py): `routes/file_routes.py`

### Security and persistence

- [ORM models](https://github.com/limbooc/mycrm/tree/main/models): `models`
- [Relational database](https://github.com/limbooc/mycrm/blob/main/database.py): `database.py`
- [Validation and security](https://github.com/limbooc/mycrm/blob/main/security_utils.py): `security_utils.py`

### Other components

- **CRM user**
- **Redis service**
- **reCAPTCHA service**

## Connections

- CRM user → Browser UI: uses
- Browser UI → Flask application: HTTP requests
- Flask application → Authentication: dispatches
- Flask application → Dashboard: dispatches
- Flask application → Request CRUD: dispatches
- Flask application → Request processing: dispatches
- Flask application → Object management: dispatches
- Flask application → Contractor management: dispatches
- Flask application → Request comments: dispatches
- Flask application → Search routes: dispatches
- Flask application → REST API v1/v2: dispatches
- Flask application → OP module: dispatches
- Flask application → Admin operations: dispatches
- Flask application → Audit events: dispatches
- Flask application → File handling: dispatches
- Authentication → ORM models: loads user
- Authentication → Validation and security: validates credentials
- Authentication → reCAPTCHA service: verifies token
- Dashboard → ORM models: queries records
- Request CRUD → ORM models: reads/writes requests
- Request processing → ORM models: updates workflow
- Request processing → File handling: handles uploads
- Object management → ORM models: reads/writes objects
- Contractor management → ORM models: reads/writes contractors
- Request comments → ORM models: reads/writes comments
- Search routes → ORM models: searches records
- REST API v1/v2 → ORM models: serves CRM data
- OP module → ORM models: uses OP data
- Admin operations → ORM models: manages data
- Audit events → ORM models: records events
- ORM models → Relational database: persists through
- Flask application → Validation and security: enforces protections
- Flask application → Redis service: configures optional storage
