- Install better-sqlite3 + drizzle-orm as runtime deps; drizzle-kit + @types/better-sqlite3 as devDeps
- Define 5 tables in src/main/db/schema.ts: clients, projects, tasks, checkpoints, notes
- All IDs are TEXT (UUID); types inferred via InferSelectModel/InferInsertModel
- initDb() in src/main/db/index.ts opens adiuva.db at app.getPath('userData'), runs CREATE TABLE IF NOT EXISTS (non-destructive push), enables WAL mode
- Call initDb() in main process app ready handler
- Externalize better-sqlite3 in vite.main.config.mts; add AutoUnpackNativesPlugin to forge.config.ts
- Add drizzle.config.ts for drizzle-kit CLI support
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
60 lines
1.8 KiB
JSON
60 lines
1.8 KiB
JSON
{
|
|
"name": "adiuva",
|
|
"productName": "Adiuva",
|
|
"version": "0.1.0",
|
|
"description": "Local-first intelligent desktop workspace",
|
|
"main": ".vite/build/main.js",
|
|
"private": true,
|
|
"scripts": {
|
|
"start": "electron-forge start",
|
|
"package": "electron-forge package",
|
|
"make": "electron-forge make",
|
|
"publish": "electron-forge publish",
|
|
"lint": "eslint --ext .ts,.tsx ."
|
|
},
|
|
"keywords": [],
|
|
"author": "rmusso",
|
|
"license": "MIT",
|
|
"devDependencies": {
|
|
"@electron-forge/cli": "^7.11.1",
|
|
"@electron-forge/maker-deb": "^7.11.1",
|
|
"@electron-forge/maker-rpm": "^7.11.1",
|
|
"@electron-forge/maker-squirrel": "^7.11.1",
|
|
"@electron-forge/maker-zip": "^7.11.1",
|
|
"@electron-forge/plugin-auto-unpack-natives": "^7.11.1",
|
|
"@electron-forge/plugin-fuses": "^7.11.1",
|
|
"@electron-forge/plugin-vite": "^7.11.1",
|
|
"@electron/fuses": "^1.8.0",
|
|
"@tanstack/router-vite-plugin": "^1.161.1",
|
|
"@types/better-sqlite3": "^7.6.13",
|
|
"@types/electron-squirrel-startup": "^1.0.2",
|
|
"@types/react": "^19.2.14",
|
|
"@types/react-dom": "^19.2.3",
|
|
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
"@typescript-eslint/parser": "^5.62.0",
|
|
"@vitejs/plugin-react": "^5.1.4",
|
|
"autoprefixer": "^10.4.24",
|
|
"drizzle-kit": "^0.31.9",
|
|
"electron": "40.6.0",
|
|
"eslint": "^8.57.1",
|
|
"eslint-plugin-import": "^2.32.0",
|
|
"postcss": "^8.5.6",
|
|
"tailwindcss": "^3.4.19",
|
|
"typescript": "^5.9.3",
|
|
"vite": "^5.4.21"
|
|
},
|
|
"dependencies": {
|
|
"@tanstack/react-router": "^1.161.1",
|
|
"better-sqlite3": "^12.6.2",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"drizzle-orm": "^0.45.1",
|
|
"electron-squirrel-startup": "^1.0.1",
|
|
"framer-motion": "^12.34.2",
|
|
"lucide-react": "^0.575.0",
|
|
"react": "^19.2.4",
|
|
"react-dom": "^19.2.4",
|
|
"tailwind-merge": "^3.5.0"
|
|
}
|
|
}
|