76893bd114e582c3fe99f36c54f6f37f97c7597b
- Add strict configuration management (no fallbacks) - Create HTTP router with Chi and CORS middleware - Implement health check endpoint - Add main entry point with database initialization - Server runs on configurable host and port
Habit Tracker API
Self-hosted habit tracking service with a clean, hexagonal architecture.
Features
- Multiple habit types: Boolean (check), Counter, Value
- Flexible scheduling: Daily, Weekly, Monthly with specific days
- Carry-over support: Choose if incomplete habits persist or expire
- Full history tracking: Complete audit trail of all interactions
- Charts & Analytics: Heatmaps, line charts, and statistics
- Self-hosted first: Easy deployment with SQLite or PostgreSQL
Quick Start
Using the binary
- Download the latest release
- Copy
.env.exampleto.envand configure - Run:
./habit-tracker-api
The API will be available at http://localhost:8080
Development
Prerequisites
- Go 1.23+
- SQLite (or PostgreSQL)
Running locally
cp .env.example .env
go run cmd/api/main.go
API Documentation
Once running, visit http://localhost:8080/api/v1/docs for interactive API documentation.
Architecture
This project follows hexagonal (ports & adapters) architecture:
domain/: Core business logic and entitiesapplication/: Use cases (commands & queries)infrastructure/: External adapters (database, HTTP, etc.)shared/: Common utilities and errors
License
MIT
Languages
Go
99.5%
HTML
0.4%