2.4 KiB
Data Model
The authoritative DDL is in schemas/database.sql. This document explains the domain model.
Core entities
User
Stores account, preferences, privacy settings, and default bikepacking profile.
Trip
A planned multi-day journey.
Fields:
- id,
- owner_id,
- title,
- start/end coordinates,
- date range,
- profile,
- status,
- created_at,
- updated_at.
Route
A route generated for a trip.
Fields:
- id,
- trip_id,
- provider,
- geometry,
- distance,
- ascent/descent,
- surface breakdown,
- access confidence,
- warnings.
Route segment
A normalized route chunk with scoring attributes.
Fields:
- geometry,
- distance,
- grade,
- surface,
- smoothness,
- highway class,
- access tags,
- risk scores,
- confidence.
Stage
A daily ride slice.
Fields:
- day_index,
- route_start_m,
- route_end_m,
- distance,
- ascent,
- estimated_time,
- endpoint,
- sleep candidates,
- warnings,
- Plan A/B.
POI
A point of interest for logistics.
Categories:
- water,
- food,
- sleep,
- repair,
- bailout,
- charging,
- emergency.
Service gap
A computed gap between relevant POIs along the route.
Fields:
- type,
- start_m,
- end_m,
- distance,
- severity,
- explanation.
Local report
A typed, dated user/local report.
Fields:
- report type,
- geometry/point,
- route segment optional,
- payload,
- trust score,
- expiry date,
- moderation status.
Rule card
A localized advisory card about riding/camping/access/fire/protected areas.
Fields:
- jurisdiction,
- rule type,
- summary,
- status,
- confidence,
- source URL,
- last reviewed,
- geometry.
Offline pack
A generated set of data for a trip.
Fields:
- trip,
- bbox,
- corridor buffer,
- included layers,
- version metadata,
- file references,
- status.
Important modeling choices
Route distance index
Store positions along a route as meters_from_start. This allows POIs, warnings, reports, and stage boundaries to attach to the route even when coordinates are simplified.
Confidence levels
Use a normalized enum:
known_good,high,medium,low,unknown,restricted,conflicting.
Warning severity
Use:
info,notice,warning,critical.
Report expiration
Most local reports should expire unless reconfirmed:
- water status: 30–90 days,
- closure: 7–60 days depending source,
- surface condition: 14–90 days,
- access/legal: reviewed manually,
- sleep hints: 90–365 days.