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
Simple script to match riders with drivers.

theBestPooler Simple script to match riders with drivers. It's a greedy, unoptimised search, so no guarantees that it works. It just seems to work (ve

Devansh 1 Nov 22, 2021
Results of Robot Framework 5.0 survey

Robot Framework 5.0 survey results We had a survey asking what features Robot Framework community members would like to see in the forthcoming Robot F

Pekka Klärck 2 Oct 16, 2021
Lightweight and Modern kernel for VK Bots

This is the kernel for creating VK Bots written in Python 3.9

Yrvijo 4 Nov 21, 2021
Block when attacker want to bypass the limit of request

Block when attacker want to bypass the limit of request

iFanpS 1 Dec 01, 2021
J MBF - Assalamualaikum Mamang...

★ VISITOR ★ ★ INFORMATION ★ Script Ini DiBuat Oleh YayanXD Script Ini Akan DiPerjual Belikan Tanggal 9 Januari 2022 Jika Mau Beli Script Silahkan Hub

Risky [ Zero Tow ] 5 Apr 08, 2022
Data wrangling & common calculations for results from qMem measurement software

qMem Datawrangler This script processes output of qMem measurement software into an Origin ® compatible *.csv files and matplotlib graphs to quickly v

Julian 1 Nov 30, 2021
Advanced python code - For students in my advanced python class

advanced_python_code For students in my advanced python class Week Topic Recordi

Ariel Avshalom 3 May 27, 2022
InverterApi - This project has been designed to take monitoring data from Voltronic, Axpert, Mppsolar PIP, Voltacon, Effekta

InverterApi - This project has been designed to take monitoring data from Voltronic, Axpert, Mppsolar PIP, Voltacon, Effekta

Josep Escobar 2 Sep 03, 2022
Backups made easy, automated, monitored and SECURED with an audited encryption

Backup Controller Backups made easy, automated, monitored and SECURED with an audited encryption. Schedules backup tasks executed by Backup Maker, upl

RiotKit 1 Jan 30, 2022
Python 3 script for installing kali tools on your linux machine

Python 3 script for installing kali tools on your linux machine

gh0st 2 Apr 20, 2022
hey, this repo is the backend of the sociio project

sociio backend Hey, this repository is a part of sociio project , In this repo we are working to create an independent server for everything you can i

2 Jun 09, 2022
Parametric Bottle in CADQuery

Parametric Bottle using CADQuery The proposed code makes it possible to generate different types and sizes of 3D bottles in order to train Pixel2mesh

Ayoub EL HOUDRI 1 May 22, 2022
kurwa deska ADB

kurwa-deska-ADB kurwa-deska Запуск Linux -- python3 kurwa_deska.py Termux -- python3 kurwa_deska.py Встановлення cd kurwa_deska ADB і зразу запуск pyt

1 Jan 21, 2022
A Python package to request and process seismic waveform data from Hi-net.

HinetPy is a Python package to simplify tedious data request, download and format conversion tasks related to NIED Hi-net. NIED Hi-net | Source Code |

Dongdong Tian 65 Dec 09, 2022
Wagtail + Lottie is a Wagtail package for playing Adobe After Effects animations exported as json with Bodymovin.

Wagtail Lottie Wagtail + Lottie is a Wagtail package for playing Adobe After Effects animations exported as json with Bodymovin. Usage Export your ani

Alexis Le Baron 7 Aug 18, 2022
Simulation-Based Inference Benchmark

This repository contains a simulation-based inference benchmark framework, sbibm, which we describe in the associated manuscript "Benchmarking Simulation-based Inference".

SBI Benchmark 58 Oct 13, 2022
Data Orchestration Platform

Table of contents What is DOP Design Concept A Typical DOP Orchestration Flow Prerequisites - Run in Docker For DOP Native Features For DBT Instructio

Datatonic 61 Mar 04, 2022
It is Keqin Wang first project in CMU, trying to use DRL(PPO) to control a 5-dof manipulator to draw line in space.

5dof-robot-writing this project aim to use PPO control a 5 dof manipulator to draw lines in 3d space. Introduction to the files the pybullet environme

Keqin Wang 4 Aug 22, 2022
Function Plotter✨

Function-Plotter Build With : Python PyQt5 unittest matplotlib Getting Started This is an list of needed instructions to set up your project locally,

Ahmed Lotfy 3 Jan 06, 2022
Solutions for the Advent of Code 2021 event.

About 📋 This repository holds all of the solution code for the Advent of Code 2021 event. All solutions are done in Python 3.9.9 and done in non-real

robert yin 0 Mar 21, 2022