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
BinCat is an innovative login system, with which the account you register will be more secure.

BinCat is an innovative login system, with which the account you register will be more secure. This project is inspired by a conventional token system.

Hipotesi 2 May 22, 2022
BlackIP-Rep is a tool designed to gather the reputation and information of Bulk IP's.

BlackIP-Rep is a tool designed to gather the reputation and information of Bulk IP's. Focused on increasing the workflow of Security Operations(SOC) team during investigation.

0LiVEr 6 Dec 12, 2022
Kivy program for identification & rotation sensing of objects on multi-touch tables.

ObjectViz ObjectViz is a multitouch object detection solution, enabling you to create physical markers out of any reliable multitouch solution. It's e

TangibleDisplay 8 Apr 04, 2022
El_Binario - A converter for Binary, Decimal, Hexadecimal and Octal numbers

El_Binario El_Binario es un conversor de números Binarios, Decimales, Hexadecima

2 Jan 28, 2022
Distribute PySPI jobs across a PBS cluster

Distribute PySPI jobs across a PBS cluster This repository contains scripts for distributing PySPI jobs across a PBS-type cluster. Each job will conta

Oliver Cliff 1 Feb 10, 2022
ArinjoyTheDev 1 Jul 17, 2022
A basic tool to generate Hydrogen drum machine kits.

Generate Hydrogen Kit A basic tool to generate drumkit.xml files for Hydrogen drum machine. Saves a bit of time when making kits. Supply it with a nam

Luna Langton 2 Nov 28, 2021
HOWTO: Downgrade from nYNAB to YNAB4

HOWTO: Downgrade from nYNAB to YNAB4 This page explains how to move from nYNAB to YNAB4 while retaining as much information as possible. See Appendix

Tobias Kunze 10 Dec 29, 2022
Some ideas and tools to develop Python 3.8 plugins for GIMP 2.99.4

gimp-python-development Some ideas and tools to develop Python 3.8 plugins for GIMP 2.99.4. GIMP 2.99.4 is the latest unstable pre-release of GIMP 3.

Ismael Benito 53 Sep 25, 2022
Grimoire is a Python library for creating interactive fiction as hyperlinked html.

Grimoire Grimoire is a Python library for creating interactive fiction as hyperlinked html. Installation pip install grimoire-if Usage Check out the

Scott Russell 5 Oct 11, 2022
Simple script with AminoLab to send ghost messages

Simple script with AminoLab to send ghost messages

Moleey 1 Nov 22, 2021
Project Guide for ASAM OpenX standards

ASAM Project Guide Important This guide is a work in progress and subject to change! Hosted version available at: ASAM Project Guide (Link) Includes:

ASAM e.V. 2 Mar 17, 2022
tool to automate exploitation of android degubg bridge vulnerability

DISCLAIMER DISCLAIMER: ANY MALICIOUS USE OF THE CONTENTS FROM THIS ARTICLE WILL NOT HOLD THE AUTHOR RESPONSIBLE HE CONTENTS ARE SOLELY FOR EDUCATIONAL

6 Feb 12, 2022
Expense Tracker is a very good tool to keep track of your expenseditures and the total money you saved.

Expense Tracker is a very good tool to keep track of your expenseditures and the total money you saved.

Shreejan Dolai 9 Dec 31, 2022
Visualization of COVID-19 Omicron wave data in Seoul, Osaka, Tokyo, Hong Kong and Shanghai. 首尔、大阪、东京、香港、上海由新冠病毒 Omicron 变异株引起的本轮疫情数据可视化分析。

COVID-19 in East Asian Megacities This repository holds original Python code for processing and visualization COVID-19 data in East Asian megacities a

STONE 10 May 18, 2022
Tools for dos (denial-of-service) website / web server

DoS Attack Tools Tools for dos (denial-of-service) website / web server di buat olah NurvySec How to install on debian / ubuntu $ apt update $ apt ins

nurvy 1 Feb 10, 2022
redun aims to be a more expressive and efficient workflow framework

redun yet another redundant workflow engine redun aims to be a more expressive and efficient workflow framework, built on top of the popular Python pr

insitro 372 Jan 04, 2023
Streamlit component to display topics from Streamlit's community forum related to any exception.

streamlit-forum Streamlit component to display topics from Streamlit's community forum related to any exception. Installation pip install streamlit-fo

Snehan Kekre 7 Jul 15, 2022
A software dedicated to automaticaly select the agent of your desire in Valorant

AUTOPICKER A software dedicated to automaticaly select the agent of your desire in Valorant GUIDE Before stariting to use this program check if you ha

p1n00 0 Sep 24, 2022
Paxos in Python, tested with Jepsen

Python implementation of Multi-Paxos with a stable leader and reconfiguration, roughly following "Paxos Made Moderately Complex". Run python3 paxos/st

A. Jesse Jiryu Davis 25 Dec 15, 2022