REST API for water polo club management — exercises, levels, and training data.
Go service using chi router with SQLite storage. Serves as the core data API for the aqua-os frontend and AI crews.
cmd/server/ → entrypoint
internal/ → handlers, models, database
data/ → SQLite database file
- Go 1.21+
- GCC (for SQLite CGO bindings)
make run
# or
go run ./cmd/serverServer starts on http://localhost:8080
| Variable | Description | Default |
|---|---|---|
PORT |
Server port | 8080 |
JWT_SECRET |
JWT signing key | — |
| Method | Path | Description |
|---|---|---|
| GET | /api/health |
Health check |
| GET | /api/levels |
List all levels |
| GET | /api/levels/{id} |
Get level by ID |
| POST | /api/exercises |
Create exercise |
| GET | /api/exercises |
List exercises |
| DELETE | /api/exercises/{id} |
Delete exercise |
docker build -t aqua-os-backend .
docker run -p 8080:8080 aqua-os-backend| Repo | Description |
|---|---|
| aqua-os-web | React frontend |
| aqua-os-crew | AI agents (CrewAI) |
| aqua-os-calendar | Game calendar service |
| aqua-os-infrastructure | Terraform AWS infra |
GPL-3.0
Prometheus metrics are available via the internal/metrics package. To enable, register the handler in your router:
import "aqua-os-backend/internal/metrics"
r.Handle("/metrics", metrics.Handler())Exposes http_requests_total and http_request_duration_seconds at /metrics.