Skip to content
asap-openPublic

About

A self-hosted, data-driven workout management and analytics platform for serious lifters who want to track, analyze, and optimize their training.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

ASAP

ASAP — Applied Strength & Advancement Platform

A self-hosted, data-driven workout management and analytics platform for serious lifters who want to track, analyze, and optimize their training.

Documentation · Installation · API Reference

Features

  • Smart Workout Tracking - Log sets, reps, and weights with precision
  • Progress Analytics - Visualize strength gains with comprehensive charts
  • Progressive Overload - Built-in insights to optimize training decisions
  • Exercise Library - Comprehensive database with custom exercise support
  • Body Weight Tracking - Monitor weight changes alongside performance
  • Self-Hosted - Full control over your training data

Tech Stack

Frontend

  • React 19 with TypeScript
  • Vite for fast development
  • Framer Motion for smooth UI transitions
  • TailwindCSS for styling
  • React Router v7 for navigation

Backend

  • Node.js with Express 5
  • TypeScript
  • Prisma ORM (v7)
  • PostgreSQL database
  • JWT authentication

Infrastructure

  • Docker & Docker Compose
  • Nginx reverse proxy
  • Multi-container architecture

Quick Start

Prerequisites

  • Docker & Docker Compose

Self-Hosted Deployment

All deployment files are in the deploy/ directory. See the Installation Guide for the full walkthrough.

1. Create a directory and download the files

mkdir asap && cd asap

# With bundled database:
curl -O https://raw.githubusercontent.com/asap-open/ASAP/main/deploy/compose.with-db.yaml
curl -O https://raw.githubusercontent.com/asap-open/ASAP/main/deploy/.env.with-db

# Or with your own external database:
curl -O https://raw.githubusercontent.com/asap-open/ASAP/main/deploy/compose.external-db.yaml
curl -O https://raw.githubusercontent.com/asap-open/ASAP/main/deploy/.env.external-db

2. Copy the env file, fill in your values, and start

cp .env.with-db .env          # or .env.external-db
# edit .env — set JWT_SECRET, DOMAIN_NAME, etc.
docker compose -f compose.with-db.yaml up -d

The app will be available at http://<your-host> (port 80).

Development Setup

  1. Clone the repository
git clone https://github.com/asap-open/ASAP.git
cd ASAP
  1. Set up environment variables

Create .env files in both client/ and server/ directories:

server/.env

DATABASE_URL="postgresql://postgres:postgres@db:5432/workout_db"
JWT_SECRET="your-super-secret-jwt-key-change-this"
PORT=3000
NODE_ENV=development

client/.env

VITE_BACKEND_SERVER_URL=http://localhost:3000
DOMAIN_NAME=localhost

How API routing works: The compiled JS always uses a relative /api path. Nginx inside the client container proxies those requests to VITE_BACKEND_SERVER_URL at runtime. Set this to the internal Docker/Kubernetes service name (e.g. http://server:3000), not a public hostname — the same image works across all environments without rebuilding.

  1. Start the application
docker-compose up -d
  1. Access the application

Development

Run without Docker

Backend

cd server
yarn install
yarn dev

Frontend

cd client
yarn install
yarn dev

Database Migrations

cd server
yarn prisma migrate dev

Seed Database

cd server
yarn seed

Project Structure

├── client/              # React frontend
│   ├── src/
│   │   ├── components/  # Reusable UI components
│   │   ├── pages/       # Page components
│   │   ├── context/     # React context providers
│   │   ├── layouts/     # Layout components
│   │   └── utils/       # Utilities and API client
│   └── Dockerfile
├── server/              # Express backend
│   ├── src/
│   │   ├── controllers/ # Route controllers
│   │   ├── routes/      # API routes
│   │   ├── middleware/  # Custom middleware
│   │   └── utils/       # Utilities
│   ├── prisma/          # Database schema & migrations
│   └── Dockerfile
├── docs/                # VitePress documentation
└── docker-compose.yaml  # Container orchestration

Documentation

Full documentation is available at the /docs directory. Build and serve locally:

cd docs
yarn install
yarn docs:dev

Visit http://localhost:5174 to view the documentation.

API Reference

Full API documentation is available at asap-open.github.io/asap-docs/api/authentication.

Key endpoints:

Method Endpoint Description
POST /api/auth/signup Register a new user
POST /api/auth/signin Sign in (email or username)
GET /api/exercises/search Search/filter exercises
POST /api/sessions Create workout session
GET /api/progress/heatmap Get workout activity heatmap by year
GET /api/progress/metrics Get KPI metrics (consistency, streak, volume)
GET /api/progress/volume Get volume & weight time-series chart data
GET /api/pbs Get personal bests
POST /api/weights Log body weight

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is licensed under the GPLv3 License — see LICENSE for details.


Built with precision for measurable improvement.

About

A self-hosted, data-driven workout management and analytics platform for serious lifters who want to track, analyze, and optimize their training.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors