ION Workout App Documentation

Your guide to all repositories and features

  • app (front‑end)
  • server (back‑end)
  • installers
  • data

app (front‑end) 💪

overview 🏋️‍♀️

ion workout app is a self‑hosted workout application built with kotlin that delivers an engaging, intuitive interface for managing your fitness journey. 🚀

features ✨

  • intuitive user interface
  • workout tracking & logging
  • scheduling & reminders
  • progress analytics
  • customizable routines
  • offline functionality

installation 🛠️

prerequisites: android studio, kotlin (configured within android studio), and a physical android device or an emulator.

  1. clone the repository:
    git clone https://github.com/ION-WorkoutApp/app.git
  2. open the project in android studio
  3. build & run the app

usage 📖

once installed, the app lets you log workouts, schedule sessions, review progress, and customize routines through a sleek interface. refer to the in‑app documentation or online docs for detailed instructions.

contributing & code of conduct 🤝📜

contributions are welcome! please review our contributing guidelines and code of conduct before contributing to ensure a respectful community.

license & contact ⚖️📬

licensed under the mit license. for more details, check the license file. for any questions or feedback, visit our repository or email [email protected].

server (back‑end) 🖥️

before you read 📖

make sure you wouldn't rather use one of the installers.

setup ⚙️

note: the default run command will attempt to run a cloudflared tunnel to forward the server. make sure this is set up first if you want this functionality.

  1. clone this repo
  2. create the env file (see the environment section below)
  3. run the following
    make run
    make fixPermissions
    make restart

why make fixPermissions? because mongodb does funny things with permissions and then can't read its own data directory.

environment 🛠️

create an env file in the base directory called .env with the following structure:

PORT=1221
SECRET_KEY=yourSecret
MONGO_URI=mongodb://yourUser:yourPassword@mongodb:27017/userDatabase?authSource=admin
MONGO_INITDB_ROOT_USERNAME=yourUser
MONGO_INITDB_ROOT_PASSWORD=yourPassword
MONGO_DATABASE=maindb
[email protected]
EMAIL_PASS=mysupersecurepassword1
[email protected]
EMAIL_SMTP_HOST=smtp.example.com
EMAIL_SMTP_PORT=465
DEBUGGING=true

reset the database 🔄

just run make resetLocal

credits 🙏

i couldn't get the default function to work for some reason, but credit to the blocked email list goes to disposable-email-detector, awesome tool!

installers 🛠️

overview

welcome to the ion workout app installers repository! this project provides two convenient ways to set up the ion workout app server:

  • cli installer 🔄: a command-line interface script for advanced users.
  • gui installer 🔧: a graphical interface with a friendly setup wizard.

features 🌐

  • environment setup: automatically configures environment variables in a .env file.
  • mongodb integration: supports username, password, and database setup.
  • docker image management: pulls necessary docker images.
  • custom credentials: optionally auto-generate secure passwords and keys.

prerequisites ⚙️

ensure the following software is installed:

  • git
  • docker & docker compose
  • python 3.x
  • cloudflared (optional)

for the gui installer, the python dependencies will be installed automatically.

cli installer 🔄

the cli installer is a bash script that guides you through the setup process via terminal prompts.

one‑line command to install and run

bash <(curl -s https://raw.githubusercontent.com/ION-WorkoutApp/installers/main/setup.sh)

what it does

  1. fetches the installer script from the repository.
  2. executes it directly in your terminal.

gui installer 🔧

the gui installer provides a user‑friendly interface for setting up the ion workout app server.

simply download and run the setup file.

development ⚖️

building the gui installer:

  1. clone the repository:
    git clone https://github.com/ION-WorkoutApp/installers.git
    cd installers
  2. create and activate a virtual environment:
    python3 -m venv venv
    source venv/bin/activate  # for linux/macos
    venv\Scripts\activate     # for windows
  3. install dependencies:
    pip install -r GUI/requirements.txt
  4. build the executable:
    pyinstaller --onefile --noconsole server_setup.py
    the executable will be created in the dist folder.
  5. deactivate the virtual environment (optional):
    deactivate

troubleshooting 🚫

  • docker not found: ensure docker is installed and running; verify docker compose compatibility.
  • python errors: ensure python 3.x is installed.

contributing ✨

contributions are welcome! feel free to submit issues or pull requests.

license 🔒

this project is licensed under the mit license.

data contribution guidelines 📊

guidelines

we welcome contributions to our comprehensive exercise dataset. please follow these guidelines to help maintain consistency and quality:

  1. formatting: submit your data in json or csv format with clearly defined fields.
  2. consistency: ensure that exercise names, categories, and descriptions follow the existing standards.
  3. validation: verify that your data is free of duplicates and errors by using a json validator or csv linter before submission.
  4. documentation: include a readme file with your submission explaining data sources and any transformations performed.
  5. licensing: all contributions must be compatible with the mit license used by the project.

if you have any questions, please open an issue on our github repository.

repository links

check out the following repositories for more details: