https://github.com/javascriptizer1/gymnote
Gymnote Telegram Bot [Golang, Clickhouse, Redis, TgBotAPI]. Track your progress
https://github.com/javascriptizer1/gymnote
analytics backend bodybuilding bot clean-architecture clickhouse docker-compose fitness-app go golang gymnote makefile redis telegram telegram-bot telegram-bot-api training
Last synced: 19 days ago
JSON representation
Gymnote Telegram Bot [Golang, Clickhouse, Redis, TgBotAPI]. Track your progress
- Host: GitHub
- URL: https://github.com/javascriptizer1/gymnote
- Owner: javascriptizer1
- Created: 2025-01-18T16:53:53.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-04-05T14:35:31.000Z (about 1 year ago)
- Last Synced: 2025-04-05T15:29:06.767Z (about 1 year ago)
- Topics: analytics, backend, bodybuilding, bot, clean-architecture, clickhouse, docker-compose, fitness-app, go, golang, gymnote, makefile, redis, telegram, telegram-bot, telegram-bot-api, training
- Language: Go
- Homepage:
- Size: 42.3 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ποΈββοΈ Gymnote - Telegram + VK Bot
GymNote is a workout tracking bot available for **Telegram** and **VK** (ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅). Designed to help users track their workout progress easily with simple commands and an intuitive interface. Log exercises, track progress over time, and stay consistent with your fitness goals.
> π **VK Support Added!** Now you can use Gymnote in VK communities. Perfect for users in Russia where Telegram is blocked.
## Features ποΈββοΈ
- **Workout Logging**: Easily record your exercises with sets, reps, and weights.
- **Progress Tracking**: View statistics on past workouts.
- **Exercise History**: Retrieve past logs to analyze your improvements.
- **User-Friendly Commands**: Simple and efficient command structure.
## Preview

## Tech Stack βοΈ
- **Language**: Go (Golang)
- **Database**: ~~Clickhouse~~ Mongo
- **Cache**: Redis
- **Messaging APIs**:
- Telegram Bot API
- VK API (Long Poll)
- **Hosting**: Deployed on VPS
## Getting Started π
### Prerequisites
Ensure you have the following installed on your system:
- Go (1.23.5)
- Docker & Docker Compose
- Make
### Setup Instructions
1. **Environment Configuration**
```bash
cp .env.example .env
```
2. **Start Services with Docker Compose**
```bash
make docker-up
```
3. **Run migrations** (deprecated)
```bash
make migrate-up
```
4. **Run the Bot**
```bash
make run
```
## Commands π
Available in both Telegram and VK:
- **/start** - Start the bot
- **/help** - Show help
- **/start_training** - Start a new training session
- **/upload_training** - Upload a new training session
- **/get_trainings** - View training history
- **/get_exercise_progression** - View weight progression for an exercise
- **/get_exercise_history** - View exercise history
- **/create_exercise** - Create a new exercise (admin only)
- **/clear_training** - Reset the current training session
- **/one_rm** - Calculate one-rep max and percentages
## In action π
### Start Training

Kick off your training session by choosing a muscle group. Whether it's chest, back, legs, or arms, GymNote guides you every step of the way.
### Choose Your Exercise

Browse through a curated list of exercises tailored to your selected muscle group. From bench presses to squats, find the right move for your workout.
### Log Your Sets

Enter your weight and reps for each set. GymNote also shows your exercise history, so you can easily pick the right weight and push your limits.
### Finish Strong

At the end of your session, get a detailed summary of your workout. See how many exercises you completed, the total volume lifted, and more.
### Track Your Progression

Monitor your progress over time with detailed charts. GymNote helps you stay motivated by showing how far you've come in each exercise.
### Training History

Access your complete training history. Review past workouts, analyze your performance, and plan your next session with confidence.
## Deployment βοΈ
The bot is deployed on a **VPS** using Docker and managed via **systemd** for uptime reliability.
### Multi-Platform Support
- **Telegram & VK**: Both bots can run simultaneously
- **Shared Database**: All data is stored in a common MongoDB instance
- **Independent Operation**: Each bot can be enabled/disabled independently via environment variables
This architecture allows easy addition of new platforms (e.g., Discord, Slack) without changing business logic.
## Contributing π€
Feel free to open issues, submit pull requests, and improve GymNote together! If you like the project, give it a β on GitHub!
---
Stay fit and keep logging your progress! πͺπ₯