kairos/
├── src/
│ ├── main/ # Electron main process (IPC handlers, Drizzle, services)
│ ├── preload/ # Electron preload scripts (IPC bridge)
│ └── renderer/ # Frontend - React + Vite
├── drizzle/ # Database schema and migrations
├── build/ # App icons for packaging
└── electron.vite.config.ts
- Node.js (v18+)
- npm
Install dependencies:
npm installStart the Electron app in development mode:
npm run devThis single command:
- Builds the main and preload processes
- Starts the Vite dev server for the renderer (hot reload)
- Launches the Electron window with DevTools
Build and package the application for distribution:
# Build for macOS only
npm run build:mac
# Build for Windows only
npm run build:win
# Build for Linux only
npm run build:linux
# Build for all platforms
npm run build:allOutput will be in the dist/ directory.
Remove build artifacts and user data for a fresh start:
rm -rf dist/ out/ ~/Library/Application\ Support/kairos/dist/- packaged app outputout/- compiled source~/Library/Application Support/kairos/- user data (database, settings)
The application uses SQLite for local storage via Drizzle ORM:
- Development:
drizzle/dev.db - Production:
<user-data>/kairos.db(automatically created on first run)
- Desktop-First: Single-user Electron application with local SQLite database
- IPC Communication: Main process handles database and system operations, renderer handles UI
- Real-Time Preview: Live preview compiles Typst code using WASM in the renderer process
- Resume Templates: Templates are generated programmatically using Typst
- AI Workflows: Web Worker-based AI services using Vercel AI SDK
Frontend (Renderer):
- React 19 + TypeScript
- TanStack Router + Query
- Tailwind CSS
- Typst WASM compiler
Main Process:
- Electron
- Drizzle ORM + SQLite
- electron-vite for build tooling
- electron-store for settings