Harmoni

Linear-inspired real-time collaboration platform. Web + desktop from one codebase.

Quick Start

One command to scaffold a new project (no clone needed):

pnpm create harmoni my-project
cd my-project
psql -U postgres -h localhost -c "CREATE DATABASE harmoni;"
pnpm db:migrate
pnpm dev

Web at http://localhost:3000, API at http://localhost:4000/graphql.

Tech Stack

Layer Stack
Web React, Vite, MobX, Apollo Client, Tailwind, shadcn-style UI
Desktop Electron (loads web app)
API Express, Apollo Server (GraphQL), WebSocket
Data PostgreSQL (Drizzle ORM), Redis (optional)
Shared Zod schemas, pino logger, TypeScript types

Project Structure

harmoni/
├── apps/
│   ├── backend/    # GraphQL API, WebSocket, Drizzle
│   ├── web/        # React + MobX + Vite
│   └── desktop/    # Electron wrapper
├── packages/
│   ├── shared/     # Types, schemas, logger
│   └── create-harmoni/  # Scaffold CLI
├── docs/
├── scripts/
└── docker-compose.yml

Clone or Template

Other ways to get the code:

Then run pnpm install and pnpm run setup.

Customization

Rebranding for a different product? Update:

See CUSTOMIZATION.md for the full checklist.

Commands

pnpm dev Start web, backend, desktop
pnpm dev:web Web only (port 3000)
pnpm dev:backend API only (port 4000)
pnpm dev:desktop Electron app
pnpm build Build all apps
pnpm db:migrate Run migrations
pnpm db:generate Generate migrations