Skip to content

johnzastrow/actalog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

845 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ActaLog

A mobile-first fitness tracker for CrossFit enthusiasts to log workouts, track progress, and analyze performance.

Version Docker Image Go Version Vue.js License CI

ActaLog Logo

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

Videos - be sure to view the full playlist

Roadmap — Next priorities

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

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:latest

Run 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:latest

Run 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:latest

Open http://localhost:8080 — the first registered user automatically becomes admin.

See 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

    git clone https://github.com/johnzastrow/actalog.git
    cd actalog
  2. Set up environment variables

    cp .env.example .env
    # Edit .env with your configuration
  3. Install Go dependencies

    go mod download
  4. Install frontend dependencies

    cd web
    npm install
    cd ..
  5. Run the backend

    # Terminal 1
    make run
    # Or: go run cmd/actalog/main.go
  6. Run the frontend

    # Terminal 2
    cd web
    npm run dev
  7. Run tests

    # Backend tests
    make test
    
    # Frontend tests
    cd web
    npm run test:run        # Single run
    npm run test:coverage   # With coverage report
  8. 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 <your-token> (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.

License

This project is licensed under the MIT License - see the 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).

About

Fitness tracker for logging functional fitness workouts (Crossfit) (ad hoc and named), or just movements and metrics (weights, reps, times, distances) through manual entry.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

 
 
 

Contributors