826 B
826 B
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.