Rotazioni: a linear programming workout split optimizer

Overview

Rotazioni: a linear programming workout split optimizer

Application screenshot

Dependencies

Dependencies for the frontend and backend are respectively listed in client/package.json and api/requirements.txt.
A self-contained docker installation is provided.

Deployment (Docker)

Make sure you have a docker service running on your machine.
Then run ./build_prod.sh && ./deploy_prod.sh to create and launch the docker container. The backend will be listening port 5000, while the frontend will be available through port 80.

Pull Requests

If you want to contribute to the project, you can do so by solving one of the many open issues or by creating new ones.
When proposing a pull request, make sure you do so on the production branch, so that when merged, the change will trigger the CI/CD pipeline.

Notes on localization

Rotazioni has been developed for an italian public, since it solves a very specific problem only found in a very specific italian community. Therefore there are currently no plans of internationalizing the product. Neverthless, if anyone wants to translate it and provide an easy internationalization setup, he's welcome to do it.

Comments
  • Implement input validation

    Implement input validation

    As of now, there is no input validation implemented. A possibly incomplete list of validation requirements is as follows:

    • All currently implemented textfields should be validated as non-negative integer inputs and should not be empty

    • The length of the microcycle should not exceed 30 days and should be a multiple of 7 days

    • The number of rest days should not exceed the length of the microcycle

    • The given maximum value of consecutive workouts should no exceed the length of the microcycle

    • The given maximum value of consecutive rest days should no exceed the length of the microcycle

    • Each rotation input should be an integer in the interval [0, 3]

    • Other inputs' constraints are implicitly enforced by the optimization procedure, so there is no need to manually specify them.

    Input validation should be performed prior to split generation and its outcome should be communicated to the user somehow

    enhancement 
    opened by crybot 1
  • Find a way to manipulate single table cells

    Find a way to manipulate single table cells

    It would be nice to be able to manually change the value of a given cell and make it a fixed constraint for the split generation. Note: a single cell can include more than one muscle group, so this use case should be taken into consideration when changing a cell's value

    enhancement 
    opened by crybot 1
  • Move to react-to-print for better pdf generation

    Move to react-to-print for better pdf generation

    Instead of using react-to-pdf, which generates a non-vectorized copy of a given React component, react-to-print allows to use the browser printing capabilities to export a well formed pdf.

    opened by crybot 0
  • fix papers not darkened in backdrop and some warnings fixes

    fix papers not darkened in backdrop and some warnings fixes

    I fixed the papers which weren't darkened in backdrop when the circular progress is open. I also fixed some warnings such as:

    • replacing some var with let and const
    • remove unused items
    opened by frankplus 0
  • Introduce

    Introduce "Richiami"

    Add the option to select the number of "richiami" to be added to the training split for each muscle group. Also, find a suitable english translation for the italian word "richiami".

    enhancement 
    opened by crybot 0
  • add docker compose

    add docker compose

    Hi there! ho added docker compose for an easy deploy. I have moved the frontend in the client directory and the backend in the api directory. See deployment instructions in README

    opened by frankplus 0
  • Transition to a more robust state management system

    Transition to a more robust state management system

    The current way of managing components' state flow is hacky at best. A more robust way of sharing state and values among components is required to make the application more scalable, efficient and extendable. Valid options include Formik and React-Redux.

    enhancement 
    opened by crybot 0
Releases(v1.1.0)
  • v1.1.0(Jun 23, 2021)

    This minor release of Rotazioni introduces:

    • Richiami: you can manually add and remove Richiami to the split, enforcing new constraints on the optimization procedure
    • Switchable dark mode: you can choose between light (default) and dark theme by clicking the upmost button on the left of the page. This preference is remembered for future uses
    • Minor UI/UX changes
    • Internal API changes
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Jun 19, 2021)

Owner
Marco
Artificial Intelligence graduate student at the University of Pisa. Software engineer at Consorzio Metis. Author of the Napoleon chess engine.
Marco
Random pass word generator made with python. PyQt5 module is used to design GUI.

Differences in this GUI program : Default titlebar removed Custom Minimize,Maximize and Close Buttons Drag & move window from any point Program work l

Dimuth De Zoysa 1 Jan 26, 2022
Random Turkish name generator with realistic probabilities.

trnames Random Turkish name generator with realistic probabilities. Based on Trey Hunner's names package. Installation The package can be installed us

Kaan Öztürk 20 Jan 02, 2023
Replite - An embeddable REPL powered by JupyterLite

replite An embeddable REPL, powered by JupyterLite. Usage To embed the code cons

Jeremy Tuloup 47 Nov 09, 2022
Fofa asset consolidation script

资产收集+C段整理二合一 基于fofa资产搜索引擎进行资产收集,快速检索目标条件下的IP,URL以及标题,适用于资产较多时对模糊资产的快速检索,新增C段整理功能,整理出

白泽Sec安全实验室 36 Dec 01, 2022
Collie is for uncovering RDMA NIC performance anomalies

Collie is for uncovering RDMA NIC performance anomalies. Overview Prerequ

Bytedance Inc. 34 Dec 11, 2022
This program can calculate the Aerial Distance between two cities.

Aerial_Distance_Calculator This program can calculate the Aerial Distance between two cities. This repository include both Jupyter notebook and Python

InvisiblePro 1 Apr 08, 2022
Print 'text color' and 'text format' on Term with Python

term-printer Print 'text color' and 'text format' on Term with Python ※ It may not work depending on the OS and shell used. PIP $ pip install term-pri

ななといつ 10 Nov 12, 2022
LanguageCreator - Simple library for easy creation transpilator.

LanguageCreator - Simple library for easy creation transpilator. Create transpilators in one hour! Install. Download code, rename folder to "LanguageC

Ivan Perzhinsky. 2 Dec 31, 2021
Курс про техническое совершенство для нетехнарей

Technical Excellence 101 Курс про техническое совершенство для нетехнарей. Этот курс представлят из себя серию воркшопов, при помощи которых можно объ

Anton Bevzuk 11 Nov 13, 2022
Python AVL Protocols Server for Codec 8 and Codec 8 Extended Protocols

pycodecs Package provides python AVL Protocols Server for Codec 8 and Codec 8 Extended Protocols This package will parse the AVL Data and log it in hu

Vardharajulu K N 2 Jun 21, 2022
Example teacher bot for deployment to Chai app.

Create and share your own chatbot Here is the code for uploading the popular "Ms Harris (Teacher)" chatbot to the Chai app. You can tweak the config t

Chai 1 Jan 10, 2022
Ant Colony Optimization for Traveling Salesman Problem

tsp-aco Ant Colony Optimization for Traveling Salesman Problem Dependencies Python 3.8 tqdm numpy matplotlib To run the solver run main.py from the p

Baha Eren YALDIZ 4 Feb 03, 2022
Project in which we modelise an Among Us problem using graph theories.

Python-AmongUsProblem Project in which we modelise an Among Us problem using graph theories. The rules are as following: Total of 100 players 10 playe

Gabriel Shenouda 1 Feb 09, 2022
Ingest openldap data into bloodhound

Bloodhound for Linux Ingest a dumped OpenLDAP ldif into neo4j to be visualized in Bloodhound. Usage: ./ldif_to_neo4j.py ./sample.ldif | cypher-shell -

Guillaume Quéré 71 Nov 09, 2022
Moleey Panel with python 3

Painel-Moleey pkg upgrade && pkg update pkg install python3 pip install pyfiglet pip install colored pip install requests pip install phonenumbers pkg

Moleey. 1 Oct 17, 2021
Object-data mapper and advanced query manager for non relational databases

Object data mapper and advanced query manager for non relational databases. The data is owned by different, configurable back-end databases and it is

Luca Sbardella 121 Aug 11, 2022
A water drinking notification every hour to keep you healthy while coding :)

Water_Notification A water drinking notification every hour to keep you healthy while coding. 💧 💧 Stay Hydrated Stay Healthy 💧 💧 Authors @CrazyCat

Arghya Banerjee 1 Dec 22, 2021
使用clash核心,对服务器进行Netflix解锁批量测试。

注意事项 测速及解锁测试仅供参考,不代表实际使用情况,由于网络情况变化、Netflix封锁及ip更换,测速具有时效性 本项目使用 Python 编写,使用前请完成环境安装 首次运行前请安装pip及相关依赖,也可使用 pip install -r requirements.txt 命令自行安装 Net

11 Dec 07, 2022
Enjoyable scripting experience with Python

Enjoyable scripting experience with Python

8 Jun 08, 2022
Find out where all films you want to watch are streaming

Just Watch Letterboxd Find out where all films you want to watch are streaming Ever wonder what films you want to watch are already on the streaming p

Jordan Oslislo 2 Feb 04, 2022