Code Monkey home page Code Monkey logo

liftinglog's Introduction

Logo

Lifting Log

A convenient way to log lifting progress for power lifters
Explore the docs »

Report Bug · Request Feature

Table of Contents

About The Project

An android app written in React Native to log lifting progress for power lifters. Log your highest weight and repetitions for a given date and the app will calculate your one rep maximum and strength scores.

There are many other tracking apps available. Therefore, the focus of this app is not to track your whole training, but only the heavy lifts. With this data, it calculates your current 1RM and lifting strength and displays progress graphs for them.

The tracker was developed with these use cases in mind:

  • I want to know how much weight I used a given exercise the last time
  • I want see how my lifting strength progressed over several training sessions
  • I want see my 1RM progress over several weeks

Built With

  • React Native
  • JEST
  • Android (even though IOS would be possible as well, I have no device to test this)

Getting Started

To get a local copy up and running follow these simple steps.

Prerequisites

This is a list of things you need to use the software and how to install them.

  • npm
npm install npm@latest -g

Installation

1. Clone the repo
git clone https://github.com/bearbob/LiftingLog.git
  1. Install NPM packages
npm install

Running

  • Execute npm start to setup and run the app on your environment
  • Execute npm test, if your want to run the unit tests

Roadmap

See the open issues for a list of proposed features (and known issues).

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Read the rules for contribution
  2. Fork the Project
  3. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  4. Commit your Changes (git commit -m 'Add some AmazingFeature')
  5. Push to the Branch (git push origin feature/AmazingFeature)
  6. Open a Pull Request (a good title and description speed up the review process)

License

Distributed under the Apache License 2.0. See LICENSE for more information.

liftinglog's People

Contributors

bearbob avatar dependabot[bot] avatar

Watchers

 avatar  avatar

Forkers

cyzeng-luca

liftinglog's Issues

Add new exercise

Implement a function to add a new exercise.
A new exercise must be categorized as one of the main lifts to be used for strength score calculation.

Clean Icons for Tab.Navigator

In App.js the Tab.Navigator sets the icons for the screens. There are screens listed that are no longer called in the tab navigator directly, as well as the missing screen for Statistics, that is currently assigned the default list icon.
Clean the code and find a better icon for the Statistics-Screen (see https://oblador.github.io/react-native-vector-icons/ for overview of available icons)

Paste CSV data

Add an option to either post data for multiple exercises at once or per exercise.
The data could have the format
exerciseID;date;weight;reps

Upon saving, for each row the normal calculations (one RM, strength Score) are done.

Additionally it would be useful to provide an export with the same data structure

Feat: Text2Log

Add an option to enter new log entries from a text input field where each line represents a new log.
The format should be something like this:
weight;reps;yyyy/MM/dd

ignore whitespaces

Different Clean-Actions

Additionally to deleting all data, it might be useful to have the option to delete only data for specific exercises.

Export/import data for dev tools

Function to export the data either as text (might run into problems when to long) or as a file.
Vice versa there should be an option to import this data again.

Overwrite entry if better score is entered

Use case: A user saves an entry for an exercise. Shortly after, he manages to do a better entry with higher weight or reps.
The entry should be updated.

For a given date D, given exercise X an entry A with A.weight and A.reps is saved.
A new entry B with date D for exercise X will replace A if B.reps > A.reps or B.weight > A.weight. Otherwise B is not stored.

Race condition for storeWeightLog

The current implementation of storeWeightLog runs into a race condition. This can lead to data loss, if request are made fast enough. The reason is, that the current state of the data in the storage is retrieved with retrieveData and the result is handled in a callback, leading to asynchronous handling.

Update Charts in GeneralStatistics

The Charts shown in GeneralStatistics don't seem to refresh after they are mounted, even though they have update callers. This should be fixed.

Custom Start of the week

It should be possible to set a custom week day as start of the week. this is respected in the calculations for Calender weeks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.