Enduro Stats

Enduro Stats project screenshot

EnduroStats is a fitness app that helps users track activities, set goals, and monitor progress with a sleek, responsive design.

Technologies Used:

Explanation:

As an avid runner, I wanted to create a personal dashboard to track my running statistics and visualize my progress as I trained for the Toronto Waterfront Marathon in 2024. The goal was to learn how to interact with an external API and enhance my skills in frontend and backend development. Effective data visualization was crucial in helping users quickly grasp their performance trends and make informed decisions about their training regimen.

Challenges:

  • Understanding and implementing OAuth authentication to securely access the Strava API.
  • Handling and visualizing complex datasets effectively to provide meaningful insights.
  • Ensuring the application is responsive and user-friendly, providing a seamless experience for users.

Implementation Details:

To integrate with the Strava API, I implemented OAuth authentication to securely obtain and store access tokens. I created API routes using Next.js to handle the OAuth callback, exchange the authorization code for an access token, and store the token securely in cookies. Additionally, I set up API routes to fetch user activity data from the Strava API using the stored access token. To ensure efficient data handling, I implemented caching and pagination mechanisms. This approach allowed me to securely and efficiently fetch and display running statistics in the application, providing valuable insights and visualizations for users.

What I Learned:

  • Gained a deeper understanding of React and Next.js, including server-side rendering and client-side navigation.
  • Enhanced my skills in frontend development, focusing on responsive design and user experience.
  • Acquired skills in API development and integration, including authentication and data handling.
  • Learned best practices fro data visualization and handling large datasets.

Changes:

The website was built to be a personal dashboard for me to track my running statistics and visualize my progress, but as I got more comfortable with interacting with the Strava API, I decided to make it a public website to help other runners. In the future I plan to add more features to the website to help runners in their training journey. Also I would like to add the ability to add friends and compare runs and rides. Much of the features I would like to add are more dependent on an actual database and backend, which I am working on learning.

Screenshots: