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
Python meta class and abstract method library with restrictions.

abcmeta Python meta class and abstract method library with restrictions. This library provides a restricted way to validate abstract methods. The Pyth

Morteza NourelahiAlamdari 8 Dec 14, 2022
Mangá downloader (para leitura offline) voltado para sites e scans brasileiros.

yonde! yonde! (読んで!) é um mangá downloader (para leitura offline) voltado para sites e scans brasileiros. Também permite que você converta os capítulo

Yonde 8 Nov 28, 2021
30DaysOfCode-PhoenixClub - Solution of everyday coding problem given in 30DaysofCode contest held on Hackerrank

30DaysOfCode-PhoenixClub 👨‍💻 Every day problems solution given in 30DaysOfCode

Urveshkumar 8 Jan 30, 2022
Boot.img patcher for Tolino ebook readers to enable ADB and root.

I'm not responsible for any damage to your devices by running this tool. Please note that you may loose warranty when using this, although (This is no

Aaron Dewes 9 Nov 13, 2022
🎉 🎉 PyComp - Java Code compiler written in python.

🎉 🎉 PyComp Java Code compiler written in python. This is yet another compiler meant for babcock students project which was created using pure python

Alumona Benaiah 5 Nov 30, 2022
Tutorials on advanced python topics, and literate programming framework to write them.

Advanced course on Python3 This course covers several topics Python decorators The python object system / meta classes Also see my text on Python impo

Michael Moser 59 Dec 19, 2022
Assignment for python course, BUPT 2021.

pyFuujinrokuDestiny Assignment for python course, BUPT 2021. Notice username and password must be ASCII encoding. If username exists in database, syst

Ellias Kiri Stuart 3 Jun 18, 2021
Nicotine+: A graphical client for the SoulSeek peer-to-peer system

Nicotine+ Nicotine+ is a graphical client for the Soulseek peer-to-peer file sharing network. Nicotine+ aims to be a pleasant, Free and Open Source (F

940 Jan 03, 2023
SimilarWeb for Team ACT v.0.0.1

SimilarWeb for Team ACT v.0.0.1 This module has been built to provide a better environment specifically for Similarweb in Team ACT. This module itself

Sunkyeong Lee 0 Dec 29, 2021
Trusted sessions for falcon using itsdangerous.

Falcon signed sessions This project allows you to easily add trusted cookies to falcon, it works by storing a signed cookie in the client's browser us

Ward 1 Feb 08, 2022
🍬️🦇️ Open source Trick or Treat! 🦇️🍬️

Open Source Halloween! What's an easy way to have fun, and celebrate an open source Halloween? Open source trick or treating, of course! The repositor

Research Software Engineers 3 Oct 18, 2021
pgvector support for Python

pgvector-python pgvector support for Python Great for online recommendations 🎉 Supports Django, SQLAlchemy, Psycopg 2, Psycopg 3, and asyncpg Install

Andrew Kane 37 Dec 20, 2022
This is the course project of AI3602: Data Mining of SJTU

This is the course project of AI3602: Data Mining of SJTU. Group Members include Jinghao Feng, Mingyang Jiang and Wenzhong Zheng.

2 Jan 13, 2022
Python bindings for Basler's VisualApplets TCL script generation

About visualapplets.py The Basler AG company provides a TCL scripting engine to automatize the creation of VisualApplets designs (a former Silicon Sof

Jürgen Hock 2 Dec 07, 2022
Open source tools to allow working with ESP devices in the browser

ESP Web Tools Allow flashing ESPHome or other ESP-based firmwares via the browser. Will automatically detect the board type and select a supported fir

ESPHome 195 Dec 31, 2022
B-Pkg is a simple tool in python for installing all basic package in termux

Basic-Pkg 👉🏻 Basic-Pkg 👈🏻 B-Pkg is a simple tool in python for installing all basic package in termux This is my first tool, I hope you will like

Macgaiver 3 Oct 21, 2021
Intelligent Systems Project In Python

Intelligent Systems Project In Python

RLLAB 3 May 16, 2022
Exploiting Linksys WRT54G using a vulnerability I found.

Exploiting Linksys WRT54G Exploit # Install the requirements. pip install -r requirements.txt ROUTER_HOST=192.169.1.1 ROUTER_USERNAME=admin ROUTER_P

Elon Gliksberg 31 May 29, 2022
Repository to store sample python programs for python learning

py Repository to store sample Python programs. This repository is meant for beginners to assist them in their learning of Python. The repository cover

codebasics 5.8k Dec 30, 2022
Collatz Sanısını Test Eden Ve Kanıtlayan Bir Python Programı

Collatz Sanısı Collatz Sanısını Test Eden Ve Kanıtlayan Bir Python Programı. Kullanım Terminalde: 1- git clone https://github.com/detherminal/Collatz-

Cemal Mert 2 May 07, 2022