# ActaLog > A mobile-first fitness tracker for CrossFit enthusiasts to log workouts, track progress, and analyze performance. [![Version](https://img.shields.io/badge/version-1.3.4-blue)](https://github.com/johnzastrow/actalog/blob/main/docs/CHANGELOG.md) [![Docker Image](https://img.shields.io/badge/Docker-ghcr.io%2Fjohnzastrow%2Factalog-2496ED?style=flat&logo=docker)](https://github.com/johnzastrow/actalog/pkgs/container/actalog) [![Go Version](https://img.shields.io/badge/Go-1.25+-00ADD8?style=flat&logo=go)](https://golang.org) [![Vue.js](https://img.shields.io/badge/Vue.js-3.x-4FC08D?style=flat&logo=vue.js)](https://vuejs.org) [![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![CI](https://github.com/johnzastrow/actalog/actions/workflows/ci.yml/badge.svg)](https://github.com/johnzastrow/actalog/actions/workflows/ci.yml) ![ActaLog Logo](docs/images/logo_sm.png) 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. ## Screenshots See the [primary website](https://johnzastrow.github.io/actalog/index.html) # Videos - be sure to view the full playlist * [Overview](https://www.youtube.com/embed/DfLPpVaMT2g?si=rj8rfLqS_XcnhPdi) * [Registering, Quicklog and User Menus](https://www.youtube.com/embed/aMaUYZQMWs0?si=KiUI6Gr28tpd-qRa) * [Recording custom WODs: can be converted to WODs for all users](https://www.youtube.com/embed/Tc_LFHwmTsI?si=WanjZu_8WkGfOf8r) * [Personal workouts to workouts for all users](https://www.youtube.com/embed/IW3manK6iHM?si=qhhh4BiHzcGeHNND) ## Roadmap — Next priorities See the Roadmap file [ROADMAP.md](docs/ROADMAP.md) for the current project status and next priorities. For the full backlog and lower-priority items see [TODO.md](docs/TODO.md). For release history and completed features see [CHANGELOG.md](docs/CHANGELOG.md). ## Docker Images Docker images are published to [GitHub Container Registry](https://github.com/johnzastrow/actalog/pkgs/container/actalog). ```bash docker pull ghcr.io/johnzastrow/actalog:latest ``` | Tag | Description | |-----|-------------| | `latest` | Latest stable build | | `v1.3.4` | Current versioned release | | `dev` | Development build | **Run with SQLite (simplest):** ```bash 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:latest ``` **Run with MariaDB/MySQL:** ```bash 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:latest ``` **Run with PostgreSQL:** ```bash 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:latest ``` Open [http://localhost:8080](http://localhost:8080) — the first registered user automatically becomes admin. See [docker/DOCKER.md](docker/DOCKER.md) for Docker Compose examples and full deployment docs. --- ## Quick Start (Local Development) ### Prerequisites - Go 1.25 or higher - Node.js 18+ and npm - Docker and Docker Compose (optional) ### Local Development 1. **Clone the repository** ```bash git clone https://github.com/johnzastrow/actalog.git cd actalog ``` 1. **Set up environment variables** ```bash cp .env.example .env # Edit .env with your configuration ``` 1. **Install Go dependencies** ```bash go mod download ``` 1. **Install frontend dependencies** ```bash cd web npm install cd .. ``` 1. **Run the backend** ```bash # Terminal 1 make run # Or: go run cmd/actalog/main.go ``` 1. **Run the frontend** ```bash # Terminal 2 cd web npm run dev ``` 1. **Run tests** ```bash # Backend tests make test # Frontend tests cd web npm run test:run # Single run npm run test:coverage # With coverage report ``` 1. **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/` ## API Documentation ActaLog provides interactive API documentation via Swagger UI, making it easy to explore and test all available endpoints. ### Accessing Swagger UI Once the server is running, navigate to: ``` http://localhost:8080/api/docs/ ``` ### Features - **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 ### Authentication Most endpoints require JWT authentication. To use protected endpoints in Swagger UI: 1. First, call `POST /api/auth/login` with your credentials 2. Copy the `token` from the response 3. Click the **Authorize** button (lock icon) at the top of the page 4. Enter: `Bearer ` (include the word "Bearer" followed by a space) 5. Click **Authorize** to apply the token to all requests ### Endpoint Categories | 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 | ## Security - 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. See `docs/security/PROTECTED_USERS.md` §9. - v1.3.3 is a maintenance release refreshing security-relevant dependencies (`golang.org/x/crypto`, `dompurify`) and hardening the CI toolchain. See `docs/CHANGELOG.md`. ## License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## Support 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). [imageLogoRef]: images/logo.png