Comet is a local-first notes app built with Tauri, React, TypeScript, and Rust.
- Local-first note-taking
- Encrypted sync with Nostr
- Encrypted blob storage with Blossom
- Turborepo monorepo with the app in
app/
- Install
just:brew install justorcargo install just - Install dependencies:
just install - Start the app:
just app-dev
The full command surface lives in justfile. Use just --list to see everything.
Common commands:
just app-dev: run the Comet app in developmentjust docs-dev: run the standalone docs site in developmentjust docs-build: build the standalone docs sitejust docs-check: run the standalone docs verification suitejust app-check: run the main app verification suitejust relay-dev: run the relay in developmentjust blossom-dev: run the Blossom server in developmentjust relay-test: run the relay test suitejust blossom-test: run the Blossom test suitejust format-check: check formatting across the repo
Comet keeps a root app.db plus per-account databases under accounts/<npub>/comet.db. The maintenance scripts and MCP server always resolve the active account through app.db.
app: the Comet app workspaceapp/src: React frontendapp/src-tauri: Tauri + Rust backendblossom: Bun-based Blossom server workspacedocs: Astro Starlight docs siterelay: Bun-based Nostr relay workspacepackages/data: shared Postgres schema and migrationspackages/nostr: shared Nostr validation/auth helpers
- Root scripts use Turborepo for workspace tasks like
build,lint,typecheck, andtest - The app source, Vite config, and Tauri project live in
app - The docs source and Starlight content live in
docs
just app-test-frontendruns the frontend test suitejust app-test-backendruns the Rust test suitejust app-testruns both
Relay and Blossom development use Bun. Install Bun if you plan to run commands under relay or blossom. The default app workflows such as just app-build and just app-check do not require Bun.
Relay and Blossom test suites use Postgres. Set TEST_DATABASE_URL or run a local comet_test database before just relay-test or just blossom-test.
Use a disposable local test database only. Relay and Blossom integration tests run migrations and truncate shared tables during setup, so do not point TEST_DATABASE_URL at a real app, staging, or production database.
One working local setup on macOS is:
brew install postgresql@16 brew services start postgresql@16 createdb comet_test export TEST_DATABASE_URL=postgres://$USER@localhost:5432/comet_testThen run:
just relay-test just blossom-testIf you already have Postgres running, you usually only need:
createdb comet_test export TEST_DATABASE_URL=postgres://$USER@localhost:5432/comet_testThis repo uses Husky + lint-staged for a pre-commit hook on staged files. After just install, the hook is installed automatically via the prepare script.
On commit, staged files run through:
eslint --fixandprettier --writefor*.tsand*.tsxprettier --writefor*.js,*.mjs,*.cjs,*.json,*.md,*.yml, and*.yaml