Ctrl K
ComunidadGuías…

README.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# 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 <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.
- 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