# blackpearl1411/france_property architecture

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

## Overview

France Property Insight is a Gradio application for exploring French property transactions and estimating property values. Users enter through the app shell, then browse dashboard summaries, filtered market analysis, or an interactive map; for valuation, they submit property details to a prediction API backed by a trained model. Data preparation, validation, and modeling form supporting internal layers. The README documents financing simulation and data conversion/migration capabilities. Some data-pipeline internals and analysis relationships are unsampled, so the graph omits unverified links.

Main entry points: [`fpi/interface/dashboard/dashboard_page.py`](https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/dashboard/dashboard_page.py) (Dashboard page), [`fpi/interface/prediction/prediction_page.py`](https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/prediction/prediction_page.py) (Estimation page), [`fpi/interface/prediction/form.py`](https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/prediction/form.py) (Property form), [`fpi/interface/menu.py`](https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/menu.py) (Navigation shell)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application UI"]
  node_entry["App entry<br/>[main.py]"]
  node_navigation["Navigation shell<br/>[menu.py]"]
  node_home["Home page<br/>[home_page.py]"]
  node_dashboard["Dashboard page<br/>[dashboard_page.py]"]
  node_form["Property form<br/>[form.py]"]
  node_predictionpage["Estimation page<br/>[prediction_page.py]"]
end

subgraph group_data["Property Data"]
  node_cleaning["Data cleaning<br/>[clean_data.py]"]
  node_schemas["Data schemas<br/>[schemas.py]"]
  node_processing["Data processing<br/>[process_data.py]"]
  node_conversion["SQLite conversion<br/>[txt_to_sqlite.py]"]
  node_migration["SQL migration<br/>[migrate_to_sql.py]"]
  node_loader["Clean data loader<br/>[loader.py]"]
end

subgraph group_insights["Market Insights"]
  node_market["Market analysis<br/>[market_analysis.py]"]
  node_overview["Overview analytics<br/>[dashboard.py]"]
  node_plots["Trend plots<br/>[plots.py]"]
  node_explorer["Market explorer<br/>[market_explorer.py]"]
  node_overviewtab["Overview graphs<br/>[overview_graphs.py]"]
end

subgraph group_valuation["Valuation"]
  node_finance["Financing simulation<br/>[market_analysis.py]"]
  node_modelbuild["Model training"]
  node_linearbuild["Linear training"]
  node_prediction["Model prediction<br/>[predict.py]"]
end

subgraph group_platform["Geospatial and API"]
  node_api["Prediction API<br/>[api_predict.py]"]
  node_mapping["Interactive map<br/>[map.py]"]
  node_geocoding["Address geocoding<br/>[geocoding.py]"]
end

node_user(("Property user"))

node_user -.->|"opens app"| node_entry
node_entry -->|"builds interface"| node_navigation
node_entry -->|"mounts API"| node_api
node_navigation -->|"renders page"| node_home
node_navigation -->|"renders page"| node_dashboard
node_navigation -->|"renders page"| node_predictionpage
node_cleaning -->|"validates with"| node_schemas
node_user -.->|"enters details"| node_form
node_form -->|"gets locations"| node_market
node_form -->|"loads choices"| node_loader
node_dashboard -->|"loads transactions"| node_loader
node_dashboard -->|"requests summaries"| node_overview
node_dashboard -->|"renders explorer"| node_explorer
node_dashboard -->|"renders graphs"| node_overviewtab
node_dashboard -->|"renders map"| node_mapping
node_explorer -->|"computes analysis"| node_market
node_explorer -->|"reuses form"| node_form
node_overviewtab -->|"loads transactions"| node_loader
node_predictionpage -->|"builds inputs"| node_form
node_predictionpage -->|"loads transactions"| node_loader
node_predictionpage -->|"posts estimate"| node_api
node_predictionpage -->|"runs simulation"| node_finance
node_api -->|"validates request"| node_schemas
node_api -->|"requests price"| node_prediction
node_mapping -->|"geocodes addresses"| node_geocoding
node_user -.->|"explores market"| node_dashboard
node_user -.->|"requests estimate"| node_predictionpage

click node_entry "https://github.com/blackpearl1411/france_property/blob/main/fpi/main.py"
click node_navigation "https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/menu.py"
click node_home "https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/home/home_page.py"
click node_dashboard "https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/dashboard/dashboard_page.py"
click node_form "https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/prediction/form.py"
click node_cleaning "https://github.com/blackpearl1411/france_property/blob/main/fpi/data_pipeline/clean_data.py"
click node_schemas "https://github.com/blackpearl1411/france_property/blob/main/fpi/data_pipeline/schemas.py"
click node_processing "https://github.com/blackpearl1411/france_property/blob/main/fpi/data_pipeline/process_data.py"
click node_conversion "https://github.com/blackpearl1411/france_property/blob/main/fpi/data_pipeline/txt_to_sqlite.py"
click node_migration "https://github.com/blackpearl1411/france_property/blob/main/fpi/data_pipeline/migrate_to_sql.py"
click node_loader "https://github.com/blackpearl1411/france_property/blob/main/fpi/data_pipeline/loader.py"
click node_market "https://github.com/blackpearl1411/france_property/blob/main/fpi/analysis/market_analysis.py"
click node_overview "https://github.com/blackpearl1411/france_property/blob/main/fpi/analysis/dashboard.py"
click node_plots "https://github.com/blackpearl1411/france_property/blob/main/fpi/analysis/plots.py"
click node_explorer "https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/dashboard/market_explorer.py"
click node_overviewtab "https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/dashboard/overview_graphs.py"
click node_finance "https://github.com/blackpearl1411/france_property/blob/main/fpi/analysis/market_analysis.py"
click node_modelbuild "https://github.com/blackpearl1411/france_property/blob/main/fpi/models/build_random_forest.py"
click node_linearbuild "https://github.com/blackpearl1411/france_property/blob/main/fpi/models/build_linear_model.py"
click node_prediction "https://github.com/blackpearl1411/france_property/blob/main/fpi/models/predict.py"
click node_predictionpage "https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/prediction/prediction_page.py"
click node_api "https://github.com/blackpearl1411/france_property/blob/main/fpi/routes/api_predict.py"
click node_mapping "https://github.com/blackpearl1411/france_property/blob/main/fpi/map_config/map.py"
click node_geocoding "https://github.com/blackpearl1411/france_property/blob/main/fpi/map_config/geocoding.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_entry,node_navigation,node_home,node_dashboard,node_form,node_predictionpage,node_user toneBlue
class node_cleaning,node_schemas,node_processing,node_conversion,node_migration,node_loader toneAmber
class node_market,node_overview,node_plots,node_explorer,node_overviewtab toneMint
class node_finance,node_modelbuild,node_linearbuild,node_prediction toneRose
class node_api,node_mapping,node_geocoding toneIndigo
```

## Components

### Application UI

- [App entry](https://github.com/blackpearl1411/france_property/blob/main/fpi/main.py): `fpi/main.py`
- [Navigation shell](https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/menu.py): `fpi/interface/menu.py`
- [Home page](https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/home/home_page.py): `fpi/interface/home/home_page.py`
- [Dashboard page](https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/dashboard/dashboard_page.py): `fpi/interface/dashboard/dashboard_page.py`
- [Property form](https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/prediction/form.py): `fpi/interface/prediction/form.py`
- [Estimation page](https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/prediction/prediction_page.py): `fpi/interface/prediction/prediction_page.py`

### Property Data

- [Data cleaning](https://github.com/blackpearl1411/france_property/blob/main/fpi/data_pipeline/clean_data.py): `fpi/data_pipeline/clean_data.py`
- [Data schemas](https://github.com/blackpearl1411/france_property/blob/main/fpi/data_pipeline/schemas.py): `fpi/data_pipeline/schemas.py`
- [Data processing](https://github.com/blackpearl1411/france_property/blob/main/fpi/data_pipeline/process_data.py): `fpi/data_pipeline/process_data.py`
- [SQLite conversion](https://github.com/blackpearl1411/france_property/blob/main/fpi/data_pipeline/txt_to_sqlite.py): `fpi/data_pipeline/txt_to_sqlite.py`
- [SQL migration](https://github.com/blackpearl1411/france_property/blob/main/fpi/data_pipeline/migrate_to_sql.py): `fpi/data_pipeline/migrate_to_sql.py`
- [Clean data loader](https://github.com/blackpearl1411/france_property/blob/main/fpi/data_pipeline/loader.py): `fpi/data_pipeline/loader.py`

### Market Insights

- [Market analysis](https://github.com/blackpearl1411/france_property/blob/main/fpi/analysis/market_analysis.py): `fpi/analysis/market_analysis.py`
- [Overview analytics](https://github.com/blackpearl1411/france_property/blob/main/fpi/analysis/dashboard.py): `fpi/analysis/dashboard.py`
- [Trend plots](https://github.com/blackpearl1411/france_property/blob/main/fpi/analysis/plots.py): `fpi/analysis/plots.py`
- [Market explorer](https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/dashboard/market_explorer.py): `fpi/interface/dashboard/market_explorer.py`
- [Overview graphs](https://github.com/blackpearl1411/france_property/blob/main/fpi/interface/dashboard/overview_graphs.py): `fpi/interface/dashboard/overview_graphs.py`

### Valuation

- [Financing simulation](https://github.com/blackpearl1411/france_property/blob/main/fpi/analysis/market_analysis.py): `fpi/analysis/market_analysis.py`
- [Model training](https://github.com/blackpearl1411/france_property/blob/main/fpi/models/build_random_forest.py): `fpi/models/build_random_forest.py`
- [Linear training](https://github.com/blackpearl1411/france_property/blob/main/fpi/models/build_linear_model.py): `fpi/models/build_linear_model.py`
- [Model prediction](https://github.com/blackpearl1411/france_property/blob/main/fpi/models/predict.py): `fpi/models/predict.py`

### Geospatial and API

- [Prediction API](https://github.com/blackpearl1411/france_property/blob/main/fpi/routes/api_predict.py): `fpi/routes/api_predict.py`
- [Interactive map](https://github.com/blackpearl1411/france_property/blob/main/fpi/map_config/map.py): `fpi/map_config/map.py`
- [Address geocoding](https://github.com/blackpearl1411/france_property/blob/main/fpi/map_config/geocoding.py): `fpi/map_config/geocoding.py`

### Other components

- **Property user**

## Connections

- Property user → App entry: opens app (evidence: `README.md`)
- App entry → Navigation shell: builds interface (evidence: `fpi/main.py`)
- App entry → Prediction API: mounts API (evidence: `fpi/main.py`)
- Navigation shell → Home page: renders page (evidence: `fpi/interface/menu.py`)
- Navigation shell → Dashboard page: renders page (evidence: `fpi/interface/menu.py`)
- Navigation shell → Estimation page: renders page (evidence: `fpi/interface/menu.py`)
- Data cleaning → Data schemas: validates with (evidence: `fpi/data_pipeline/clean_data.py`)
- Property user → Property form: enters details (evidence: `fpi/interface/prediction/form.py`)
- Property form → Market analysis: gets locations (evidence: `fpi/interface/prediction/form.py`)
- Property form → Clean data loader: loads choices (evidence: `fpi/interface/prediction/form.py`)
- Dashboard page → Clean data loader: loads transactions (evidence: `fpi/interface/dashboard/dashboard_page.py`)
- Dashboard page → Overview analytics: requests summaries (evidence: `fpi/interface/dashboard/dashboard_page.py`)
- Dashboard page → Market explorer: renders explorer (evidence: `fpi/interface/dashboard/dashboard_page.py`)
- Dashboard page → Overview graphs: renders graphs (evidence: `fpi/interface/dashboard/dashboard_page.py`)
- Dashboard page → Interactive map: renders map (evidence: `fpi/interface/dashboard/dashboard_page.py`)
- Market explorer → Market analysis: computes analysis (evidence: `fpi/interface/dashboard/market_explorer.py`)
- Market explorer → Property form: reuses form (evidence: `fpi/interface/dashboard/market_explorer.py`)
- Overview graphs → Clean data loader: loads transactions (evidence: `fpi/interface/dashboard/overview_graphs.py`)
- Estimation page → Property form: builds inputs (evidence: `fpi/interface/prediction/prediction_page.py`)
- Estimation page → Clean data loader: loads transactions (evidence: `fpi/interface/prediction/prediction_page.py`)
- Estimation page → Prediction API: posts estimate (evidence: `fpi/interface/prediction/prediction_page.py`)
- Estimation page → Financing simulation: runs simulation (evidence: `fpi/interface/prediction/prediction_page.py`)
- Prediction API → Data schemas: validates request (evidence: `fpi/routes/api_predict.py`)
- Prediction API → Model prediction: requests price (evidence: `fpi/routes/api_predict.py`)
- Interactive map → Address geocoding: geocodes addresses (evidence: `fpi/map_config/map.py`)
- Property user → Dashboard page: explores market (evidence: `README.md`)
- Property user → Estimation page: requests estimate (evidence: `README.md`)
