This repository contains the data pipeline and clients used to track beach ramp access status (plus tide/water data) for Volusia County/New Smyrna Beach.
ramps/: Python ingester that polls the Volusia GIS endpoint and upserts ramp status into Postgres.svc/: Go web service (Echo) that serves ramp and tide APIs plus simple web views.BeachInfo/: UIKit iOS app that calls the hostedsvcAPIs.BeachLife/: SwiftUI iOS app (newer prototype) that calls the hostedsvcramp API.tidbyt/: Tidbyt/Pixlet app that renders ramp status for a Tidbyt display.rampfunc/: Archived DigitalOcean Functions experiment (not the active path).
Project-level documentation:
ramps: seeramps/README.mdsvc: seesvc/README.mdBeachInfo: seeBeachInfo/README.mdBeachLife: seeBeachLife/README.mdtidbyt: seetidbyt/README.md
ramps/main.pyfetches ramp statuses by known status buckets from Volusia GIS.ramps/main.pyupserts intorampstatusin Postgres.svcreads from Postgres and exposes JSON + HTML endpoints.- iOS apps and Tidbyt display consume the
svcendpoints.
Schema lives in ramps/migration.sql.
Primary table:
rampstatus(id, ramp_name, access_status, o_id, city, access_id, location)- Unique constraints on
o_idandaccess_id
Apply with your preferred Postgres workflow (for example, psql -f ramps/migration.sql).
Both ramps and svc rely on environment variables.
DATABASEDBUSERHOSTPASSWORDPORT(used by Python ingester)DBPORT(used by Go service)GISHOST(used byramps, for Volusia ArcGIS host)
The existing Makefiles expect an env file in each project directory (ramps/env, svc/env) that exports variables.
cd /Users/donwb/dev/beach/ramps
makeNotes:
makerunspython3 main.py- Intended production usage is cron-driven (see
ramps/readme.md)
cd /Users/donwb/dev/beach/svc
makeThis starts Echo on :1323.
Useful endpoints:
GET /rampstatusJSON ramp payloadGET /tidesJSON tide + water temperature payloadGET /rampsplain text ramp summaryGET /current HTML page (new.html)GET /oldlegacy HTML page (home.html)GET /trmnlTRMNL-specific HTML page
cd /Users/donwb/dev/beach/svc
make docker-build
make docker-runRelease automation is in svc/release.sh and versions are tracked in svc/VERSION.
- Storyboard-based iOS app.
- Calls:
https://sea-lion-app-lif8v.ondigitalocean.app/rampstatushttps://sea-lion-app-lif8v.ondigitalocean.app/tides
- Displays ramp lights, tide direction/percentage, water temperatures, and a tower cam image.
- Details:
BeachInfo/README.md
- SwiftUI prototype app.
- Calls:
https://sea-lion-app-lif8v.ondigitalocean.app/rampstatus
- Displays ramp statuses with color indicators and manual refresh.
- Details:
BeachLife/README.md
main.staris the Pixlet program.- Fetches
rampstatus(and currently also requeststides) from the hosted service. - Maps ramp states to display colors for a compact dashboard view.
- Details:
tidbyt/README.md
rampfunc/ is an older DigitalOcean Functions implementation of the ingester logic. Keep as historical reference; active ingestion is in ramps/.
- Standardize DB port naming (
PORTvsDBPORT). - Move hard-coded hosted API URLs in iOS/Tidbyt to configuration.
- Add a project README for archived
rampfunc/if it needs to be kept long term.