Files
crumbs/CONTRIBUTING.md
Frederic CabassutandClaude Opus 4.6 bc527c25cc docs: add open source community files and README badges
Add LICENSE, CONTRIBUTING, CHANGELOG, SECURITY, CODE_OF_CONDUCT,
GitHub issue/PR templates, CODEOWNERS. Update package.json with
license/repo/author metadata. Add badges and logo to README.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 10:07:56 +01:00

2.6 KiB

Contributing to Crumbs

Thanks for your interest in contributing! This guide will help you get started.

Development Setup

# Clone the repo
git clone https://github.com/bretzel-app/crumbs.git
cd crumbs

# Install dependencies
pnpm install

# Start the dev server
pnpm dev

Open http://localhost:5173 and set your password on first visit.

Run make help to see all available commands.

Project Structure

See docs/ARCHITECTURE.md for the full system design. Key directories:

  • src/routes/ — SvelteKit pages and API endpoints
  • src/lib/components/ — Svelte 5 components (runes, not stores)
  • src/lib/server/db/ — Drizzle ORM schema and database connection
  • src/lib/sync/ — Offline sync and CRDT logic
  • tests/unit/ — Vitest unit tests
  • tests/e2e/ — Playwright end-to-end tests

Making Changes

  1. Fork and branch — Create a feature branch from main
  2. Follow existing patterns — Match the code style you see in the codebase
  3. Write tests — Add unit tests for logic, E2E tests for user-facing features
  4. Run checks before pushing:
    make check      # Type checking
    make lint        # Linting
    make test-unit   # Unit tests
    make test-e2e    # E2E tests
    
  5. Open a PR — Target main, describe what and why

Commit Messages

We use conventional-style commit messages:

feat: add tag autocomplete
fix: prevent duplicate notes on sync
docs: update deployment guide
chore: bump dependencies

Keep the subject line under 70 characters. Use the body for context when needed.

Code Style

  • Svelte 5 runes — Use $state, $derived, $props, $effect (not Svelte 4 stores)
  • TypeScript — Strict mode, no any unless absolutely necessary
  • Tailwind CSS v4 — Use CSS variables from src/app.css, never hardcoded Tailwind colors
  • Design system — Follow the Retro Parchment aesthetic described in CLAUDE.md

Testing

  • Unit tests: Pure logic (parsing, auth, sync). Run with make test-unit
  • E2E tests: User workflows in the browser. Run with make test-e2e
  • E2E tests use Gherkin-style Given/When/Then comments (see CLAUDE.md for conventions)

Reporting Bugs

Use GitHub Issues with the bug report template. Include:

  • Steps to reproduce
  • Expected vs actual behavior
  • Browser/OS and Crumbs version

Security Issues

Do not open public issues for security vulnerabilities. See SECURITY.md for responsible disclosure instructions.

License

By contributing, you agree that your contributions will be licensed under the MIT License.