A cycling race time calculator that helps you plan your race strategy. Calculate finish times and required speeds based on race distance and your goals.
This project is being built in public! Follow along with the development process.
- Frontend: Next.js (TypeScript)
- Backend: Node.js + Express (TypeScript)
- Database: PostgreSQL (Supabase)
- Authentication: Supabase Auth
- Hosting: Vercel (Frontend)
- Code Quality: ESLint + Prettier
- ✅ Secure user authentication (signup/login/logout)
- ✅ View race map
- ✅ Enter planned start time
- ✅ Enter estimated race time
- ✅ Calculate finish time and required speed
- ✅ Mobile-friendly interface
- Node.js 18+ installed
- Supabase account
- Git
-
Clone the repository
git clone <your-repo-url> cd raceplanner
-
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env
Then edit
.envwith your Supabase credentials:- Go to Supabase
- Create a new project
- Copy your project URL and anon key from Settings > API
-
Run the development servers
npm run dev
This will start:
- Frontend: http://localhost:3000
- Backend: http://localhost:3001
raceplanner/
├── frontend/ # Next.js TypeScript frontend
├── backend/ # Express TypeScript API
├── .env.example # Environment variables template
├── .gitignore # Git ignore rules
└── package.json # Root workspace configuration
IMPORTANT: Never commit .env files or secrets to the repository. Always use .env.example as a template.
This app is designed mobile-first to provide the best experience for cyclists on the go.
- All distances are in kilometres
- All time calculations use seconds internally
- Speed is calculated as km/h
MIT