This repository represents a learning exercise in using the technologies listed below to build a ship location system that exposes AIS data sourced from aisstream.io via a websocket API using the following architecture:
Backend
APIs
Frontend
Observability
The result is a UI that allows you to search on either MMSI or ship name (utilizing fuzzy matching) and display the ships last known location on a map:
Create a .env
file in the root of this repo with the following content
# API key for websocket (get yours from https://aisstream.io/)
SHIPLOC_WEBSOCKETAPIKEY="YOUR-API-KEY"
# API key for Google Maps Javascript API (see https://developers.google.com/maps/documentation/javascript/get-api-key)
REACT_APP_GOOGLE_MAPS_API_KEY="YOUR-API-KEY"
The applications can then be started via Docker using:
docker compose up -d
Once started the following services will be available:
Name | URL | Login |
---|---|---|
Dashboard | http://localhost:3001 | - |
Grafana (metrics) | http://localhost:3002 | admin /admin |
Jaeger UI (tracing) | http://localhost:16686 | - |
pgAdmin (DB UI) | http://localhost:5050 | admin@admin.com /admin (and postgres for saved server configuration) |