# Performance Budgets ## API - health endpoint: < 200ms local - project list: < 500ms for 100 projects - dataset metadata: < 500ms after extraction - synchronous upload response: should register file quickly and hand off heavy work to job queue ## Raster - never load large rasters fully into memory for preview; - prefer windowed reads and overviews; - large tiling must run as background job. ## Vector - use spatial indexes for intersection/QA operations; - simplify only for display, not source-of-truth unless explicitly stored as derived layer. ## Frontend - initial app load should not require heavy GIS data; - map layers should be lazy-loaded; - large GeoJSON should be paged, tiled, or simplified. ## Jobs Long-running operations must have status transitions: `queued -> running -> succeeded|failed|cancelled`.