尚未检测到更新。GitHub 发布版本后会显示在这里。
Salish Sea Route and Trip Planner
翻译准备中
正在加载完整 README。
查看完整 README ↗Multi-day trip-planning aid for cruising Puget Sound and the Salish Sea. Pick a start, a first-night destination, and a trip length (1–7 days); the planner chains the remaining days for you, picking each night's stop to fit your preferred day length. Not for navigation — carry current charts.
Controls:
Each planned day shows the day's wind (direction, sustained and gust speed, Beaufort force, and your point of sail on that heading), plus every tidal pass on the route with your estimated arrival time, the predicted current at that moment, and the next slack — so a pass reads as an appointment rather than a distance.
Routing data is scraped from nwcruising.net's ~220 harbor/marina/point pages, each listing distances, times, and "via" passage notes to other locations. See Data below for how that's licensed and why the scraped output isn't committed to this repo.
See the planner roadmap for upcoming work and the architecture decision log for design decisions.
bc-charts-pm reposrc/domain (pure types/logic) →
src/application (routing graph, trip planner, ports) →
src/adapters (fs-backed repository, Next server glue) →
src/components (UI)scripts/copy-maplibre-worker.mjs stages maplibre-gl's web worker into
public/maplibre/ (run automatically on install, dev, and build).
maplibre otherwise computes its worker URL at runtime from
import.meta.url, which under Turbopack resolves to a chunk path that's
never emitted — the worker 404s and every GeoJSON layer silently fails
to draw while raster tiles and markers still render. map.tsx calls
setWorkerUrl() to point at the staged copy. If vector layers ever stop
rendering, check that copy is present and matches the installed
maplibre-gl version (public/maplibre/VERSION).
npm install
npm run scrape # crawl nwcruising.net -> public/data/*.json (one-shot, ~2 min)
npm run dev # http://localhost:3000
Run npm run scrape before npm run dev or npm run build to populate the
planner. The app requires route data by default. CI can opt into an
empty dataset for its build and supplies fixture data at test time.
netlify.toml configures Netlify to use Node.js 24, run the
standard npm build, and deploy Next.js through Netlify's automatically managed
OpenNext adapter.
edges.json and locations.geojson are gitignored, so a Git-based build
checks out a repo with no routes in it. The home page reads route data
and the shared trip URL at request time. The build fetches the data
before compiling the app so the deployment can serve routes.
npm run build therefore runs npm run dataset first
(scripts/fetch-dataset.mjs), which pulls both
files from wherever you host them:
The files live in a private Cloudflare R2 bucket, read over R2's S3-compatible API with a SigV4-signed request:
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗