Repository navigation
Lantern Tide v0.1.0 — First light
The first tagged release of Lantern Tide: a quiet, static-first web experience. You arrive at a dark shore, step through a tunnel of warm light, and land on a small island street where a few shops have opened their doors.
This is a Vibe Code project — made to let a passing idea keep breathing, not to be a flawless codebase. The vision and the aesthetic are the floor; everything inside is meant to be reached by a person, not a crawler. Treat its words as a small light drifting in on the tide, not a source to rely on.
Also available in: Traditional Chinese
The experience
- Front door. A static, indexable threshold: a title, a tagline, an Enter button, and a Skip button. It is the one page a cold visitor or a crawler ever sees.
- The tunnel is the loader. Pressing Enter folds a little paper boat and carries it through a tunnel of warm light while the destination loads; the walk ends in a cross-fade, never a hard page cut.
- The street. A small island street is the hub, and the shops open from there. Leaving a shop returns you to the front door to set out again — the destination is a waypoint, not an endpoint.
What's open
- Café · sit a while, think. Fifty pairs of a question and a public-domain quote — Seneca, Marcus Aurelius, Laozi, Su Shi, Rilke, and more — drawn one at a time.
- Library · look it up, fill back up. A curated reading list across five shelves: facing reality and resilience; time and impermanence; stillness, focus and solitude; meaning, work and calling; and more modern voices. Each entry is an outbound link.
- Lookout · the legend. A twelve-beat story of the first lookout and the lamp that has never gone dark, advanced by tap or by keyboard.
- Paper-Boat Shop · fold one, let it go. Name a worry or pick one of eight directions, set the boat on the tide, and let it drift off somewhere unseen.
- A couple of empty storefronts, marked "coming soon."
Languages
- Traditional Chinese (the default, the site's mother tongue) and English, switchable in place — the space re-mounts so its words swap. Adding a language is dropping in one locale file.
Accessibility and motion
- prefers-reduced-motion lands you instantly, with no movement; Skip does the same on demand.
- The one exception: the front door's slow tide and breathing lantern keep moving, gently, even under reduced motion — they are the site's identity, low-amplitude, and not vection. Pressing Enter is an explicit opt-in to full motion for the rest of the session.
- Visible focus rings on every control, keyboard-operable interactions, selectable and copyable library text, and live-region updates for the unfolding story.
Under the hood
- Vite 6 and vanilla TypeScript. No framework runtime and no animation library — a pure static bundle that can be hosted anywhere static.
- Each space is its own lazy chunk, fetched only after you enter, so a cold load or a crawler that does not run JavaScript stops at the front door.
- Path (history) routing under a single base segment, with an SPA
404.htmlfallback that covers deep links on the GitHub Pages project subpath. - Spaces and locales are auto-discovered from the folder layout; adding either needs no router or loader edit.
- Quality gate: strict TypeScript, type-checked ESLint, Stylelint, Prettier, 23 unit tests (Vitest) and 10 end-to-end tests (Playwright). CI runs the gate on every push and pull request, with the static-and-unit checks and the Playwright e2e as parallel jobs; deploys are on-demand by tag and publish only a commit whose gate is green. Third-party Actions are pinned to commit SHAs.
Links
- Live site: https://fishalchemist.github.io/lantern-tide/
- Source: https://github.com/FishAlchemist/lantern-tide
- Versioning policy: https://github.com/FishAlchemist/lantern-tide/blob/v0.1.0/docs/versioning.md
- License: MIT