{"id":24910463,"url":"https://github.com/javascriptizer1/gymnote","last_synced_at":"2026-05-07T18:17:21.657Z","repository":{"id":273192419,"uuid":"918710793","full_name":"javascriptizer1/gymnote","owner":"javascriptizer1","description":"Gymnote Telegram Bot [Golang, Clickhouse, Redis, TgBotAPI]. Track your progress","archived":false,"fork":false,"pushed_at":"2025-04-05T14:35:31.000Z","size":44357,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-05T15:29:06.767Z","etag":null,"topics":["analytics","backend","bodybuilding","bot","clean-architecture","clickhouse","docker-compose","fitness-app","go","golang","gymnote","makefile","redis","telegram","telegram-bot","telegram-bot-api","training"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/javascriptizer1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-18T16:53:53.000Z","updated_at":"2025-04-05T14:35:35.000Z","dependencies_parsed_at":"2025-03-28T02:08:20.567Z","dependency_job_id":null,"html_url":"https://github.com/javascriptizer1/gymnote","commit_stats":null,"previous_names":["javascriptizer1/gymnote"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/javascriptizer1/gymnote","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javascriptizer1%2Fgymnote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javascriptizer1%2Fgymnote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javascriptizer1%2Fgymnote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javascriptizer1%2Fgymnote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/javascriptizer1","download_url":"https://codeload.github.com/javascriptizer1/gymnote/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/javascriptizer1%2Fgymnote/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260443686,"owners_count":23010064,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","backend","bodybuilding","bot","clean-architecture","clickhouse","docker-compose","fitness-app","go","golang","gymnote","makefile","redis","telegram","telegram-bot","telegram-bot-api","training"],"created_at":"2025-02-02T03:36:03.770Z","updated_at":"2026-05-07T18:17:21.642Z","avatar_url":"https://github.com/javascriptizer1.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏋️‍♂️ Gymnote - Telegram + VK Bot\n\nGymNote 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.\n\n\u003e 🆕 **VK Support Added!** Now you can use Gymnote in VK communities. Perfect for users in Russia where Telegram is blocked.\n\n## Features 🏋️‍♂️\n\n- **Workout Logging**: Easily record your exercises with sets, reps, and weights.\n- **Progress Tracking**: View statistics on past workouts.\n- **Exercise History**: Retrieve past logs to analyze your improvements.\n- **User-Friendly Commands**: Simple and efficient command structure.\n\n## Preview\n\n![Preview](/assets/screenshots/preview.gif)\n\n## Tech Stack ⚙️\n\n- **Language**: Go (Golang)\n- **Database**: ~~Clickhouse~~ Mongo\n- **Cache**: Redis\n- **Messaging APIs**: \n  - Telegram Bot API\n  - VK API (Long Poll)\n- **Hosting**: Deployed on VPS\n\n## Getting Started 🚀\n\n### Prerequisites\n\nEnsure you have the following installed on your system:\n\n- Go (1.23.5)\n- Docker \u0026 Docker Compose\n- Make\n\n### Setup Instructions\n\n1. **Environment Configuration**\n\n```bash\ncp .env.example .env\n```\n\n2. **Start Services with Docker Compose**\n\n```bash\nmake docker-up\n```\n\n3. **Run migrations** (deprecated)\n\n```bash\nmake migrate-up\n```\n\n4. **Run the Bot**\n\n```bash\nmake run\n```\n\n## Commands 📜\n\nAvailable in both Telegram and VK:\n\n- **/start** - Start the bot\n- **/help** - Show help\n- **/start_training** - Start a new training session\n- **/upload_training** - Upload a new training session\n- **/get_trainings** - View training history\n- **/get_exercise_progression** - View weight progression for an exercise\n- **/get_exercise_history** - View exercise history\n- **/create_exercise** - Create a new exercise (admin only)\n- **/clear_training** - Reset the current training session\n- **/one_rm** - Calculate one-rep max and percentages\n\n## In action 🚀\n\n### Start Training\n\n![Muscle Groups Screen](/assets/screenshots/start.png)\nKick 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.\n\n### Choose Your Exercise\n\n![Exercise Screen](/assets/screenshots/exercise.png)\nBrowse through a curated list of exercises tailored to your selected muscle group. From bench presses to squats, find the right move for your workout.\n\n### Log Your Sets\n\n![Set Screen](/assets/screenshots/set.png)\nEnter 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.\n\n### Finish Strong\n\n![Finish Screen](/assets/screenshots/finish.png)\nAt the end of your session, get a detailed summary of your workout. See how many exercises you completed, the total volume lifted, and more.\n\n### Track Your Progression\n\n![Progression Screen](/assets/screenshots/progression.jpg)\nMonitor your progress over time with detailed charts. GymNote helps you stay motivated by showing how far you've come in each exercise.\n\n### Training History\n\n![Trainings history](/assets/screenshots/history.png)\nAccess your complete training history. Review past workouts, analyze your performance, and plan your next session with confidence.\n\n## Deployment ⚙️\n\nThe bot is deployed on a **VPS** using Docker and managed via **systemd** for uptime reliability.\n\n### Multi-Platform Support\n\n- **Telegram \u0026 VK**: Both bots can run simultaneously\n- **Shared Database**: All data is stored in a common MongoDB instance\n- **Independent Operation**: Each bot can be enabled/disabled independently via environment variables\n\nThis architecture allows easy addition of new platforms (e.g., Discord, Slack) without changing business logic.\n\n## Contributing 🤝\n\nFeel free to open issues, submit pull requests, and improve GymNote together! If you like the project, give it a ⭐ on GitHub!\n\n---\n\nStay fit and keep logging your progress! 💪🔥\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavascriptizer1%2Fgymnote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjavascriptizer1%2Fgymnote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjavascriptizer1%2Fgymnote/lists"}