mirror of
https://github.com/bretzel-app/crumbs.git
synced 2026-10-12 12:06:57 +02:00
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>
89 lines
2.6 KiB
Markdown
89 lines
2.6 KiB
Markdown
# Contributing to Crumbs
|
|
|
|
Thanks for your interest in contributing! This guide will help you get started.
|
|
|
|
## Development Setup
|
|
|
|
```bash
|
|
# 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](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:**
|
|
```bash
|
|
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](https://github.com/bretzel-app/crumbs/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](SECURITY.md) for responsible disclosure instructions.
|
|
|
|
## License
|
|
|
|
By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE).
|