Bootstrap: Vite + React + TS + Tailwind v4 + Biome + Vitest - #1
Merged
Conversation
Sets the foundations so the remaining work can focus on the vault client, OAuth, and UI. Choices: - Bun as package manager (matches the vault's runtime). - Vite 6 + React 19 + TypeScript strict + project-reference tsconfigs. - Tailwind v4 with theme tokens borrowed from parachute.computer (sage accent, warm off-white, Instrument Serif / DM Sans / JetBrains Mono). Dark mode via @media (prefers-color-scheme: dark) — the explicit toggle lands in the theme-polish PR. - Biome for lint + format (one tool, one config). - Vitest 3 + Testing Library for unit tests; vite.config and vitest.config split to keep vite's type-check clean under Vite 6. - @/ path alias to src/ for readable imports. Landing page is intentionally a placeholder explaining the scaffold state; vault URL entry and PKCE OAuth land next. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This was referenced Apr 18, 2026
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
First PR in the Lens serialization. Gets the foundations in place so each subsequent PR can focus on one user-visible slice — vault client + OAuth, note list, note view, editor, graph, etc. — without re-litigating tooling.
Stack choices
tsc -bfast.@themelets us express the design tokens directly in CSS.Theme tokens
Palette, typography, and idiom borrowed from
parachute.computerso Lens feels like a sibling, not a stranger:--color-accent: #4a7c59--color-bg: #faf8f4@media (prefers-color-scheme: dark)at the theme level. The explicit light/dark toggle lands in the theme-polish PR (Hotfix: header label fallback + VITE_EXPOSE gate #10 in the serialization).Layout
@/path alias tosrc/for readable imports.What this PR deliberately does not do
Keeping PR #1 small and landable is the point.
Gates
bun run typecheck— cleanbun run lint— cleanbun run test— 2/2 pass (smoke test for the landing shell)bun run build— 196 kB JS / 10 kB CSS gzippedbun run dev— starts on :5173, entry module transformsTest plan
bun install && bun run dev, visit http://localhost:5173, confirm the placeholder renders with the parachute.computer palettebun run test— expect 2 passing testsbun run build— expect no warnings🤖 Generated with Claude Code