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