52 lines
1.9 KiB
Markdown
52 lines
1.9 KiB
Markdown
# FR24 ingest compose skeleton
|
|
|
|
This directory contains the Docker Compose skeleton for the RTL-SDR ingest contour.
|
|
|
|
## Services
|
|
- `postgres` — PostgreSQL 16 + PostGIS, single source of truth for ingest and API
|
|
- `capture` — RTL-SDR access and `raw_packets` writer
|
|
- `preprocess` — normalization, flights/tracks/track_points builder, recovery
|
|
- `api` — reader for noisemap UI and future viewer endpoints
|
|
- `monitoring` — separate container for healthchecks, disk/DB/capture status, alerts
|
|
|
|
## Layout
|
|
- `../db/postgres` — PostgreSQL data directory
|
|
- `../db/init` — bootstrap SQL for extensions and schema
|
|
- `../ingest` — capture and preprocess implementation
|
|
- `../frontend` — API/viewer implementation
|
|
- `../logs/*` — service logs
|
|
- `../backup` — pg_dump / restore artifacts
|
|
|
|
## Architecture notes
|
|
- `raw_packets` stores binary payloads as base64 plus metadata: timestamp, frequency, RSSI, SNR, samplerate.
|
|
- Raw retention is 3 days.
|
|
- Raw data is partitioned by date.
|
|
- `capture` and `preprocess` are separate containers.
|
|
- `api` is included now so the ingest↔API contract is fixed early.
|
|
- The contract between ingest and API is the PostgreSQL schema itself: ingest writes tables, API reads the same tables.
|
|
|
|
## API / data contract
|
|
The API reads:
|
|
- `captures`
|
|
- `raw_packets`
|
|
- `aircraft`
|
|
- `flights`
|
|
- `track_points`
|
|
- `tracks`
|
|
- `processing_state`
|
|
- `noise_results`
|
|
|
|
Planned endpoints:
|
|
- `GET /health` — service status
|
|
- `GET /captures` — capture sessions
|
|
- `GET /aircraft` — aircraft list and search
|
|
- `GET /flights` — flights with filters
|
|
- `GET /tracks/{track_id}` — a single track with points
|
|
- `GET /noise-results` — noise polygons and summaries
|
|
- `GET /dashboard/status` — ingest / recovery / backlog status for UI
|
|
- `GET /viewer/config` — map/UI bootstrap metadata
|
|
|
|
## Notes
|
|
- No runtime is started from this repository during preparation.
|
|
- The stack expects a `.env` file copied from `.env.example` in this directory.
|