Status: beta (v0.1.0). Early, unstable release — APIs and data schemas may change between versions. Back up your data before upgrading.
Self-hosted alternative to Linear and ClickUp with project management, task tracking, and team chat.
A live demo is available at https://breeze-demo.minihq.app/
| Password | Role | |
|---|---|---|
demo@breeze.app |
demo1234 |
Owner |
member@breeze.app |
demo1234 |
Member |
guest@breeze.app |
demo1234 |
Guest |
- Multi-workspace (organization) support with a workspace switcher
- Projects, tasks, statuses, cycles, subtasks, labels, attachments, and time tracking
- Kanban board and list views, plus saved cross-project views
- "My Issues" cross-project task view
- Dashboard overview and command palette (Cmd/Ctrl+K)
- Chat: channels, categories, DMs, group DMs, threads, reactions, pins, typing indicators, and presence
- Voice channels over WebRTC, with TURN relay support
- Real-time WebSocket layer for notifications, presence, and message events
- Granular role-based access: org roles, project memberships, per-channel overrides
- Invite flow for bringing teammates in
- Argon2id password hashing and JWT sessions in HttpOnly cookies
- Org-scoped data isolation
| Layer | Technology |
|---|---|
| Backend | Go, chi router, go-chi/render, standard library net/http |
| Database | SQLite via modernc.org/sqlite (pure Go, no CGO) |
| Query layer | sqlc, type-safe code generation from SQL |
| Migrations | pressly/goose, embedded and auto-run on startup |
| Auth | golang-jwt/jwt/v5 and argon2id |
| API docs | swaggo/swag, OpenAPI 2.0 from Go annotations |
| Frontend | Vite, Lit 3, TypeScript (Deno toolchain) |
| State | @preact/signals-core |
- Go 1.26 or newer (see
go.mod) - Deno, used as the frontend toolchain (see
ui/) - For development only: the global tools
air,sqlc, andswag(installed bymake setup)
To run the app you only need the built binary; the prerequisites above apply to building from source.
# 1. Create your configuration from the example
cp .env.example .env
# Edit .env and set JWT_SECRET (required, at least 32 characters)
# 2. Build the UI and the Go binary (output: bin/breeze)
make build
# 3. Run it (listens on PORT, default 8080)
./bin/breezeOpen http://localhost:8080. The first-run setup wizard guides you through creating your organization and admin account. Database migrations run automatically on startup.
Generate a secret with:
openssl rand -base64 32A compose.yaml is included. It builds the image, runs as a non-root user,
and keeps the database and uploads in a named volume.
cp .env.example .env # set JWT_SECRET first
docker compose up -dSee docs/ops/setup.md for systemd, backups, upgrades, and reverse-proxy examples.
Breeze is configured with environment variables, optionally loaded from a
.env file. The full reference is in
docs/ops/configuration.md.
| Variable | Default | Description |
|---|---|---|
PORT |
8080 |
HTTP listen port |
DB_PATH |
./data/breeze.db |
Path to the SQLite database file |
UPLOAD_DIR |
./data/uploads |
Directory for uploaded attachments |
JWT_SECRET |
required | Secret key for signing JWT tokens (at least 32 characters) |
cmd/ Entry points (server, seed)
internal/ Go source: domain, port, store, service, transport, auth, ...
ui/ Vite + Lit SPA
api/swagger/ Generated OpenAPI spec
docs/ Documentation (api/, ui/, ops/, i18n/)
The codebase follows a layered architecture: domain, port, store, service, transport. See docs/api/architecture.md and docs/README.md for details.
Use the make targets for common tasks; the full list is in
docs/api/build-commands.md.
make dev # Hot-reload dev server (requires air and Deno)
make test # Run Go tests
make test-ui # Run UI tests
make build # Build UI and Go binary
make regen-all # Regenerate sqlc, swagger, and API types
make seed # Seed the database with sample datamake dev starts long-running watch processes. To verify changes without a
dev server, use make build and make test instead.
Documentation lives in docs/ and is split by topic:
| Section | Covers |
|---|---|
docs/api/ |
Backend architecture, API, permissions |
docs/ui/ |
Frontend stack, patterns, pitfalls |
docs/ops/ |
Deployment, configuration, self-hosting |
docs/i18n/ |
Internationalization |
Start at docs/README.md.
Contributions are welcome!
Feel free to open an issue to report a bug, request a feature, or ask a question. If you would like to contribute code, please fork the repository and open a pull request.
For larger changes, please open an issue first to discuss what you would like to change. Ensure your pull request passes make build and make test.
Important
This project uses AI agents to assist with development. The primary tooling includes Pi Agent and OpenCode 2, which use open-weight models such as DeepSeek V4 Pro 0813, GLM 5.2, and Kimi K3.


