CleanFrame
삼성 The Frame용 개인 홈 화면, 포크와 맞춤을 위한 시작점
아직 감지된 업데이트가 없습니다. 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 전문 보기 ↗