docs: sync documentation with codebase
Some checks failed
CI / lint-and-test (push) Has been cancelled
Some checks failed
CI / lint-and-test (push) Has been cancelled
Fixes identified by doc-guardian audit: Critical fixes: - DATABASE_SCHEMA.md: Fix staging model name stg_police__crimes → stg_toronto__crime - DATABASE_SCHEMA.md: Update mart model names to match actual dbt models - CLAUDE.md: Fix errors/ description (no handlers module exists) - scripts/etl/toronto.sh: Fix parser module references to actual modules Stale fixes: - CONTRIBUTING.md: Add make typecheck, test-cov; fix make ci description - PROJECT_REFERENCE.md: Document services/, callback modules, all Makefile targets - CLAUDE.md: Expand Makefile commands, add plugin documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -50,9 +50,11 @@ The app runs at `http://localhost:8050`.
|
||||
|
||||
```bash
|
||||
make test # Run tests
|
||||
make test-cov # Run tests with coverage
|
||||
make lint # Check code style
|
||||
make format # Auto-format code
|
||||
make ci # Run all checks (lint + test)
|
||||
make typecheck # Run mypy type checker
|
||||
make ci # Run all checks (lint, typecheck, test)
|
||||
make dbt-run # Run dbt transformations
|
||||
make dbt-test # Run dbt tests
|
||||
```
|
||||
@@ -247,13 +249,23 @@ def layout(slug: str = "") -> dmc.Container:
|
||||
To add the page to the sidebar, edit `portfolio_app/components/sidebar.py`:
|
||||
|
||||
```python
|
||||
NAV_ITEMS = [
|
||||
{"label": "Home", "href": "/", "icon": "tabler:home"},
|
||||
{"label": "Your Page", "href": "/your-page", "icon": "tabler:star"},
|
||||
# For main pages (Home, About, Blog, etc.)
|
||||
NAV_ITEMS_MAIN = [
|
||||
{"path": "/", "icon": "tabler:home", "label": "Home"},
|
||||
{"path": "/your-page", "icon": "tabler:star", "label": "Your Page"},
|
||||
# ...
|
||||
]
|
||||
|
||||
# For project/dashboard pages
|
||||
NAV_ITEMS_PROJECTS = [
|
||||
{"path": "/projects", "icon": "tabler:folder", "label": "Projects"},
|
||||
{"path": "/your-dashboard", "icon": "tabler:chart-bar", "label": "Your Dashboard"},
|
||||
# ...
|
||||
]
|
||||
```
|
||||
|
||||
The sidebar uses icon buttons with tooltips. Each item needs `path`, `icon` (Tabler icon name), and `label` (tooltip text).
|
||||
|
||||
### URL Routing Summary
|
||||
|
||||
| File Location | URL |
|
||||
|
||||
@@ -136,7 +136,11 @@ Staging models provide 1:1 cleaned representations of source data:
|
||||
| `stg_toronto__neighbourhoods` | raw.neighbourhoods | Cleaned boundaries with standardized names |
|
||||
| `stg_toronto__census` | raw.census_profiles | Typed census metrics |
|
||||
| `stg_cmhc__rentals` | raw.cmhc_rentals | Validated rental data |
|
||||
| `stg_police__crimes` | raw.crime_data | Standardized crime categories |
|
||||
| `stg_toronto__crime` | raw.crime_data | Standardized crime categories |
|
||||
| `stg_toronto__amenities` | raw.amenities | Typed amenity counts |
|
||||
| `stg_dimensions__time` | generated | Time dimension |
|
||||
| `stg_dimensions__cmhc_zones` | raw.cmhc_zones | CMHC zone boundaries |
|
||||
| `stg_cmhc__zone_crosswalk` | raw.crosswalk | Zone-neighbourhood mapping |
|
||||
|
||||
### Marts Schema (dbt)
|
||||
|
||||
@@ -144,10 +148,12 @@ Analytical tables ready for dashboard consumption:
|
||||
|
||||
| Model | Grain | Purpose |
|
||||
|-------|-------|---------|
|
||||
| `mart_neighbourhood_summary` | neighbourhood | Composite livability scores |
|
||||
| `mart_rental_trends` | zone × month | Time-series rental analysis |
|
||||
| `mart_crime_rates` | neighbourhood × year | Crime rate calculations |
|
||||
| `mart_amenity_density` | neighbourhood | Amenity accessibility scores |
|
||||
| `mart_neighbourhood_overview` | neighbourhood | Composite livability scores |
|
||||
| `mart_neighbourhood_housing` | neighbourhood | Housing and rent metrics |
|
||||
| `mart_neighbourhood_safety` | neighbourhood × year | Crime rate calculations |
|
||||
| `mart_neighbourhood_demographics` | neighbourhood | Income, age, population metrics |
|
||||
| `mart_neighbourhood_amenities` | neighbourhood | Amenity accessibility scores |
|
||||
| `mart_toronto_rentals` | zone × month | Time-series rental analysis |
|
||||
|
||||
## Table Details
|
||||
|
||||
|
||||
@@ -91,12 +91,13 @@ portfolio_app/
|
||||
│ ├── dashboard.py
|
||||
│ ├── methodology.py
|
||||
│ ├── tabs/ # 5 tab layouts
|
||||
│ └── callbacks/ # Dashboard interactions
|
||||
│ └── callbacks/ # Dashboard interactions (map_callbacks, chart_callbacks, selection_callbacks)
|
||||
├── toronto/ # Data logic
|
||||
│ ├── parsers/ # API extraction
|
||||
│ ├── loaders/ # Database operations
|
||||
│ ├── parsers/ # API extraction (geo, toronto_open_data, toronto_police, cmhc)
|
||||
│ ├── loaders/ # Database operations (base, cmhc, cmhc_crosswalk)
|
||||
│ ├── schemas/ # Pydantic models
|
||||
│ ├── models/ # SQLAlchemy ORM
|
||||
│ ├── services/ # Query functions (neighbourhood_service, geometry_service)
|
||||
│ └── demo_data.py # Sample data
|
||||
└── utils/
|
||||
└── markdown_loader.py # Blog article loading
|
||||
@@ -241,16 +242,25 @@ LOG_LEVEL=INFO
|
||||
| Target | Purpose |
|
||||
|--------|---------|
|
||||
| `setup` | Install deps, create .env, init pre-commit |
|
||||
| `docker-up` | Start PostgreSQL + PostGIS |
|
||||
| `docker-up` | Start PostgreSQL + PostGIS (auto-detects x86/ARM) |
|
||||
| `docker-down` | Stop containers |
|
||||
| `docker-logs` | View container logs |
|
||||
| `db-init` | Initialize database schema |
|
||||
| `db-reset` | Drop and recreate database (DESTRUCTIVE) |
|
||||
| `load-data` | Load Toronto data from APIs, seed dev data |
|
||||
| `load-data-only` | Load Toronto data without dbt or seeding |
|
||||
| `seed-data` | Seed sample development data |
|
||||
| `run` | Start Dash dev server |
|
||||
| `test` | Run pytest |
|
||||
| `dbt-run` | Run dbt models |
|
||||
| `dbt-test` | Run dbt tests |
|
||||
| `test-cov` | Run pytest with coverage |
|
||||
| `lint` | Run ruff linter |
|
||||
| `format` | Run ruff formatter |
|
||||
| `ci` | Run all checks |
|
||||
| `typecheck` | Run mypy type checker |
|
||||
| `ci` | Run all checks (lint, typecheck, test) |
|
||||
| `dbt-run` | Run dbt models |
|
||||
| `dbt-test` | Run dbt tests |
|
||||
| `dbt-docs` | Generate and serve dbt documentation |
|
||||
| `clean` | Remove build artifacts and caches |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user