个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证A bike trip planner. Paste a route, get a structured day-by-day roadbook with pacing, elevation alerts, accommodation suggestions, and a shareable content.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Plan your bikepacking adventures with confidence.
Paste a Komoot URL or upload a GPX file, and get a structured day-by-day roadbook
with smart pacing, safety alerts, and accommodation suggestions.
Desktop — Split view with day-by-day timeline, contextual alerts, and interactive map.查看完整 README ↗Desktop — Split view with day-by-day timeline, contextual alerts, and interactive map.
Mobile — Day-by-day timeline on a phone-sized screen.
Bike Trip Planner is a bikepacking trip planner with a decoupled architecture: a PHP backend (API Platform 5 on Symfony 8.1) computes trips through async workers, and two clients, a Next.js 16 web app and an Expo native mobile app, manage presentation and state.
It imports a route from Komoot, Strava, RideWithGPS or a GPX upload, then builds a day-by-day roadbook with:
See the feature overview, or the rider tutorial Plan your first trip.
git clone https://github.com/vincentchalamon/bike-trip-planner.git
cd bike-trip-planner
make start-dev
The app is available at:
See Getting Started for prerequisites and detailed setup instructions.
Bike Trip Planner has two surfaces on one API: the web app above (discovery, sharing, planning on a large screen) and a native mobile app for in-the-field use: offline consultation of upcoming trips, in-ride assistance and push notifications (ADR-053).
The codebase is an npm-workspaces monorepo:
| Workspace | Role |
|---|---|
core/ (@btp/core) | Framework-free shared package: OpenAPI-derived types, Zod schemas, Mercure wire types, and the pure SSE reconciliation reducers used by both web and mobile |
pwa/ | Next.js 16 web app |
mobile/ | Expo / React Native app (Android first, iOS later) |
The mobile foundation is documented in ADR-054 (design system), ADR-055 (state architecture), and ADR-056 (Mercure header-auth).
npm install # install all workspaces from the repo root
npm run android --workspace mobile # build & launch on an Android device/emulator (expo run:android)
npm run start --workspace mobile # start the Expo dev server
Full documentation is published with MkDocs Material at
https://vincentchalamon.github.io/bike-trip-planner/, and the sources live in docs/.
| Document | Description |
|---|---|
| Plan your first trip | Rider tutorial: from a route link to an exported roadbook |
| Getting Started | Developer tutorial: requirements, installation, and local setup |
| Features | What the product does, by area |
| Connect an AI agent | Plug an MCP client into your account |
| MCP tools | The tools an AI agent can call |
| Supported route sources | Accepted Komoot / Strava / RideWithGPS / GPX inputs |
| Accommodation types | Logical types, OSM tags, pricing heuristic |
| Alert engine | Every alert code: severity, priority, trigger |
| External data sources | OSM, DataTourisme, OpenAgenda, Wikidata, Open-Meteo, Nominatim |
| Architecture | System overview and the reasoning behind the ADRs |
Contributions are welcome! Please read the Contributing Guide before submitting a pull request.
make start-dev # Boot Docker environment
make qa # Run full QA suite (linting, static analysis, formatting)
make test # Run all tests (QA + PHPUnit + Playwright)
This project is licensed under the GNU Affero General Public License v3.0.
| Architecture Decisions | 82 ADRs explaining every major technical choice |
| Contributing | Development workflow, standards, and tooling |
| Deployment | CI/CD pipeline, required secrets, rollback procedure |
| Runbooks | Operations playbooks: workers, DB, Redis, Mercure, zones, releases |
| Claude Code Tooling | MCP servers, hooks, and skills for AI-assisted development |
| Legal & Licensing | Project licence, data attribution, and GDPR posture |