Giter Site home page Giter Site logo

swole2's Introduction


Swole
Swole

The fitness tracker of all fitness trackers. Built with React Native.

๐Ÿ“‹ Requirements

React Native apps may target iOS 13.4 and Android 6.0 (API 23) or newer. You may use Windows, macOS, or Linux as your development operating system, though building and running iOS apps is limited to macOS.

๐ŸŽ‰ Getting Started with React Native

If this is your first time using React Native, refer to the official React Native documentation for detailed instructions on installation and setup.

๐Ÿ“– How To Use

To clone and run this application, you'll need Git and Node.js (which comes with npm) installed on your computer. From your command line:

# Clone this repository
$ git clone https://github.com/JamesFTW/swole2.git

# Go into the repository
$ cd swole2

# Install dependencies
$ npm install

# Run the app
$ npm run ios

swole2's People

Contributors

jamesftw avatar

Watchers

 avatar

swole2's Issues

Pass onClick Highlight Exercise Selection Information into Workout Component State

Description:
This ticket is part of the larger effort to enhance the exercise component's click behavior, as described in the "Enhance Exercise Component Click Behavior" ticket. The goal is to implement the feature that allows passing the exercise selection information, obtained through the "highlight" behavior, into the workout component's state. This information will be utilized to display a vertical list of React Native components representing the highlighted exercises.

Implementation Details:

  • Implement the functionality that, when the exercise component is clicked with clickBehavior set to "highlight", it visually highlights the exercise and collects its information (e.g., exercise name, category, etc.).
  • Create a suitable data structure to store the highlighted exercise information for transmission to the workout component's state.
  • Update the workout component to accept the collected exercise information and populate its state with React Native components representing the highlighted exercises.
  • Design the layout of the vertical list to display the highlighted exercises.

Testing:

  • Verify that clicking on the exercise component with clickBehavior set to "highlight" visually highlights the exercise as intended.
  • Test the passing of exercise information into the workout component's state and verify that the state is updated correctly.
  • Ensure the vertical list of React Native components in the workout component correctly displays the highlighted exercises.

Acceptance Criteria:

  • The exercise component must be updated to handle the "highlight" behavior and collect exercise information.
  • The workout component's state should accept an array of React Native components representing highlighted exercises.
  • Clicking on the exercise component with "highlight" behavior must visually highlight the exercise and pass its information to the workout component's state.
  • The workout component's layout should correctly display the highlighted exercises in a vertical list.
  • The code implementation should follow the project's coding standards and guidelines.
  • Comprehensive testing should be conducted, and the components should be free of critical bugs related to the new behavior.

Priority: Medium

Estimate: 3 story points

Dependencies:

  • The exercise component must be updated to support the "highlight" behavior.
  • Ensure the workout component is ready to accept and display the highlighted exercise information.
  • Coordinate with the design team to ensure the layout of the vertical list aligns with the project's design guidelines.

Enable Creation of Workouts for Future Dates

Description:

Develop functionality to allow users to create workouts in advance for specific future dates.

Implementation Details:

Add UI elements and logic to enable users to create workouts for future dates within the calendar view.
Implement data storage and backend logic to store created workouts for future dates.

Testing:

Test the creation of workouts for future dates to ensure data accuracy and functionality.

Priority:

Medium

Estimate:

Dependencies:

Backend logic for creating and storing workouts for future dates, integration with existing UI components.

Implement Workout Exercise Component

Description:
This ticket is part of the effort to enhance the exercise component's behavior within the expanded view, as described in the "Vertically Expand Exercise Component onClick" ticket. The goal is to implement functionalities related to exercise set status and management.

Implementation Details:

  • Introduce mechanisms for marking sets as completed or in progress.
  • Implement the ability to remove sets from the expanded component.
  • Provide options for users to update values within the sets (e.g., set number, reps, weight, intensity).

Testing:

  • Test the functionality of marking sets as completed or in progress.
  • Verify that sets can be successfully removed from the expanded component.
  • Ensure users can update values within the sets accurately.

Acceptance Criteria:

  • Users should be able to mark sets as completed or in progress, remove sets, and update set values.
  • The code implementation should follow the project's coding standards and guidelines.
  • Comprehensive testing should be conducted, and the implemented functionalities should be free of critical bugs.

Priority: Medium

Estimate: 8 story points

Dependencies:

  • The expanded exercise component functionality and add exercise sets functionality should be in place.

Calendar View Epic

Description

Develop a Calendar View in the Swole application to display past workouts, upcoming workouts, and the ability to create workouts in advance for future days.

Implementation Details:

  • Create a calendar component to display past and upcoming workout dates.
  • Implement logic to fetch and display past workouts and upcoming workouts on the calendar.
  • Develop functionality to allow users to create workouts in advance for specific future dates.

Testing:

  • Test the calendar view by verifying that past and upcoming workouts are displayed correctly.
  • Test the creation of workouts for future dates to ensure functionality and data accuracy.

Acceptance Criteria:

  • The Calendar View should show past workouts and upcoming workouts in a clear and organized manner.
  • Users should be able to create workouts for future dates and see them reflected accurately on the calendar.

Priority:

  • Medium

Estimate:

Dependencies:

  • Backend API endpoints for retrieving past and upcoming workouts.
  • Logic for creating and storing workouts for future dates.
  • Integration with existing UI components for a seamless user experience.

Add Exercise Sets Functionality

Description:
This ticket is part of the effort to make the exercise component vertically expandable upon clicking, as described in the "Vertically Expand Exercise Component onClick" ticket. The goal is to implement the functionality to add exercise sets within the expanded component.

Implementation Details:

  • Extend the expanded exercise component to include the option to add exercise sets.
  • Implement the UI elements necessary for users to add new sets.

Testing:

  • Test the functionality of adding exercise sets within the expanded component.
  • Verify that new sets can be successfully added and displayed.

Acceptance Criteria:

  • Users should be able to add exercise sets within the expanded component.
  • The code implementation should follow the project's coding standards and guidelines.
  • Comprehensive testing should be conducted, and the added functionality should be free of critical bugs.

Priority: Medium

Estimate: 3 story points

Dependencies:

  • The expanded exercise component functionality should be in place.

Create Calendar Component

Description:

Develop a calendar component to display past and upcoming workout dates.

Implementation Details:

  • Create a UI component for the calendar view.
  • Implement logic to fetch and display past and upcoming workout dates on the calendar.

Testing:

  • Test the calendar component to ensure it correctly displays past and upcoming workout dates.

Priority:

Medium

Estimate:

Set up Pre-commit Hook for Prettier Formatting (API)

Description:

The goal of this ticket is to implement a pre-commit hook that automatically formats code using Prettier before committing changes to the version control system. This will ensure consistent code formatting across the codebase, improve readability, and reduce manual formatting efforts for developers.

Implementation Details:

  • Install Prettier as a development dependency (npm install --save-dev prettier).
  • Create a .prettierrc file to define Prettier configuration options (e.g., indentation, line width).
  • Configure the pre-commit hook in the project's version control system to run Prettier before each commit.
  • Test the pre-commit hook to verify that code formatting is applied automatically.

Testing:

Manually test the pre-commit hook by making changes to code files and ensuring that Prettier formats the code on commit.

Acceptance Criteria:

The pre-commit hook is successfully set up and formats code using Prettier before each commit. Testing confirms that code formatting is consistent across the codebase.

Implement Collapsible Behavior

Description:
This ticket is part of the larger initiative described in Implement Workout Exercise Component, where the goal is to introduce the Workout Exercise component. The objective of this ticket is to implement the collapsible behavior within the component, allowing users to seamlessly toggle between the Collapsed and Expanded states.

Implementation Details:

  • Develop the logic for toggling between the Collapsed and Expanded states.
  • Implement smooth transitions to enhance the user experience during state changes.

Testing:

  • Test the toggling behavior to ensure it works seamlessly.
  • Verify that the component functions as expected during state transitions.

Acceptance Criteria:

  • Users can effortlessly switch between the Collapsed and Expanded states.
  • State transition animations are fluid and visually pleasing.

Priority: Medium

Estimate: 3 story points

Dependencies:

Set Management Functionalities

Description:
This ticket contributes to the overarching goal outlined in Implement Workout Exercise Component. The primary focus is on implementing essential functionalities for managing exercise sets within the Workout Exercise component.

Implementation Details:

  • Develop the capability to add new sets to the exercise component.
  • Enable users to update set information, including set number, reps, weight, and intensity.
  • Implement the functionality to remove sets from the exercise.

Testing:

  • Test the addition, update, and removal functionalities to ensure accurate behavior.
  • Verify that set information updates are accurately reflected in the user interface.

Acceptance Criteria:

  • Users can seamlessly add, update, and remove sets within the component.
  • Set information updates are accurately displayed in the user interface.

Priority: High

Estimate: 5 story points

Dependencies:

Set Up Set Component Structure

Description:
This ticket involves setting up the foundational structure for the "Set" component within the Workout Exercise module. The "Set" component will be a building block used for displaying individual exercise sets with various details.

Implementation Details:

  • Create a new React Native component named "Set" that will serve as the basis for displaying set information.
  • Define the basic UI layout for the "Set" component, including placeholders for set number, reps, weight, and intensity.
  • Implement the necessary props and state management for the "Set" component to enable dynamic data display.

Testing:

  • Test the "Set" component's structure to ensure it renders without errors.
  • Verify that the basic UI layout and placeholders are correctly displayed.
  • Perform initial testing to check the component's interaction with props and state.

Acceptance Criteria:

  • The "Set" component's structure should be established and ready for further feature implementation.
  • The component should render without errors and correctly display the intended placeholders.

Priority: Low

Estimate: 1 story point

Add Back Button to ExerciseSearchScreen

Description:
This ticket involves enhancing the user experience of the ExerciseSearchScreen by adding a back button. The back button will provide users with a convenient way to navigate back to the previous screen from the ExerciseSearchScreen.

Implementation Details:

  • Integrate a back button component within the UI layout of the ExerciseSearchScreen.
  • Implement the necessary navigation logic to ensure the back button functionality navigates the user to the previous screen.

Testing:

  • Verify that the back button appears on the ExerciseSearchScreen.
  • Test the back button's functionality by confirming that it successfully navigates the user to the previous screen.

Acceptance Criteria:

  • The ExerciseSearchScreen should prominently display a functional back button.
  • The back button should effectively navigate the user back to the previous screen.
  • The code implementation should adhere to the project's coding standards and guidelines.
  • Comprehensive testing should be conducted to ensure the added back button works without critical bugs.

Priority: Low

Estimate: 1 story point

Dependencies:

  • Ensure familiarity with the navigation structure of the application to implement the back button functionality correctly.

Week-at-a-Glance Modal

Description:

Implement the Week-at-a-Glance modal as part of the Profile Page Completionepic, enabling users to track their completed and upcoming workouts from Monday to Sunday of the current week.

Implementation Details:

Integrate backend services to fetch workout data with the skeleton UI on the profile page.

Testing:

Ensure the modal displays accurate workout information and functions correctly.

Acceptance Criteria:

Users can open the modal to view their completed and upcoming workouts.

Priority:

High

Estimate:

3

Dependencies:

Backend API endpoints for fetching workout data.

Workout Screen UI

Description:

This epic focuses on building the UI components for the Workout Screen, including the Weekly Snapshot and Daily Workout components, and integrating them with the API endpoints developed in the previous epic. The UI will be built using React Native, following best practices for performance, accessibility, and maintainability.

Implementation Details:

  1. UI Design and Implementation: Create the component structure and implement the UI for the Weekly Snapshot and Daily Workout components based on the provided design specifications, ensuring responsive and accessible design.
  2. State Management: Implement a state management solution (e.g., React Context, Redux) to manage the application state and data flow between components.
  3. API Integration: Integrate the UI components with the API endpoints by making HTTP requests to fetch the weekly snapshot and daily workout data, handling loading and error states gracefully.
  4. Data Handling and Calculations: Implement the logic to process and display the fetched data, including calculating the weekly totals (sets, time, volume) for the Weekly Snapshot component.
  5. Navigation: Implement navigation between the Workout Screen and the individual workout details screen, ensuring a smooth user experience.
  6. Performance Optimization: Implement performance optimization techniques, such as lazy loading or virtualization, for large lists or data sets to ensure a responsive and efficient user interface.
  7. Accessibility: Ensure the UI components meet accessibility guidelines and provide a seamless experience for users with disabilities.
  8. Testing: Write unit tests for individual components, covering data handling, calculations, navigation, and edge cases, as well as end-to-end (E2E) tests for the complete Workout Screen flow.
  9. Documentation: Document the component structure, architecture decisions, and any important implementation details for future reference and maintainability.
  10. Code Review and Quality Assurance: Conduct code reviews to ensure adherence to best practices, coding standards, and quality guidelines, and incorporate feedback from stakeholders.
  11. Deployment: Deploy the Workout Screen UI to a staging or production environment for user testing and final release.

Upgrade dependency versions to address vulnerabilties

After a fresh install, it was seen that there are currently 66 code vulnerabilities found within the project.

This issue is created to ensure we've updated to newer version that no longer pose a threat to the codebase.

Implement User Profile Data Management Backend Integration

Description:

Manage user profile data, including fetching, updating, and storing the profile information (display name, email, profile picture, bio, and location) in the global state.

Implementation Details:

  1. Integrate the user profile management methods with the backend API endpoints.
  2. Utilize the existing Async Storage implementation to persist user profile data across app sessions.

Acceptance Criteria:

  1. User profile data can be fetched from the backend API and stored in the global state.
  2. User profile data can be updated in the global state and synced with the backend API.
  3. Changes to the user profile data are persisted across app sessions using the existing Async Storage implementation.

Estimate: 3

Profile Editing Functionality

Description:

Implement profile editing capabilities as part of the Profile Page Completion epic, allowing users to update their information.

Implementation Details:

Profile: Develop UI components and backend logic for editing display name, email, profile picture, bio, and location.
Admin: Privacy, etc..

Testing:

Test editing functionality across different user profiles and devices.

Acceptance Criteria:

Users can edit and save changes to their profile information.

Priority:

High

Estimate: 5

Dependencies:

Backend API endpoints for profile data management.

Blocked on : #50

Enhance Exercise Component Click Behavior

Description:
Update the exercise component to introduce a parameter that will dictate its behavior upon clicking. The behavior can be one of the two options listed below:

  1. Navigate to Exercise Details:
    When this behavior is selected, clicking on the exercise component will trigger navigation to the exercise details page. The user will be redirected to a page displaying comprehensive information about the selected exercise.

  2. Highlight Exercise and Save for Workout Page:
    When this behavior is selected, clicking on the exercise component will result in the exercise being highlighted visually to indicate its selection. Furthermore, the information of the selected exercise will be saved in a format suitable for transmission to the workout page. This will enable the exercise to be seamlessly integrated into the user's workout routine.

Implementation Details:

  • Introduce a parameter named clickBehavior to the exercise component.
  • The clickBehavior parameter will accept two possible values: "navigate" and "highlight".
  • If the clickBehavior is set to "navigate", clicking on the exercise component will trigger navigation to the exercise details page.
  • If the clickBehavior is set to "highlight", clicking on the exercise component will visually highlight it and save its information for use on the workout page.
  • For the "highlight" behavior, implement a mechanism to store the selected exercise's information (e.g., exercise name, category, etc.) in a suitable data structure that can be passed to the workout page.
  • Ensure that the behavior parameter is well-documented in the component's documentation or comments for future reference.

Testing:

  • Verify that clicking on the exercise component with clickBehavior set to "navigate" correctly navigates the user to the exercise details page.
  • Verify that clicking on the exercise component with clickBehavior set to "highlight" visually highlights the exercise as intended.
  • Test the saving mechanism for the highlighted exercise information to ensure it can be properly transmitted to the workout page.
  • Perform integration testing to ensure that the updated component works seamlessly within the existing application structure.

Acceptance Criteria:

  • The exercise component must accept a clickBehavior parameter.
  • Clicking on the exercise component with "navigate" behavior must correctly navigate to the exercise details page.
  • Clicking on the exercise component with "highlight" behavior must visually highlight the exercise and save its information for future use.
  • The code implementation should follow the project's coding standards and guidelines.
  • Comprehensive testing should be conducted, and the component should be free of critical bugs related to the new behavior.

Priority: Medium

Estimate: 5 story points

Dependencies:

  • Ensure the exercise details page and workout page are ready to handle the new behaviors as needed.
  • Coordinate with the design team to establish the visual highlighting style for the "highlight" behavior.

Implement Adding New Sets

Description:
This sub-ticket is part of the broader initiative outlined in Set Management Functionalities. The goal is to implement the functionality that allows users to add new sets to the exercise component within the Workout Exercise module.

Implementation Details:

  • Develop the logic to enable users to add new sets to the exercise component.
  • Integrate user interface controls that facilitate input of set information, including set number, reps, weight, and intensity.

Testing:

  • Test the process of adding new sets to ensure accurate and expected behavior.
  • Verify that user inputs for set information are captured correctly and stored properly.

Acceptance Criteria:

  • Users can add new sets to the exercise component seamlessly.
  • Inputted set information is accurately recorded and displayed in the user interface.

Priority: Medium

Estimate: 2 story points

Dependencies:

Implement "Highlight and Save" Behavior

Description:
This ticket is also part of the larger effort to enhance the exercise component's click behavior, as described in the "Enhance Exercise Component Click Behavior" ticket. The goal is to implement the "Highlight and Save" behavior. When this behavior is selected, clicking on the exercise component will visually highlight it to indicate its selection. Additionally, the information of the selected exercise will be saved in a suitable data structure for transmission to the workout page, enabling seamless integration into the user's workout routine.

Implementation Details:

  • Introduce a parameter named clickBehavior to the exercise component.
  • The clickBehavior parameter will accept the value "highlight".
  • Implement the functionality that, when the exercise component is clicked with clickBehavior set to "highlight", it visually highlights the exercise and saves its information for use on the workout page.

Testing:

  • Verify that clicking on the exercise component with clickBehavior set to "highlight" visually highlights the exercise as intended.
  • Test the saving mechanism for the highlighted exercise information to ensure it can be properly transmitted to the workout page.
  • Perform integration testing to ensure the new behavior works seamlessly within the existing application structure.

Acceptance Criteria:

  • The exercise component must accept a clickBehavior parameter.
  • Clicking on the exercise component with "highlight" behavior must visually highlight the exercise and save its information for future use.
  • The code implementation should follow the project's coding standards and guidelines.
  • Comprehensive testing should be conducted, and the component should be free of critical bugs related to the new behavior.

Priority: Medium

Estimate: 2 story points

Dependencies:

  • Ensure the workout page is ready to handle the saved exercise information from the exercise component.
  • Coordinate with the design team to establish the visual highlighting style for the "highlight" behavior.

Display Past and Upcoming Workouts

Description:

Implement logic to fetch and display past workouts and upcoming workouts on the calendar.

Implementation Details:

Integrate the calendar component with backend API endpoints to fetch workout data.
Display past workouts in a distinct manner from upcoming workouts on the calendar.

Testing:

Test the integration and logic to ensure past and upcoming workouts are displayed accurately.

Priority:

Medium

Estimate:

Dependencies:

Backend API endpoints for retrieving past and upcoming workouts.

Implement "Navigate to Exercise Details" Behavior

Description:
This ticket is part of the larger effort to enhance the exercise component's click behavior, as described in the "Enhance Exercise Component Click Behavior" ticket. The goal is to implement the "Navigate to Exercise Details" behavior. When this behavior is selected, clicking on the exercise component will trigger navigation to the exercise details page. The user will be redirected to a page displaying comprehensive information about the selected exercise.

Implementation Details:

  • Introduce a parameter named clickBehavior to the exercise component.
  • The clickBehavior parameter will accept the value "navigate".
  • Implement the functionality that, when the exercise component is clicked with clickBehavior set to "navigate", it triggers navigation to the exercise details page.

Testing:

  • Verify that clicking on the exercise component with clickBehavior set to "navigate" correctly navigates the user to the exercise details page.
  • Perform integration testing to ensure the new behavior works seamlessly within the existing application structure.

Acceptance Criteria:

  • The exercise component must accept a clickBehavior parameter.
  • Clicking on the exercise component with "navigate" behavior must correctly navigate to the exercise details page.
  • The code implementation should follow the project's coding standards and guidelines.
  • Comprehensive testing should be conducted, and the component should be free of critical bugs related to the new behavior.

Priority: Medium

Estimate: 2 story points

Dependencies:

  • Ensure the exercise details page is ready to handle the navigation from the exercise component.

Implement User Profile Management

Description:

Manage user profile data, including fetching, updating, and storing the profile information (display name, email, profile picture, bio, and location) in the global state.

Implementation Details:

  1. Define the structure of the user profile data in the global state.
  2. Implement methods to fetch, update, and store the user profile data in the context provider.
  3. Utilize the existing Async Storage implementation to persist user profile data across app sessions.

Acceptance Criteria:

  1. User profile data can be fetched from the backend API and stored in the global state.
  2. Changes to the user profile data are persisted across app sessions using the existing Async Storage implementation.

Estimate: 4

Vertically Expand Exercise Component onClick

Description:
The goal is to make the exercise component vertically expandable upon clicking, creating space for exercise sets.

Implementation Details:

  • Implement the functionality that vertically expands the exercise component upon clicking.
  • Update the component's UI to accommodate the expanded view.

Testing:

  • Verify that clicking on the exercise component expands it vertically as intended.
  • Perform integration testing to ensure the expanded behavior works seamlessly within the existing application structure.

Acceptance Criteria:

  • The exercise component should be vertically expandable upon clicking.
  • The code implementation should follow the project's coding standards and guidelines.
  • Comprehensive testing should be conducted, and the expanded behavior should be free of critical bugs.

Priority: Medium

Estimate: 2 story points

Dependencies:

  • The exercise component's "highlight" behavior should be utilized for the expansion.

Enable Set Information Editing

Description:
This sub-ticket is part of the comprehensive task outlined in Issue #17: Set Management Functionalities. The focus is on enabling users to edit set information, encompassing set number, reps, weight, and intensity, within the Workout Exercise component.

Implementation Details:

  • Implement user interface controls that empower users to edit set information.
  • Develop the necessary logic to update set details based on user input.

Testing:

  • Test the set information editing functionality to ensure accuracy during updates.
  • Verify that edited set information is correctly displayed and reflected in the user interface.

Acceptance Criteria:

  • Users can edit set information, including set number, reps, weight, and intensity, seamlessly.
  • Edited set details are accurately presented in the user interface.

Priority: Medium

Estimate: 3 story points

Dependencies:

Implement Profile Photo Edit Drawer

Description:
This ticket is part of the larger initiative to implement the Profile Edit Screen #59 . The specific focus here is on creating the Profile Photo Edit Drawer functionality. This smaller task involves designing and integrating a drawer component only. The other functionality to upload and edit a users profile photo will come later.

Tasks to Include:

  1. Design and UI layout for the Profile Photo Edit Drawer.
  2. Ensure compatibility and responsiveness across different devices.

Dependencies:

  • Completion of UI designs for the Profile Edit Screen.
  • Availability of APIs for photo upload and editing functionalities.

Expected Outcome:

  • A functional Profile Photo Edit Drawer integrated into the Profile Edit Screen.

Finish Button Completes Workout

Description

After pressing the existing UI button labeled "Finish" the data should be sent to the server for processing. Additionally, an interstitial page should be rendered to display all the workout data after completing the workout.

Implementation Details:

  • Utilize the existing UI button labeled "Finish Workout" to trigger the completion of workouts.
  • Implement backend logic to handle the completion process. Upon pressing the button, send the workout data to the server for processing.

Testing:

  • Test the functionality by pressing the "Finish Workout" button and verifying that the data is successfully sent to the server.
  • Verify that an interstitial page is rendered with all the workout data after completing the workout.

Acceptance Criteria:

  • After pressing the "Finish Workout" button, the workout data should be sent to the server.
  • An interstitial page should be rendered displaying all the workout data.

Priority:

  • High

Estimate:

Dependencies:

  • Backend API endpoint for processing completed workout data and rendering the interstitial page.

Create Exercise Set Component

Ticket: Create Set Component for Workout Exercises

Description:
This ticket aims to create a dedicated Set component in React Native that will be utilized within the Workout Exercise component, as part of the "Implement Workout Exercise Component " enhancement.

Implementation Details:

  • Design and create a new React Native component named "Set" to represent an individual exercise set.
  • Implement the UI layout for displaying set details, including set number, reps, weight, and intensity.
  • Integrate functionality to mark a set as completed or in progress.
  • Enable options to update values within the set, such as changing the number of reps, weight, and intensity.

Testing:

  • Test the Set component in isolation to ensure that it displays set details accurately.
  • Verify that marking sets as completed or in progress functions correctly.
  • Test the update functionalities to confirm accurate value adjustments within the set.

Acceptance Criteria:

  • The Set component must accurately display set details and provide options for marking set status and updating values.
  • The code implementation should follow React Native's best practices and coding standards.
  • Comprehensive testing should be conducted to ensure the component is free of critical bugs.

Priority: Medium

Estimate: 3 story points

Dependencies:

New Screen for Breakdown of Completed Workout

Description:

Develop logic to integrate the already designed completed workout screen into the Swole application. The screen will display a breakdown of completed workout data.

Implementation Details:

  • Integrate the existing design for the new screen into the Swole application.
  • Develop UI components for displaying exercise details, duration, intensity levels, and calories burned on the new screen.
  • Implement logic to fetch completed workout data from the backend API endpoints and populate the screen with the retrieved data.

Testing:

  • Test the new screen by completing various workouts and verifying that the breakdown accurately displays completed workout data, including exercise details, duration, intensity levels, and calories burned.

Acceptance Criteria:

  • Users can navigate to the new screen from the workout completion page to view a detailed breakdown of completed workout data.
  • The new screen should display exercise details, duration, intensity levels, and calories burned for each completed workout.

Priority:

  • Medium

Estimate:

Dependencies:

  • Completion of issue #41.

Implement Set Removal Functionality

Description:
This sub-ticket is a component of the broader effort highlighted in Set Management Functionalities. The primary objective is to implement the functionality that enables users to remove sets from the exercise component within the Workout Exercise module.

Implementation Details:

  • Develop the logic for users to initiate the removal of sets from the exercise component.
  • Integrate user interface elements that facilitate set removal.

Testing:

  • Test the set removal functionality to ensure it works accurately and as expected.
  • Verify that removed sets are promptly removed from the user interface.

Acceptance Criteria:

  • Users can remove sets from the exercise component effortlessly.
  • Sets that are removed are no longer displayed in the user interface.

Priority: Medium

Estimate: 2 story points

Dependencies:

Implement Profile React Context for Global State Management

Description:

Create a context provider to manage the global application state for user profile data.

Implementation Details:

  1. Define the structure of the global state object.
  2. Create the context provider and define the state update methods.
  3. Provide the context provider to the necessary components in the application.
  4. Integrate with the existing Async Storage implementation to persist and retrieve the global state.

Acceptance Criteria:

  1. The global state can be accessed and updated from any component wrapped by the context provider.
  2. The context provider manages the state updates and provides the updated state to the consuming components.
  3. The global state is persisted and retrieved using the existing Async Storage implementation.

Estimate: 4

Implement Authentication State Management with Cookie Manager

Description:

Manage the authentication state, including user login, logout, and token handling, using the existing cookie manager on the client-side.

Implementation Details:

  1. Define the structure of the authentication state in the global state.
  2. Implement methods to handle user login, logout, and token management in the context provider.
  3. Integrate the authentication state management methods with the existing cookie manager.
  4. On the client-side, manage the authentication state based on the cookies set by the cookie manager.
  5. Utilize the existing Async Storage implementation to persist authentication state across app sessions, if necessary.

Acceptance Criteria:

  1. User authentication state (logged in/out) is managed in the global state.
  2. User authentication token or session data is stored in cookies using the existing cookie manager.
  3. Changes to the authentication state are persisted across app sessions using the existing Async Storage implementation, if necessary.

Estimate: 3

Set Up Workout Exercise Component Structure

Description:
This ticket is a foundational step in realizing the broader goal outlined in Implement Workout Exercise Component. The objective is to create the necessary structure for the Workout Exercise component, ensuring alignment with design specifications and seamless integration within the existing application architecture.

Implementation Details:

  • Set up the required directory structure and files for the Workout Exercise component.
  • Integrate the component into the codebase, ensuring proper modularity and compatibility.

Testing:

  • Verify that the component's structure aligns with the design and coding standards.
  • Ensure seamless integration without causing conflicts with existing code.

Acceptance Criteria:

  • The Workout Exercise component's structure is established without errors.
  • The component integrates smoothly into the existing codebase.

Priority: Low

Estimate: 2 story points

Set Up Local Development Environment for Supabase with Prisma

Description:

Currently, our development workflow involves pushing all changes directly to the main database on Supabase. This setup lacks a dedicated local development environment, leading to potential issues with testing and development iteration speed. The goal of this ticket is to establish a local development environment for Supabase using Prisma, ensuring that we can work efficiently and test changes locally before pushing them to the main database.

Key Changes:

  1. Configure local development environment for Supabase.
  2. Integrate Prisma for ORM and database management.
  3. Update development scripts and configurations for seamless local development.

Tasks:

  1. Install and configure Prisma CLI for local database management.
  2. Set up a local development database using Supabase.
  3. Configure environment variables for local development.
  4. Update project scripts and configurations to use the local database during development.
  5. Test local development environment to ensure it mirrors the main database setup accurately.

Testing Plan:

  1. Test CRUD operations locally using Prisma and Supabase.
  2. Verify that environment variables are correctly set up for local development.
  3. Ensure that development scripts work seamlessly with the local database.

Acceptance Criteria:

  • Developers can run the project locally and interact with a dedicated development database.
  • CRUD operations work as expected in the local environment.
  • Development scripts and configurations are updated to use the local database.
  • The local development environment accurately mirrors the main database setup.

Start New Workout Epic

Description

This epic focuses on implementing features related to starting and completing workouts within the Swole application. It includes functionalities such as prepopulating data fields with defaults, implementing data field max values, providing a finish button to complete workouts, and displaying a breakdown of completed workout data.

Implementation Details:

  • Develop logic to prepopulate workout data fields with default values and set data field max values for data integrity.
  • Create a UI button and backend logic to handle workout completion when the finish button is pressed.
  • Design and develop a new screen to display a breakdown of completed workout data.

Testing:

  • Test the pre-population functionality to ensure data fields are correctly filled with defaults and that data field max values are enforced.
  • Test the finish button functionality to verify that workouts are marked as completed accurately.
  • Test the new screen to ensure it accurately displays the breakdown of completed workout data.

Acceptance Criteria:

  • Data fields are pre-populated with defaults, and data field max values are enforced.
  • Users can mark workouts as completed by pressing the finish button, and the status is updated accordingly.
  • Users can view a detailed breakdown of completed workout data on the new screen.

Priority:

  • High

Estimate:

Dependencies:

  • Backend API endpoints for updating workout status and retrieving and setting completed workout data.

Integration of Expanded Component with StartNewWorkout Page

Description:
This ticket is part of the effort to enhance the exercise component's behavior within the expanded view and integrate it into the workout page, as described in the "Vertically Expand Exercise Component onClick" ticket. The goal is to ensure seamless integration of the expanded exercise component with the workout page.

Implementation Details:

  • Update the workout page to display the expanded exercise component and its sets accurately.

Testing:

  • Verify that the expanded exercise component integrates smoothly with the workout page.
  • Perform end-to-end testing to ensure the expanded component functions correctly within the workout page context.

Acceptance Criteria:

  • The expanded exercise component should be seamlessly integrated into the workout page.
  • The code implementation should follow the project's coding standards and guidelines.
  • Comprehensive testing should be conducted to confirm successful integration.

Priority: Medium

Estimate: 2 story points

Dependencies:

  • The expanded exercise component functionality, add exercise sets functionality, and exercise set status and management should be in place.

Profile Page Completion Epic

Description:

Complete the functionality of the profile page based on the existing UI skeleton.

Implementation Details:

  • Develop profile editing capabilities, including updating user information such as name, email, profile picture, and bio.
  • Implement a Week-at-a-Glance modal, allowing users to view workouts they have completed or have coming up.
  • Integrate with backend services to fetch and display user data dynamically on the profile page.

Testing:

  • Perform unit tests for profile editing and week at glance functionality, ensuring data is updated correctly.
  • Conduct integration tests to verify seamless communication with the backend for fetching and displaying user data.

Acceptance Criteria:

  • Users can edit and save changes to their profile information.
  • Profile page displays accurate and up-to-date user data fetched from the backend.
  • The profile page is responsive and functions correctly on different devices.

Priority:

High

Estimate:

Dependencies:

  • Completion of backend API endpoints for profile data management.
  • UI design and layout finalized for the profile page.

Set up Pre-commit Hook for Prettier Formatting

Description:

The goal of this ticket is to implement a pre-commit hook that automatically formats code using Prettier before committing changes to the version control system. This will ensure consistent code formatting across the codebase, improve readability, and reduce manual formatting efforts for developers.

Implementation Details:

  • Install Prettier as a development dependency (npm install --save-dev prettier).
  • Create a .prettierrc file to define Prettier configuration options (e.g., indentation, line width).
  • Configure the pre-commit hook in the project's version control system to run Prettier before each commit.
  • Test the pre-commit hook to verify that code formatting is applied automatically.

Testing:

Manually test the pre-commit hook by making changes to code files and ensuring that Prettier formats the code on commit.

Acceptance Criteria:

The pre-commit hook is successfully set up and formats code using Prettier before each commit. Testing confirms that code formatting is consistent across the codebase.

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.