chore: scaffold vite react-three project
Establish initial project structure for LE BUS (clement.saillant.cc), a demoscene-style personal identity hub built with Vite, React, and react-three-fiber. Changes: - Add package.json with dependencies (React 19, Three.js, react-three/fiber, zustand, playwright for e2e) - Add tsconfig.json with ES2022 target and react-jsx support - Add vite.config.ts with React plugin - Add minimal index.html, src/main.tsx, and src/style.css - Add README.md with usage commands - Add .gitignore (node_modules, dist, test artifacts, .DS_Store) - Generate package-lock.json via npm install Note: chiptune3 removed from dependencies (not on npm registry; will be isolated behind src/audio/modPlayer.ts in Task 11 with mocks). Build and test harness verified: - npm run build succeeds → dist/index.html created - npx vitest run --passWithNoTests exits 0
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
node_modules/
|
||||
dist/
|
||||
test-results/
|
||||
playwright-report/
|
||||
*.local
|
||||
.DS_Store
|
||||
@@ -0,0 +1,9 @@
|
||||
# clement.saillant.cc — LE BUS
|
||||
|
||||
Demoscene-style personal identity hub: a bus driving across a giant
|
||||
PCB. Spec: docs/superpowers/specs/2026-07-09-clement-saillant-cc-design.md
|
||||
|
||||
- `npm run dev` — dev server
|
||||
- `npm test` — unit tests (vitest)
|
||||
- `npm run e2e` — smoke tests (playwright)
|
||||
- `npm run build` — static build in dist/
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
<!doctype html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Clément Saillant — LE BUS</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="/src/main.tsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
Generated
+3076
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "clement-saillant-cc",
|
||||
"private": true,
|
||||
"version": "0.1.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "tsc -b && vite build",
|
||||
"preview": "vite preview --port 4173",
|
||||
"test": "vitest run",
|
||||
"e2e": "playwright test"
|
||||
},
|
||||
"dependencies": {
|
||||
"@react-three/drei": "^10",
|
||||
"@react-three/fiber": "^9",
|
||||
"react": "^19",
|
||||
"react-dom": "^19",
|
||||
"three": "^0.177.0",
|
||||
"zustand": "^5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@playwright/test": "^1.53",
|
||||
"@types/react": "^19",
|
||||
"@types/react-dom": "^19",
|
||||
"@types/three": "^0.177.0",
|
||||
"@vitejs/plugin-react": "^4",
|
||||
"typescript": "^5.8",
|
||||
"vite": "^7",
|
||||
"vitest": "^3"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
import './style.css'
|
||||
|
||||
console.log('LE BUS — scaffold OK')
|
||||
@@ -0,0 +1,2 @@
|
||||
:root { color-scheme: dark; }
|
||||
body { margin: 0; background: #05010d; color: #ffd23f; font-family: "Courier New", monospace; }
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2022",
|
||||
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
||||
"module": "ESNext",
|
||||
"moduleResolution": "bundler",
|
||||
"jsx": "react-jsx",
|
||||
"strict": true,
|
||||
"noEmit": true,
|
||||
"skipLibCheck": true,
|
||||
"isolatedModules": true,
|
||||
"types": ["vite/client"]
|
||||
},
|
||||
"include": ["src", "vite.config.ts", "e2e"]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"root":["./src/main.tsx","./vite.config.ts"],"version":"5.9.3"}
|
||||
@@ -0,0 +1,6 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import react from '@vitejs/plugin-react'
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [react()],
|
||||
})
|
||||
Reference in New Issue
Block a user