Open source · self-hosted

Gym management, reinvented.

A self-hosted web app for your gym. Members log workouts from their phone, even without signal, and follow their progress; trainers manage clients and plans; everyone gets chat, live crowd levels and a Telegram bot.

react node.js postgresql prisma docker

Everything your gym needs

A progressive web app that installs on the home screen, sends push notifications and updates itself.

🏋️

Workouts, even offline

A phone-first workout screen with rest timer, load suggestions that explain themselves, warm-up ramps and drop sets. Sets are saved on the phone and sync when the signal comes back.

📈

Progress you can trust

Muscles trained and recovering, exercise trends, estimated maxes, personal records, yearly activity and body composition. Warm-ups never inflate your volume.

🧑‍🏫

Personal trainers

Trainers manage clients, appointments, assigned plans, announcements and measurements. Members chat in real time with each other and with their trainer.

📍

Live gym crowd levels

A Playwright scraper reads Google Maps every 30 minutes, so the app can tell you how busy your gym is and when it is quieter.

🤖

Telegram bot and AI assistant

A grammY bot shows plans and stats and builds new plans step by step; a Gemini assistant knows your training history.

🔐

Secure and self-hosted

Passkeys or Argon2id passwords, rotating JWT refresh tokens, data export and account deletion. Runs on your own server with Docker Compose, and installs itself on every GitHub release.

Take a look around

A clean, unified UI for both web dashboard and mobile integrations.

login
Login page
Authentication & Login
dashboard-ai
Dashboard with AI bot
Dashboard with AI Assistant integration
training
Training Session
Active training session with video guides
telegram-bot
Telegram Bot
Integrated Telegram Bot for quick actions

Up and running locally

You need Docker with Compose and Node.js 22 to build the frontend.

# Clone the repository
git clone https://github.com/giosci1994/webapp-palestra.git
cd webapp-palestra

# Settings: change passwords, JWT secrets, APP_URL and ORIGINI_CONSENTITE
cp .env.example .env

# Build the frontend (nginx serves frontend/dist)
(cd frontend && npm ci && npm run build)

# Start database, backend and nginx (bot and scraper are optional)
docker compose up -d --build db redis backend nginx

Then open http://localhost:6969 and sign in with the admin account from .env. Full guide in the README.

Want to contribute?

Check out our issues page or submit a PR on GitHub.

Open an issue