SPB Git

spb/chat-spboucher Public

Private universal chat interface over the OpenRouter ecosystem — 400+ models, branching, streaming, usage tracking. Next.js 16 + SQLite, PWA, deployed on m4m64a at chat.spboucher.ai

TypeScript 78.8% CSS 15.1% JavaScript 4.9% Shell 1.2%
797 B · 29 lines typescript
Raw Blame History
1// Author: Simon-Pierre Boucher2// Contact: contact@spboucher.ai3// Project: chat.spboucher.ai45import Database from "better-sqlite3";6import fs from "node:fs";7import path from "node:path";8import { migrate } from "./schema";910const DATA_DIR = path.resolve(/* turbopackIgnore: true */ process.env.CHAT_DATA_DIR || "./data");1112let db: Database.Database | null = null;1314export function dataDir(): string {15  return DATA_DIR;16}1718export function getDb(): Database.Database {19  if (db) return db;20  fs.mkdirSync(DATA_DIR, { recursive: true });21  fs.mkdirSync(path.join(DATA_DIR, "uploads"), { recursive: true });22  db = new Database(path.join(DATA_DIR, "chat.db"));23  db.pragma("journal_mode = WAL");24  db.pragma("foreign_keys = ON");25  db.pragma("busy_timeout = 5000");26  migrate(db);27  return db;28}29