Real-time notification and community platform for live events.
Website: https://chaseapp.tv
ChaseApp delivers real-time alerts and enables community discussion around breaking events:
- Police Chases - Live pursuit tracking with real-time location updates
- Rocket Launches - Space launch notifications (SpaceX, NASA, etc.)
- Weather Events - Severe weather alerts and storm tracking
- Aircraft Tracking - Aviation monitoring with clustering detection
The platform consists of web, iOS, and Android applications backed by a self-hosted infrastructure designed for low-latency real-time updates.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Clients β
βββββββββββββββ¬ββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββ€
β Web App β iOS App β Android App β
β (Nuxt.js) β (Flutter) β (Flutter) β
ββββββββ¬βββββββ΄βββββββ¬βββββββ΄βββββββ¬βββββββββββββββββββββββββββββββ
β β β
βββββββββββββββΌββββββββββββββ
β HTTPS
βΌ
ββββββββββββββββ
β Kong β API Gateway
β (Ingress) β Auth, Rate Limiting
ββββββββ¬ββββββββ
β
βββββββββββββββΌββββββββββββββ
β β β
βΌ βΌ βΌ
ββββββββββββ ββββββββββββ ββββββββββββ
β API β β Chat β β Auth β
β (Go) β β (Go) β β (OAuth) β
ββββββ¬ββββββ ββββββ¬ββββββ ββββββββββββ
β β
ββββββββ¬βββββββ
β
ββββββββ΄βββββββ
β NATS β Event Bus
β (JetStream) β Real-time Messaging
ββββββββ¬βββββββ
β
βββββββββββββΌββββββββββββ¬ββββββββββββββββ
β β β β
βΌ βΌ βΌ βΌ
ββββββββββ βββββββββββ ββββββββββββ βββββββββ
βPostgreSQLβ βTypesenseβ β MinIO β β ntfy β
β (DB) β β (Search)β β(Storage) β β(Push) β
ββββββββββββ βββββββββββ ββββββββββββ βββββββββ
chaseapp/
βββ api/ # Go monolithic API server
β βββ cmd/server/ # Application entry point
β βββ internal/ # Private application code
β β βββ config/ # Configuration
β β βββ database/ # Database connection & migrations
β β βββ handler/ # HTTP handlers
β β βββ middleware/ # HTTP middleware
β β βββ model/ # Domain models
β β βββ repository/ # Data access layer
β βββ migrations/ # PostgreSQL migrations
β βββ pkg/ # Shared packages
βββ web/ # Nuxt.js web application
β βββ components/ # Vue components
β βββ pages/ # Route pages
β βββ plugins/ # Nuxt plugins
β βββ store/ # Vuex store
βββ mobile/ # Flutter mobile app (iOS & Android)
β βββ lib/ # Dart source code
β βββ ios/ # iOS-specific code
β βββ android/ # Android-specific code
βββ k8s/ # Kubernetes manifests
β βββ base/ # Base manifests
β βββ staging/ # Staging overlay
β βββ prod/ # Production overlay
βββ shared/ # Shared code/configs
βββ openspec/ # API specifications & change proposals
βββ tools/ # Build tools & scripts
| Component | Technology |
|---|---|
| Language | Go 1.21+ |
| HTTP Router | Gorilla Mux |
| Database | PostgreSQL 15+ (pgx driver) |
| Migrations | golang-migrate |
| Messaging | NATS JetStream |
| Search | Typesense |
| Object Storage | MinIO (S3-compatible) |
| Push Notifications | ntfy/Gotify + APNs + FCM |
| Component | Technology |
|---|---|
| Framework | Nuxt.js 2 (Bridge) + Vue.js |
| Language | TypeScript |
| Styling | TailwindCSS (WindiCSS) |
| State | Vuex |
| Maps | Mapbox GL JS |
| Real-time | NATS WebSocket |
| Component | Technology |
|---|---|
| Framework | Flutter 2.17+ |
| Language | Dart |
| State | Riverpod |
| Maps | Mapbox GL |
| Push | APNs/FCM direct |
| Payments | RevenueCat |
| Component | Technology |
|---|---|
| Build System | Bazel |
| Container Runtime | Docker |
| Orchestration | Kubernetes |
| Config Management | Kustomize |
| API Gateway | Kong |
| SSL | Let's Encrypt (cert-manager) |
| Observability | Prometheus + Grafana + Loki |
- Go 1.21+
- Node.js 18+ (via Volta)
- Flutter SDK 2.17+
- Docker & Docker Compose
- Bazel (optional, for full builds)
# Clone the repository
git clone https://github.com/carverauto/chaseapp.git
cd chaseapp
# Start infrastructure services
cd api
cp .env.example .env
docker-compose up -d postgres nats typesense
# Run database migrations
go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest
migrate -path migrations -database "postgres://chaseapp:chaseapp_dev@localhost:5432/chaseapp?sslmode=disable" up
# Start the API server
go run cmd/server/main.goAPI available at http://localhost:8080
cd web
npm install
npm run devWeb app available at http://localhost:3000
cd mobile
flutter pub get
flutter run| Method | Endpoint | Description |
|---|---|---|
| GET | /health |
Health check |
| GET | /ready |
Readiness check |
| GET | /metrics |
Prometheus metrics |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/chases |
List chases (paginated) |
| POST | /api/v1/chases |
Create chase |
| GET | /api/v1/chases/{id} |
Get chase |
| PUT | /api/v1/chases/{id} |
Update chase |
| DELETE | /api/v1/chases/{id} |
Delete chase |
| GET | /api/v1/chases/bundle |
Offline data bundle |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/aircraft |
List aircraft |
| POST | /api/v1/aircraft/cluster |
DBSCAN clustering |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1/push/subscribe |
Register device |
| POST | /api/v1/push/unsubscribe |
Unregister device |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/quakes |
USGS earthquake data |
| GET | /api/v1/launches |
Rocket launch data |
| GET | /api/v1/weather/alerts |
NOAA weather alerts |
| GET | /api/v1/boats |
AIS vessel data |
See api/.env.example for full configuration options.
Key variables:
# Server
SERVER_PORT=8080
# Database
DB_HOST=localhost
DB_PORT=5432
DB_USER=chaseapp
DB_PASSWORD=secret
DB_NAME=chaseapp
# NATS
NATS_URL=nats://localhost:4222
# Typesense
TYPESENSE_HOST=localhost
TYPESENSE_API_KEY=your_key# Build API image
docker build -t chaseapp-api ./api
# Run with Docker Compose
docker-compose up# Deploy to staging
kubectl apply -k k8s/staging
# Deploy to production
kubectl apply -k k8s/prodfeature/<description>- New featuresfix/<description>- Bug fixeschore/<description>- Maintenance tasks
- Go:
gofmt+golangci-lint - TypeScript: ESLint + Prettier
- Dart:
very_good_analysis
# Go tests
cd api && go test ./...
# Web tests
cd web && npm test
# Mobile tests
cd mobile && flutter testapi/README.md- API-specific documentationopenspec/- API specifications and change proposalsopenspec/project.md- Detailed project context
- Create a feature branch from
main - Make changes following code style guidelines
- Write/update tests as needed
- Submit a pull request
Proprietary - CarverAuto / ChaseApp