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
Project-specific commands are prefixed by workspace so app and relay workflows stay separate.
just app-dev: run the app in development modejust app-build: build the app frontend workspacejust app-bundle: build the packaged Tauri appjust app-lint: run app ESLint checksjust app-lint-fix: run app ESLint with fixesjust app-typecheck: run app TypeScript checksjust app-test: run frontend and Rust tests for the appjust app-test-backend: run the Rust test suitejust app-test-frontend: run the frontend test suitejust app-check: run the main app verification suitejust relay-dev: run the relay workspace in developmentjust relay-deploy: deploy the relay to Flyjust relay-build: build the relay workspacejust relay-lint: run relay ESLint checksjust relay-lint-fix: run relay ESLint with fixesjust relay-test: run the relay test suitejust relay-typecheck: run TypeScript checks for the relay workspacejust relay-check: run the relay verification suitejust format: format the repojust format-check: check formattingjust app-seed: seed demo notebooks and notesjust outdated-crates: check for Rust dependency updates
The seed script resets the local app database by default. To seed a throwaway database instead, pass COMET_DB_PATH=/tmp/comet.db.
app: the Comet app workspaceapp/src: React frontendapp/src-tauri: Tauri + Rust backendrelay: Bun-based Nostr relay workspacepackages: shared packages when needed
- Root scripts use Turborepo for workspace tasks like
build,lint,typecheck, andtest - The app source, Vite config, and Tauri project live in
app
just app-test-frontendruns the frontend test suitejust app-test-backendruns the Rust test suitejust app-testruns both
Relay development uses Bun. Install Bun if you plan to run commands under relay. The default app workflows such as just app-build and just app-check do not require Bun.
This 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