Add project scaffolding and build configuration

Initialize the session-viewer project — a tool for browsing, filtering,
redacting, and exporting Claude Code session logs as self-contained HTML.

Scaffolding includes:
- package.json with Express server + React client dual-stack setup,
  dev/build/test/lint/typecheck scripts, and a CLI bin entry point
- TypeScript configs: base tsconfig.json (ESNext, bundler resolution,
  strict, react-jsx) and tsconfig.server.json extending it for the
  Express server compilation target
- Vite config: React plugin, Tailscale-aware dev server on :3847 with
  API proxy to :3848, client build output to dist/client
- Vitest config: node environment, test discovery from tests/unit and
  src/client/components
- ESLint flat config: typescript-eslint recommended, unused-vars with
  underscore exception
- Tailwind CSS config scoped to src/client, PostCSS with autoprefixer
- Playwright config: Chromium-only E2E against dev server
- bin/session-viewer.js: CLI entry point that re-execs via tsx with
  browser-open flag

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-29 22:55:31 -05:00
commit 7e15c36e2f
10 changed files with 217 additions and 0 deletions

30
vite.config.ts Normal file
View File

@@ -0,0 +1,30 @@
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import path from "path";
export default defineConfig({
plugins: [react()],
root: "src/client",
resolve: {
alias: {
"@shared": path.resolve(__dirname, "src/shared"),
},
},
server: {
port: 3847,
// Vite only supports one host. Use Tailscale IP so it's reachable
// from both the local machine (via the TS IP) and the tailnet.
// localhost:3847 won't work for the Vite dev server — use the TS IP.
host: "100.84.4.113",
proxy: {
"/api": {
target: "http://127.0.0.1:3848",
changeOrigin: true,
},
},
},
build: {
outDir: "../../dist/client",
emptyOutDir: true,
},
});