Running Days Documentation
Welcome to the Running Days documentation. Running Days is a fitness tracking application that counts unique running days toward a yearly goal.
Philosophy
Running Days emphasizes sustainable consistency over fragile streaks. Missing a day doesnβt reset your progress - every run counts toward your yearly goal. Whether you aim for 100 days, 200 days, or the default 300 days, the app tracks your progress and celebrates your achievements.
Quick Navigation
- Quickstart Guide - Get up and running in 5 minutes
- Architecture Overview - Understand the system design
- API Reference - REST API documentation
Key Features
| Feature | Description |
|---|---|
| Year-Long Goals | Set and track progress toward running a target number of days per year |
| Apple Health Sync | Automatic workout import via Health Auto Export app |
| Streak Tracking | Current streak, longest streak, and streak history |
| Achievements | Milestone celebrations at 50, 100, 150, 200, 250, 300 days |
| Insights | Monthly breakdowns, pace trends, and distance analytics |
Tech Stack
| Layer | Technology |
|---|---|
| Frontend | SvelteKit 2, Svelte 5 (runes), Tailwind CSS 4 |
| Backend | Fastify 5, TypeScript |
| Database | SQLite/PostgreSQL, Drizzle ORM |
| iOS | Swift, SwiftUI, HealthKit |
| Monorepo | pnpm workspaces + Turborepo |
Project Structure
text
running-days/
βββ apps/
β βββ api/ # Fastify REST API
β βββ web/ # SvelteKit dashboard
β βββ oss/ # Self-hosted version
β βββ ios/ # Native iOS app
β
βββ packages/
β βββ types/ # Shared TypeScript types
β βββ utils/ # Utilities and formatters
β βββ database/ # Drizzle ORM schema
β βββ business-logic/ # Core algorithms
β
βββ infrastructure/
βββ docker/ # Dockerfiles
βββ observability/ # Grafana, Prometheus, LokiGetting Help
- GitHub Issues - Bug reports and feature requests
- Contributing Guide - How to contribute