Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ Can you create a plan for this?"
```

Claude will use the `create_plan` tool, which:
- Creates a plan in SQLite (`~/.boost/boost.db`)
- Creates a plan in SQLite (see Database location below)
- Starts a web server on `localhost:3456`
- Opens your browser to the plan UI
- Returns the plan URL
Expand Down Expand Up @@ -135,7 +135,11 @@ Another instance is running. Kill it or change the port in `src/mcp-server.ts` (

**Database location**

Plans are stored in `~/.boost/boost.db`. Delete this file to reset.
Plans are stored in:
- **macOS**: `~/Library/boost/boost.db`
- **Linux**: `$XDG_DATA_HOME/boost/boost.db` (or `~/.local/state/boost/boost.db` if `XDG_DATA_HOME` is not set)

Delete this file to reset.

**WebSocket connection failed**

Expand All @@ -155,7 +159,7 @@ npm run seed # populate test data

- **MCP server** (stdio) — exposes tools to Claude
- **Express + WebSocket** (localhost:3456) — serves UI and pushes real-time updates
- **SQLite** (`~/.boost/boost.db`) — stores plans, sections, comments, provocations
- **SQLite** (platform-specific location) — stores plans, sections, comments, provocations
- **Svelte 5 frontend** — reactive UI with markdown editing and diff view

## License
Expand Down
16 changes: 14 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 23 additions & 4 deletions src/server/db.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Database from 'better-sqlite3';
import { mkdirSync } from 'fs';
import { join } from 'path';
import { homedir } from 'os';
import { join, dirname } from 'path';
import { homedir, platform } from 'os';
import { v4 as uuid } from 'uuid';
import type {
Plan,
Expand All @@ -14,9 +14,28 @@ import type {
FeedbackResult,
} from './types.js';

const dbDir = join(homedir(), '.boost');
function getDbPath(): string {
const home = homedir();
const plat = platform();

if (plat === 'darwin') {
// macOS: ~/Library/boost/boost.db
return join(home, 'Library', 'boost', 'boost.db');
} else {
// Linux and others: $XDG_DATA_HOME/boost/boost.db or $HOME/.local/state/boost/boost.db
// Note: Using .local/state instead of .local/share (XDG_DATA_HOME default) for state data
const xdgDataHome = process.env.XDG_DATA_HOME;
if (xdgDataHome) {
return join(xdgDataHome, 'boost', 'boost.db');
} else {
return join(home, '.local', 'state', 'boost', 'boost.db');
}
}
}

const dbPath = getDbPath();
const dbDir = dirname(dbPath);
mkdirSync(dbDir, { recursive: true });
const dbPath = join(dbDir, 'boost.db');

const db = new Database(dbPath);
db.pragma('journal_mode = WAL');
Expand Down