# felipevbrito/login_flask_mariadb_docker architecture

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

## Overview

This is a Flask login and user-administration application. The main workflow is a visitor submitting a validated login or registration form, the authentication routes checking or creating an account, and successful login leading to the protected home page. Authenticated users can manage profile details; administrators can inspect, edit, deactivate, soft-delete, and review activity for users. The README documents MariaDB persistence, session and CSRF protections, activity logging, and a phpMyAdmin interface. Connections reflect the sampled routes and app setup; unsampled implementation details are not inferred.

Main entry points: [`app_login/auth/routes.py`](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/auth/routes.py) (Auth and profile routes), [`app_login/app.py`](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/app.py) (Flask app setup), [`app_login/users/routes.py`](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/users/routes.py) (User management routes), [`app_login/extensions.py`](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/extensions.py) (Flask extensions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_application["Application"]
  node_app_factory["Flask app setup<br/>[app.py]"]
  node_home["Protected home<br/>[routes.py]"]
  node_page_templates["Application pages"]
end

subgraph group_authentication["Authentication"]
  node_auth_routes["Auth and profile routes<br/>[routes.py]"]
  node_auth_forms["Auth forms<br/>[forms.py]"]
  node_auth_validators["Email validation<br/>[validators.py]"]
  node_auth_controllers["Auth operations<br/>[controllers.py]"]
end

subgraph group_users["User administration"]
  node_user_routes["User management routes<br/>[routes.py]"]
  node_user_forms["User edit form<br/>[forms.py]"]
  node_user_templates["User pages"]
end

subgraph group_data["Data and security"]
  node_config["App configuration<br/>[config.py]"]
  node_extensions["Flask extensions<br/>[extensions.py]"]
  node_user_model["User and activity models<br/>[auth.py]"]
  node_activity_utils["Activity and utilities<br/>[utils.py]"]
end

node_visitor(("Visitor"))
node_mariadb[("MariaDB")]
node_phpmyadmin["phpMyAdmin"]

node_visitor -->|"submits credentials"| node_auth_routes
node_app_factory -->|"loads settings"| node_config
node_app_factory -->|"initializes"| node_extensions
node_app_factory -->|"registers blueprint"| node_auth_routes
node_app_factory -->|"registers blueprint"| node_home
node_app_factory -->|"registers blueprint"| node_user_routes
node_app_factory -->|"tracks page access"| node_activity_utils
node_auth_routes -->|"validates input"| node_auth_forms
node_auth_forms -->|"checks email"| node_auth_validators
node_auth_validators -->|"checks existing user"| node_user_model
node_auth_routes -->|"calls auth operations"| node_auth_controllers
node_auth_routes -->|"reads and updates"| node_user_model
node_auth_routes -->|"uses database and bcrypt"| node_extensions
node_auth_controllers -->|"creates users"| node_user_model
node_auth_controllers -->|"hashes and persists"| node_extensions
node_auth_routes -->|"redirects after login"| node_home
node_auth_routes -->|"renders auth and profile"| node_page_templates
node_home -->|"renders home page"| node_page_templates
node_user_routes -->|"validates edits"| node_user_forms
node_user_routes -->|"queries and updates users"| node_user_model
node_user_routes -->|"logs and formats activity"| node_activity_utils
node_user_routes -->|"generates reset token"| node_auth_controllers
node_user_routes -->|"renders management pages"| node_user_templates
node_user_model -->|"uses ORM"| node_extensions
node_activity_utils -->|"writes activity records"| node_user_model
node_activity_utils -->|"commits log entries"| node_extensions
node_mariadb -.->|"managed through"| node_phpmyadmin
node_extensions -.->|"persists via SQLAlchemy"| node_mariadb

click node_app_factory "https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/app.py"
click node_home "https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/home/routes.py"
click node_page_templates "https://github.com/felipevbrito/login_flask_mariadb_docker/tree/main/templates"
click node_auth_routes "https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/auth/routes.py"
click node_auth_forms "https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/auth/forms.py"
click node_auth_validators "https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/auth/validators.py"
click node_auth_controllers "https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/auth/controllers.py"
click node_user_routes "https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/users/routes.py"
click node_user_forms "https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/users/forms.py"
click node_user_templates "https://github.com/felipevbrito/login_flask_mariadb_docker/tree/main/templates/users"
click node_config "https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/config.py"
click node_extensions "https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/extensions.py"
click node_user_model "https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/models/auth.py"
click node_activity_utils "https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/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_app_factory,node_home,node_page_templates toneBlue
class node_auth_routes,node_auth_forms,node_auth_validators,node_auth_controllers,node_mariadb toneAmber
class node_user_routes,node_user_forms,node_user_templates toneMint
class node_config,node_extensions,node_user_model,node_activity_utils toneRose
class node_visitor,node_phpmyadmin toneIndigo
```

## Components

### Application

- [Flask app setup](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/app.py): `app_login/app.py`
- [Protected home](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/home/routes.py): `app_login/home/routes.py`
- [Application pages](https://github.com/felipevbrito/login_flask_mariadb_docker/tree/main/templates): `templates`

### Authentication

- [Auth and profile routes](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/auth/routes.py): `app_login/auth/routes.py`
- [Auth forms](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/auth/forms.py): `app_login/auth/forms.py`
- [Email validation](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/auth/validators.py): `app_login/auth/validators.py`
- [Auth operations](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/auth/controllers.py): `app_login/auth/controllers.py`

### User administration

- [User management routes](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/users/routes.py): `app_login/users/routes.py`
- [User edit form](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/users/forms.py): `app_login/users/forms.py`
- [User pages](https://github.com/felipevbrito/login_flask_mariadb_docker/tree/main/templates/users): `templates/users`

### Data and security

- [App configuration](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/config.py): `app_login/config.py`
- [Flask extensions](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/extensions.py): `app_login/extensions.py`
- [User and activity models](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/models/auth.py): `app_login/models/auth.py`
- [Activity and utilities](https://github.com/felipevbrito/login_flask_mariadb_docker/blob/main/app_login/utils.py): `app_login/utils.py`

### Other components

- **Visitor**
- **MariaDB**
- **phpMyAdmin**

## Connections

- Visitor → Auth and profile routes: submits credentials (evidence: `app_login/auth/routes.py`)
- Flask app setup → App configuration: loads settings (evidence: `app_login/app.py`)
- Flask app setup → Flask extensions: initializes (evidence: `app_login/app.py`)
- Flask app setup → Auth and profile routes: registers blueprint (evidence: `app_login/app.py`)
- Flask app setup → Protected home: registers blueprint (evidence: `app_login/app.py`)
- Flask app setup → User management routes: registers blueprint (evidence: `app_login/app.py`)
- Flask app setup → Activity and utilities: tracks page access (evidence: `app_login/app.py`)
- Auth and profile routes → Auth forms: validates input (evidence: `app_login/auth/routes.py`)
- Auth forms → Email validation: checks email (evidence: `app_login/auth/forms.py`)
- Email validation → User and activity models: checks existing user (evidence: `app_login/auth/validators.py`)
- Auth and profile routes → Auth operations: calls auth operations (evidence: `app_login/auth/routes.py`)
- Auth and profile routes → User and activity models: reads and updates (evidence: `app_login/auth/routes.py`)
- Auth and profile routes → Flask extensions: uses database and bcrypt (evidence: `app_login/auth/routes.py`)
- Auth operations → User and activity models: creates users (evidence: `app_login/auth/controllers.py`)
- Auth operations → Flask extensions: hashes and persists (evidence: `app_login/auth/controllers.py`)
- Auth and profile routes → Protected home: redirects after login (evidence: `app_login/auth/routes.py`)
- Auth and profile routes → Application pages: renders auth and profile (evidence: `app_login/auth/routes.py`)
- Protected home → Application pages: renders home page (evidence: `app_login/home/routes.py`)
- User management routes → User edit form: validates edits (evidence: `app_login/users/routes.py`)
- User management routes → User and activity models: queries and updates users (evidence: `app_login/users/routes.py`)
- User management routes → Activity and utilities: logs and formats activity (evidence: `app_login/users/routes.py`)
- User management routes → Auth operations: generates reset token (evidence: `app_login/users/routes.py`)
- User management routes → User pages: renders management pages (evidence: `app_login/users/routes.py`)
- User and activity models → Flask extensions: uses ORM (evidence: `app_login/models/auth.py`)
- Activity and utilities → User and activity models: writes activity records (evidence: `app_login/utils.py`)
- Activity and utilities → Flask extensions: commits log entries (evidence: `app_login/utils.py`)
- MariaDB → phpMyAdmin: managed through (evidence: `README.md`)
- Flask extensions → MariaDB: persists via SQLAlchemy (evidence: `README.md`)
