Giter Site home page Giter Site logo

jpdillingham / swot Goto Github PK

View Code? Open in Web Editor NEW
15.0 8.0 2.0 3.17 MB

A web application for designing, tracking, and reporting progress on workouts. Written in JavaScript with React, Redux, Material UI, and hosted by a serverless AWS backend.

Home Page: http://swot.whatnet.us

License: GNU General Public License v3.0

HTML 0.16% JavaScript 99.54% Python 0.31%
react redux serverless workouts aws aws-lambda aws-dynamodb material-ui

swot's People

Contributors

codesee-maps[bot] avatar dependabot[bot] avatar jpdillingham avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

siranen wburklund

swot's Issues

Make app title dynamic; display name of current content

For example, when viewing Workouts, the app title should say "Workouts". This requires changes to AppContainer, an addition to AppReducer for current page title, and additions throughout routeable components to update the title upon load.

Disable user signups.

There's a risk of someone signing up and using the api to rack up charges.

  • Disable user signups in Cognito
  • Disable the "Register" functionality in the UI
  • Add a message to contact administration to obtain an account

Calendar does not display load animation properly

Expected behavior is that a blank screen with a spinner is shown while initial calendar data is fetched. Actual behavior is that the calendar is displayed with the currently loaded Excercises, and the spinner is shown overlayed.

Suppress display of the Calendar component until the initial fetches are complete.

Create Exercise report(s), similar to WorkoutsHistory.

Tabular View

  • Display a table with columns for each metric in the data set (map and reduce)
  • Map results to appropriate columns (columns as props, row factory? needs design)
  • Ability to filter by exercise by passing id in route

Exercise metrics may change over time. Columns in the history table should be dynamic in that if an Exercise contains a metric, it should be displayed in a column. Exercises in the same data set lacking that metric will have a blank column or potentially N/A.

Review API implementation among *Actions.js

Implementation differs slightly in ExercisesActions and RoutinesActions. Review and bring into alignment.

Also, test the downstream notification logic to ensure errors are displayed in a reasonable way. The following suggests that they aren't:

            this.props.deleteExercise(exercise)
            .then(response => {
                this.props.showSnackbar('Deleted Exercise \'' + exercise.name + '\'.')
                resolve(response);
            }, error => {
                let message = 'Error deleting Exercise'
                message += error.response ? ': ' + JSON.stringify(error.exercise.data).replace(/"/g, "") : '.'

                this.props.showSnackbar(message);
                reject(error);
            })

Is error.exercise.data correct? Doesn't seem like it would be.

Convert WorkoutsHistory into a reusable History component

Retain common functionality, namely within Options:

  • Start/end selection
  • Order
  • Pagination
  • Parent-defined options (render on new row in header, append name/selection to filters)

Accept children props for rendering results, return filters via a callback so the parent can perform queries.

Navigating to base route when not logged in raises exceptions

image

Reproduce:

  • Log out of the application
  • Navigate to base url (without /login)
  • Observe the exceptions above

It appears as though the default route is attempting to fetch details for the dashboard and getting the above errors, which is what causes the redirect to /login. The code needs to be updated to check for a valid session prior to requesting data or displaying components.

Add History and Progress navigation to ExerciseForm

Presently, the FAB on ExerciseForm opens the History dialog. When the Progress dialog (#146) has been implemented, update this component to allow display of the History and Progress dialogs.

Ideas:

  • Change the existing FAB to an info icon, and when clicked display two mini FABs for history and progress
  • Open a menu when the FAB is clicked and display history and progress options
  • Use a vertical dot menu for the history and progress options, and change the FAB to start/stop controls for the exercise (this is consistent with the rest of the app, but I'm not sure I like it here)

Responsive design

Presently certain components are restricted in width to display on mobile (Exercise/Routine cards, WorkoutExerciseForm)

Exercise/Routine should have a default width for desktop/large displays and should have responsive width on mobile/small displays

WorkoutExerciseForm can expand the entire width of the screen (similar to other Workout related components) but should have a responsive width for mobile/small displays

Split backend into multiple files

Divide by domain object (Workout, Routine, etc).

  • Create utility.js for shared functions (getUser)
  • Determine folder structure (if any)
  • Copy existing functions to new files, then stub routes in index (e.g. app.get('/exercises', exercises.get))

Add Progress dialog

Similar to the History dialog, provide a truncated version of the Progress page.

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.