大学の時間割(1限〜6限+昼休み、8:50〜19:40、月〜金)を アナログ時計 と ミッションコントロール風のスケジュールパネル で同時に表示するダッシュボード。
Ctrl+D で開閉、R で real 復帰、
矢印キーで ±1 分 / ±15 分ステップ。本番ビルドからは dynamic import
ごと tree-shake されて完全に消える。rolldown-vite の npm alias) — Rust 製 Rolldown バンドラで
prod ビルド$state, $derived, $effect)noUncheckedIndexedAccess@tailwindcss/vite) + CSS 変数でテーマトークン単一ルートのフル client-side SPA。SSR もルーターも使わないので、
フレームワーク層を剥がして index.html + main.ts + App.svelte の
最小構成で静的ファイルに書き出す。
ユーザーデータを一切保存しない。
localStorage / sessionStorage / document.cookie / indexedDB
への参照が 本番バンドルからゼロ (dist/ を grep 済)bun install
bun run dev # http://localhost:5173/
docker compose 経由で全操作が走る:
docker compose up dev # dev サーバ (:5173)
docker compose run --rm check # svelte-check
docker compose run --rm lint # Biome
docker compose run --rm test # Vitest
docker compose up preview # 本番ビルドを preview (:4173)
Dockerfile は multi-target で check / lint / test / build /
build-output stage を持つので、CI も Pages デプロイも同じ Dockerfile
を使う。
bun run build # ルート配信(dist/)
BASE_PATH=/myapp bun run build # サブパス配信(GitHub Pages 等)
bun run preview # ビルド成果物のプレビュー
bun run check # svelte-check (TypeScript + Svelte)
bun run lint # Biome
bun run test:run # Vitest (119 tests)
bun run build # static 出力 (build/)
main ブランチへの push で GitHub Actions が走る:
ci.yml: check / lint / test を並列実行deploy.yml: Docker で static ビルドして GitHub Pages に配置Pages は https://<user>.github.io/analog-timetable-clock/ で公開される。
BASE_PATH は actions/configure-pages が自動注入。