- Powered by Astro
- Responsive design
- Dark mode
- Social links
- RSS feed
- Simple blog
- Strava Running Challenge Tracker - Real-time progress tracking with heatmap and stats
This site features a running challenge tracker that integrates with the Strava API to display real-time progress, activity history, and detailed statistics.
For detailed setup instructions, see docs/STRAVA_SETUP.md
Quick overview:
- Create a Strava API application at https://www.strava.com/settings/api
- Generate OAuth refresh token via browser authorization flow
- Set up Cloudflare KV namespace for caching and rate limiting
- Configure environment variables (Client ID, Client Secret, Refresh Token, Webhook Verify Token)
- Register webhook for real-time cache invalidation when new activities are created
The tracker displays:
- Total distance and progress percentage toward yearly goal
- Days remaining and required daily pace to reach goal
- Calendar heatmap showing activity distribution throughout the year
- Recent activities with pace, duration, and distance details
- Real-time updates via Strava webhooks
- Bilingual support (English/Spanish)
Tech stack:
- Frontend: Astro SSR pages with responsive design
- API: Strava API v3 with OAuth 2.0 authentication
- Caching: Cloudflare KV (24-hour TTL)
- Rate Limiting: Custom implementation using KV atomic operations
- Webhooks: Automatic cache invalidation on new activities
- Testing: Vitest with 98%+ test coverage
- Clone this repository.
git clone git@github.com:baezor/website.git website. - Navigate to the project directory using
cd website. - Install dependencies and start the server
npm i && npm run start.
- Development: Run
npm run devornpm startto start the development server. - Build: Use
npm run buildto generate a production build. - Preview: Run
npm run previewto preview the production build. - Astro CLI: Explore additional Astro CLI commands using
npm run astro.
Feel free to use my repository as a template for your own website. To customize the links displayed in your website, follow these steps:
- Open the
src/data/index.tsfile in your project. - You'll see an array of objects with the information of the links. Add, remove, or update the links as needed.
const links = [
{
label: "Add me to your network on LinkedIn",
url: "https://www.linkedin.com/in/angelromerobaez/",
},
{
label: "Check out my GitHub",
url: "https://github.com/baezor/",
},
];