Thanks for your interest in contributing! CodeFire is a monorepo with two platform-specific apps that share a common database schema and MCP protocol.
swift/ macOS app (Swift/SwiftUI) — Beta
electron/ Windows/Linux app (Electron/React) — Alpha
landing/ Marketing website
assets/ Shared screenshots and branding
scripts/ Build and packaging scripts
| If you're working on... | Go to... |
|---|---|
| macOS features or bugs | swift/ |
| Windows/Linux features or bugs | electron/ |
| The marketing website | landing/ |
| Build/packaging scripts | scripts/ |
Both the Swift and Electron apps read and write the same SQLite database (~/Library/Application Support/CodeFire/codefire.db on macOS, platform-appropriate paths elsewhere). If you modify the database schema in one app, you must update the other to match.
- Swift migrations:
swift/Sources/CodeFire/Services/DatabaseService.swift - Electron migrations:
electron/src/main/database/migrations/index.ts
cd swift
swift build
# Run with: swift run CodeFireRequires Xcode 15+ or Swift 5.9+ toolchain.
cd electron
npm install
npm run devRequires Node.js 18+.
Windows prerequisites: The Electron app uses native modules (better-sqlite3, node-pty) that need to be compiled against Electron's Node headers. The postinstall script handles this automatically, but you need:
- Python 3.12 (3.13+ may not work due to removed
distutilsmodule) - Visual Studio Build Tools with the "Desktop development with C++" workload (VS 2019, 2022, or 2026)
# Electron tests
cd electron
npm testfeature/<description>— New featuresfix/<description>— Bug fixeschore/<description>— Maintenance, refactoring, docs
- Target the
mainbranch - Include a clear description of what changed and why
- If your change affects both apps, note that in the PR description
- Keep PRs focused — one feature or fix per PR
- Add tests for new Electron functionality
- Swift: Follow standard Swift conventions. The project uses SwiftUI and Swift Package Manager.
- Electron/React: TypeScript with React. Use the existing patterns in
electron/src/renderer/for components and hooks.