# webdevl1on/project_2 architecture

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

## Overview

This repository implements a small personnel and event-record backend: it validates people and dated person-event records, stores them with SQLAlchemy, and provides checks and reference-data seeding. The sampled service shows event creation, date/duration validation, conflict lookup and persistence; person creation is also visible. There is no README, and the application entry point and some services were not sampled, so the initiating interface and broader runtime routing cannot be established from the available evidence.

Main entry points: [`app/database/db.py`](https://github.com/webdevl1on/project_2/blob/main/app/database/db.py) (Database session), [`app/services/person_event_service.py`](https://github.com/webdevl1on/project_2/blob/main/app/services/person_event_service.py) (Person-event service), [`app/models/event_type.py`](https://github.com/webdevl1on/project_2/blob/main/app/models/event_type.py) (Event-type model), [`app/database/init_db.py`](https://github.com/webdevl1on/project_2/blob/main/app/database/init_db.py) (Schema initializer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_services["Domain services"]
  node_person_service["Person service"]
  node_event_service["Person-event service"]
  node_event_checks["Event checks<br/>[check_events.py]"]
  node_person_event_checks["Person-event checks"]
  node_seed_all["Seed coordinator<br/>[seed_all.py]"]
  node_seed_types["Event-type seeder"]
  node_seed_subtypes["Subtype seeder"]
end

subgraph group_validation["Validation"]
  node_person_validator["Person validator"]
  node_event_validator["Event validator"]
end

subgraph group_schema["Data models"]
  node_person_model["Person model<br/>[person.py]"]
  node_person_event_model["Person-event model<br/>[person_event.py]"]
  node_event_type_model["Event-type model<br/>[event_type.py]"]
  node_event_subtype_model["Event-subtype model<br/>[event_subtype.py]"]
end

subgraph group_persistence["Persistence"]
  node_db_session[("Database session<br/>[db.py]")]
  node_db_init["Schema initializer<br/>[init_db.py]"]
end

node_caller(("Caller"))

node_caller -.->|"invokes"| node_person_service
node_caller -.->|"invokes"| node_event_service
node_person_service -->|"validates with"| node_person_validator
node_person_service -->|"creates"| node_person_model
node_person_service -->|"opens session"| node_db_session
node_event_service -->|"validates with"| node_event_validator
node_event_service -->|"queries"| node_person_model
node_event_service -->|"queries and creates"| node_person_event_model
node_event_service -->|"queries"| node_event_type_model
node_event_service -->|"queries"| node_event_subtype_model
node_event_service -->|"opens session"| node_db_session
node_event_checks -->|"queries"| node_db_session
node_event_checks -->|"checks"| node_event_type_model
node_person_event_checks -->|"queries"| node_db_session
node_person_event_checks -->|"checks"| node_person_event_model
node_seed_all -->|"runs"| node_seed_types
node_seed_all -->|"runs"| node_seed_subtypes
node_seed_types -->|"writes reference data"| node_db_session
node_seed_types -->|"creates"| node_event_type_model
node_seed_subtypes -->|"queries and writes"| node_db_session
node_seed_subtypes -->|"looks up"| node_event_type_model
node_seed_subtypes -->|"creates"| node_event_subtype_model
node_person_model -->|"uses base"| node_db_session
node_person_event_model -->|"uses base"| node_db_session
node_event_type_model -->|"uses base"| node_db_session
node_event_subtype_model -->|"uses base"| node_db_session
node_db_init -->|"creates tables"| node_db_session
node_db_init -->|"registers schema"| node_person_model
node_db_init -->|"registers schema"| node_person_event_model
node_db_init -->|"registers schema"| node_event_type_model
node_db_init -->|"registers schema"| node_event_subtype_model

click node_person_service "https://github.com/webdevl1on/project_2/blob/main/app/services/service_validator_person.py"
click node_event_service "https://github.com/webdevl1on/project_2/blob/main/app/services/person_event_service.py"
click node_event_checks "https://github.com/webdevl1on/project_2/blob/main/app/services/check_events.py"
click node_person_event_checks "https://github.com/webdevl1on/project_2/blob/main/app/services/check_person_events.py"
click node_seed_all "https://github.com/webdevl1on/project_2/blob/main/app/services/seed_all.py"
click node_seed_types "https://github.com/webdevl1on/project_2/blob/main/app/services/seed_event_types.py"
click node_seed_subtypes "https://github.com/webdevl1on/project_2/blob/main/app/services/seed_event_subtypes.py"
click node_person_validator "https://github.com/webdevl1on/project_2/blob/main/app/validators/person_validator.py"
click node_event_validator "https://github.com/webdevl1on/project_2/blob/main/app/validators/event_validatotor.py"
click node_person_model "https://github.com/webdevl1on/project_2/blob/main/app/models/person.py"
click node_person_event_model "https://github.com/webdevl1on/project_2/blob/main/app/models/person_event.py"
click node_event_type_model "https://github.com/webdevl1on/project_2/blob/main/app/models/event_type.py"
click node_event_subtype_model "https://github.com/webdevl1on/project_2/blob/main/app/models/event_subtype.py"
click node_db_session "https://github.com/webdevl1on/project_2/blob/main/app/database/db.py"
click node_db_init "https://github.com/webdevl1on/project_2/blob/main/app/database/init_db.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_person_service,node_event_service,node_event_checks,node_person_event_checks,node_seed_all,node_seed_types,node_seed_subtypes toneBlue
class node_person_validator,node_event_validator toneAmber
class node_person_model,node_person_event_model,node_event_type_model,node_event_subtype_model toneMint
class node_db_session,node_db_init toneRose
class node_caller toneIndigo
```

## Components

### Domain services

- [Person service](https://github.com/webdevl1on/project_2/blob/main/app/services/service_validator_person.py): `app/services/service_validator_person.py`
- [Person-event service](https://github.com/webdevl1on/project_2/blob/main/app/services/person_event_service.py): `app/services/person_event_service.py`
- [Event checks](https://github.com/webdevl1on/project_2/blob/main/app/services/check_events.py): `app/services/check_events.py`
- [Person-event checks](https://github.com/webdevl1on/project_2/blob/main/app/services/check_person_events.py): `app/services/check_person_events.py`
- [Seed coordinator](https://github.com/webdevl1on/project_2/blob/main/app/services/seed_all.py): `app/services/seed_all.py`
- [Event-type seeder](https://github.com/webdevl1on/project_2/blob/main/app/services/seed_event_types.py): `app/services/seed_event_types.py`
- [Subtype seeder](https://github.com/webdevl1on/project_2/blob/main/app/services/seed_event_subtypes.py): `app/services/seed_event_subtypes.py`

### Validation

- [Person validator](https://github.com/webdevl1on/project_2/blob/main/app/validators/person_validator.py): `app/validators/person_validator.py`
- [Event validator](https://github.com/webdevl1on/project_2/blob/main/app/validators/event_validatotor.py): `app/validators/event_validatotor.py`

### Data models

- [Person model](https://github.com/webdevl1on/project_2/blob/main/app/models/person.py): `app/models/person.py`
- [Person-event model](https://github.com/webdevl1on/project_2/blob/main/app/models/person_event.py): `app/models/person_event.py`
- [Event-type model](https://github.com/webdevl1on/project_2/blob/main/app/models/event_type.py): `app/models/event_type.py`
- [Event-subtype model](https://github.com/webdevl1on/project_2/blob/main/app/models/event_subtype.py): `app/models/event_subtype.py`

### Persistence

- [Database session](https://github.com/webdevl1on/project_2/blob/main/app/database/db.py): `app/database/db.py`
- [Schema initializer](https://github.com/webdevl1on/project_2/blob/main/app/database/init_db.py): `app/database/init_db.py`

### Other components

- **Caller**

## Connections

- Caller → Person service: invokes
- Caller → Person-event service: invokes
- Person service → Person validator: validates with (evidence: `app/services/service_validator_person.py`)
- Person service → Person model: creates (evidence: `app/services/service_validator_person.py`)
- Person service → Database session: opens session (evidence: `app/services/service_validator_person.py`)
- Person-event service → Event validator: validates with (evidence: `app/services/person_event_service.py`)
- Person-event service → Person model: queries (evidence: `app/services/person_event_service.py`)
- Person-event service → Person-event model: queries and creates (evidence: `app/services/person_event_service.py`)
- Person-event service → Event-type model: queries (evidence: `app/services/person_event_service.py`)
- Person-event service → Event-subtype model: queries (evidence: `app/services/person_event_service.py`)
- Person-event service → Database session: opens session (evidence: `app/services/person_event_service.py`)
- Event checks → Database session: queries (evidence: `app/services/check_events.py`)
- Event checks → Event-type model: checks (evidence: `app/services/check_events.py`)
- Person-event checks → Database session: queries (evidence: `app/services/check_person_events.py`)
- Person-event checks → Person-event model: checks (evidence: `app/services/check_person_events.py`)
- Seed coordinator → Event-type seeder: runs (evidence: `app/services/seed_all.py`)
- Seed coordinator → Subtype seeder: runs (evidence: `app/services/seed_all.py`)
- Event-type seeder → Database session: writes reference data (evidence: `app/services/seed_event_types.py`)
- Event-type seeder → Event-type model: creates (evidence: `app/services/seed_event_types.py`)
- Subtype seeder → Database session: queries and writes (evidence: `app/services/seed_event_subtypes.py`)
- Subtype seeder → Event-type model: looks up (evidence: `app/services/seed_event_subtypes.py`)
- Subtype seeder → Event-subtype model: creates (evidence: `app/services/seed_event_subtypes.py`)
- Person model → Database session: uses base (evidence: `app/models/person.py`)
- Person-event model → Database session: uses base (evidence: `app/models/person_event.py`)
- Event-type model → Database session: uses base (evidence: `app/models/event_type.py`)
- Event-subtype model → Database session: uses base (evidence: `app/models/event_subtype.py`)
- Schema initializer → Database session: creates tables (evidence: `app/database/init_db.py`)
- Schema initializer → Person model: registers schema (evidence: `app/database/init_db.py`)
- Schema initializer → Person-event model: registers schema (evidence: `app/database/init_db.py`)
- Schema initializer → Event-type model: registers schema (evidence: `app/database/init_db.py`)
- Schema initializer → Event-subtype model: registers schema (evidence: `app/database/init_db.py`)
