OPEN SOURCE

BUILT FOR DEVELOPERS.

Self-host on your own infrastructure. Full control over your data. MIT licensed and ready to deploy.

ENGINEERED FOR SCALE

Built with production-grade architecture. Clean separation, comprehensive testing, multi-database support.

BACKEND
Go 1.23+ / Chi Router
FRONTEND
Vue.js 3 / Vuetify 3
DATABASE
SQLite / PostgreSQL / MySQL
ARCHITECTURE
Clean Architecture / DDD
DEPLOYMENT
Docker / GitHub Actions CI/CD
LICENSE
MIT - Fully Open Source
JWT Authentication
Clean Architecture Layers
Comprehensive Test Coverage
Database Migrations
Multi-Database Support
Production Docker Images
main.go
// Clean Architecture in action func main() { // Repository layer workoutRepo := repository.NewWorkoutRepository(db) // Service layer workoutSvc := service.NewWorkoutService(workoutRepo) // Handler layer handler.RegisterWorkoutRoutes(router, workoutSvc) }

DEPLOY IN MINUTES

terminal
# Clone the repository git clone https://github.com/johnzastrow/actalog.git cd actalog # Start with Docker Compose docker compose up -d # Or use the pre-built image docker pull ghcr.io/johnzastrow/actalog:latest

SQLITE

Zero configuration. Perfect for development and small deployments. Just set DB_DRIVER=sqlite3.

POSTGRESQL

Production recommended. Full-featured with excellent performance. Scales with your needs.

MYSQL/MARIADB

Full MySQL and MariaDB support. Use your existing infrastructure.

CLEAN ARCHITECTURE

Strict layer separation makes the codebase maintainable and testable. Each layer has a single responsibility.

DOMAIN LAYER

internal/domain/

Entities and repository interfaces. Zero external dependencies. The core of your business logic.

REPOSITORY LAYER

internal/repository/

Data access implementations. Database-agnostic interfaces allow swapping backends easily.

SERVICE LAYER

internal/service/

Business logic and use cases. Orchestrates repositories and enforces business rules.

HANDLER LAYER

internal/handler/

HTTP handlers and API endpoints. Input validation, response formatting, and error handling.

1.2.0
CURRENT VERSION
Beta Release
3
DATABASE ENGINES
SQLite / PostgreSQL / MySQL
0
% OPEN SOURCE
MIT Licensed

REST API

Well-documented REST API with JWT authentication. Build integrations, mobile apps, or custom dashboards.

AUTHENTICATION

JWT-based auth with refresh tokens. User registration, login, password reset, and email verification.

WORKOUTS

CRUD operations for workouts, templates, and movements. Automatic PR detection on create/update.

ANALYTICS

Performance endpoints for charts, PR history, movement stats, and workout summaries.

IMPORT/EXPORT

CSV import from Wodify. JSON export for all data. Full database backup and restore.

ADMIN

User management, announcements, audit logs, and subscription management endpoints.

WEBHOOKS

Notification system for PRs, achievements, and admin announcements. Extensible for integrations.

PERFORMANCE & BENCHMARKS

ActaLog is designed to run efficiently on minimal hardware. A small VPS can handle moderate load while delivering a responsive experience.

1
CPU Core
1 GB
RAM
25 GB
Storage

Tested on a Linode Nanode (shared 1 CPU, 1GB RAM, 25GB storage) with MariaDB

LOAD TEST RESULTS

50 concurrent users, 5-minute test duration

746
Requests/Second
65ms
p50 Latency
83ms
p95 Latency
99.98%
Success Rate

FRONTEND ASSETS

~920 KB
Total Bundle Size
~180ms
Total Load Time

Includes Vue.js, Vuetify, and all application code. Gzip compressed.

Run your own benchmarks with our open-source tool:

ACTALOG-BENCHMARK

READY TO SELF-HOST?

Clone the repo, run docker compose, and you're up in minutes.

License: MIT
Version: 1.2.1
Made with: Go + Vue.js