# Backend Package Map Target backend layout: ```text backend/ app/ main.py api/ router.py routes/ health.py projects.py areas.py datasets.py raster.py vector.py analysis.py qaqc.py exports.py core/ config.py database.py logging.py security.py errors.py models/ project.py area.py dataset.py layer.py analysis.py detection.py segmentation.py quality.py export.py job.py event.py schemas/ common.py project.py area.py dataset.py analysis.py quality.py export.py services/ project_service.py area_service.py dataset_service.py raster_service.py vector_service.py grb_service.py detection_service.py segmentation_service.py qaqc_service.py export_service.py event_service.py workers/ queue.py jobs.py repositories/ base.py projects.py areas.py datasets.py analysis_runs.py scripts/ seed_demo.py tests/ ``` ## Rules - API routes should be thin. - Business logic belongs in services. - SQLAlchemy query composition belongs in repositories where useful. - Pydantic schemas are the API contract. - Models are persistence structures, not API response structures. - GIS processing functions must be testable outside HTTP handlers.