This BFF-architected, AI-powered application takes advantage of the Strava API to acquire running data on authenticated athletes and present it in valuable ways to the users.
This page will be comprised of...
- A card component for each athlete that can be clicked on to go to specific stats and data visualizations for the given athlete.
- A menu linking the following...
- A 'Basic Stats' page.
- A 'Database' page.
- A 'Chat' page.
This page will hold specific data to the athlete selected on the main page. A user will only be directed to this page if they click on a card component from the main page.
This page will hold basic week recap stats, pulled from the strava_api.activities DB table.
This page will have a filterable table to hold all runs stored in the strava_api.activities DB table. The user will be able to filter by all columns.
In a traditional chatbot interface, the user will be able to ask questions about their training and receive intelligent, GenAI-driven answers. This feature will largely by driven by a TAG, or Table Augmented Generation, mechanism.
Follow these steps to get everything up and running:
- Ensure you're using the virtual environment:
.venv\Scripts\Activate.ps1. - In one terminal, navigate to the react directory and run
npm start. - In another terminal, navigate to the Node server, backend.js, and run
npm start. - In a third terminal, navigate to the FastAPI backend server, app.py, and run one of two commands:
- Reload on code changes:
uvicorn app:app --reload - No reload:
TBD
- Reload on code changes:
- A user authenticates with the app by clicking the 'Authenticate' button on the FE.
- The request is routed from the FE to the BE NodeJS server,
server.js. - The NodeJS server receives the request and routes it to the BE FastAPI server.
- The BE FastAPI endpoint receives the request and adds the newly authenticated user to the
strava_api.athletesDB table. - Going forward, the new user's activities will be acquired on a scheduled frequency, going into the
strava_api.activitiesDB table.