A mobile-first fitness tracker for CrossFit enthusiasts to log workouts, track progress, and analyze performance.
ActaLog is an open-source web application designed for CrossFit and Functional Fitness athletes to log workouts, track progress, and analyze performance over time. Built with Go on the backend and Vue.js on the frontend, ActaLog offers a responsive and user-friendly interface optimized for mobile devices.
See the primary website
- Overview
- Registering, Quicklog and User Menus
- Recording custom WODs: can be converted to WODs for all users
- Personal workouts to workouts for all users
See the Roadmap file ROADMAP.md for the current project status and next priorities.
For the full backlog and lower-priority items see TODO.md. For release history and completed features see CHANGELOG.md.
Docker images are published to GitHub Container Registry.
docker pull ghcr.io/johnzastrow/actalog:latest| Tag | Description |
|---|---|
latest |
Latest stable build |
v1.3.2 |
Current versioned release |
dev |
Development build |
Run with SQLite (simplest):
docker run -d -p 8080:8080 \
-v actalog-data:/app/data \
-e DB_DRIVER=sqlite3 -e DB_NAME=/app/data/actalog.db \
--name actalog \
ghcr.io/johnzastrow/actalog:latestRun with MariaDB/MySQL:
docker run -d -p 8080:8080 --network host \
-e DB_DRIVER=mysql -e DB_HOST=localhost -e DB_PORT=3306 \
-e DB_USER=actalog -e DB_PASSWORD=yourpassword -e DB_NAME=actalog \
ghcr.io/johnzastrow/actalog:latestRun with PostgreSQL:
docker run -d -p 8080:8080 --network host \
-e DB_DRIVER=postgres -e DB_HOST=localhost -e DB_PORT=5432 \
-e DB_USER=actalog -e DB_PASSWORD=yourpassword -e DB_NAME=actalog \
ghcr.io/johnzastrow/actalog:latestOpen http://localhost:8080 — the first registered user automatically becomes admin.
See docker/DOCKER.md for Docker Compose examples and full deployment docs.
- Go 1.25 or higher
- Node.js 18+ and npm
- Docker and Docker Compose (optional)
-
Clone the repository
git clone https://github.com/johnzastrow/actalog.git cd actalog -
Set up environment variables
cp .env.example .env # Edit .env with your configuration -
Install Go dependencies
go mod download
-
Install frontend dependencies
cd web npm install cd ..
-
Run the backend
# Terminal 1 make run # Or: go run cmd/actalog/main.go
-
Run the frontend
# Terminal 2 cd web npm run dev
-
Run tests
# Backend tests make test # Frontend tests cd web npm run test:run # Single run npm run test:coverage # With coverage report
-
Access the application
- Frontend:
http://localhost:3000 - Backend API:
http://localhost:8080 - API Health:
http://localhost:8080/health - API Documentation:
http://localhost:8080/api/docs/
- Frontend:
ActaLog provides interactive API documentation via Swagger UI, making it easy to explore and test all available endpoints.
Once the server is running, navigate to:
http://localhost:8080/api/docs/
- Interactive Documentation: Browse all 129 API operations across 105 endpoints
- Try It Out: Test endpoints directly from the browser
- Request/Response Examples: See expected request bodies and response formats
- Authentication Support: Authorize with JWT tokens to test protected endpoints
Most endpoints require JWT authentication. To use protected endpoints in Swagger UI:
- First, call
POST /api/auth/loginwith your credentials - Copy the
tokenfrom the response - Click the Authorize button (lock icon) at the top of the page
- Enter:
Bearer <your-token>(include the word "Bearer" followed by a space) - Click Authorize to apply the token to all requests
| Tag | Description |
|---|---|
auth |
Login, register, password reset, token management |
users |
User profile and settings |
workouts |
Workout logging and history |
movements |
Exercise/movement definitions |
wods |
Workout of the Day management |
templates |
Reusable workout templates |
performance |
Analytics and statistics |
prs |
Personal records tracking |
notifications |
User notifications |
sessions |
Session management |
subscriptions |
Subscription management |
organizations |
Organization management |
admin |
Admin-only operations |
import-export |
Data import/export (CSV, JSON) |
backups |
System backup/restore |
audit |
Audit logs |
- v1.3.0 introduces the admin user-edit screen with a four-layer defense for system-protected accounts. See
docs/security/PROTECTED_USERS.md. - v1.3.2 adds admin-side user creation, admin-set-password, and an operator break-glass CLI (
actalog admin force-edit-protected) for protected-user recovery. Seedocs/security/PROTECTED_USERS.md§9.
This project is licensed under the MIT License - see the LICENSE file for details.
For issues, questions, or feature requests, please open an issue on GitHub.
See the top-level Roadmap section for current status and next priorities (keeps a single authoritative roadmap in this README).
