Thank you for your interest in contributing! HawkDoc is open source and contributions of all kinds are welcome — bug fixes, features, documentation, tests, and design.
- Check existing issues to avoid duplicates
- For large features, open an issue first to discuss before building
- All PRs target the
devbranch, notmain
- Node.js 20+
- Docker (for PostgreSQL and Redis)
- Git
# 1. Fork and clone
git clone https://github.com/YOUR_USERNAME/hawkdoc.git
cd hawkdoc
# 2. Install dependencies
npm install
# 3. Start database and Redis
docker-compose up -d
# 4. Set up environment variables
cp apps/api/.env.example apps/api/.env
# Edit .env with your local values
# 5. Run database schema
psql -U hawkdoc -d hawkdoc -f apps/api/src/schema.sql
# 6. Start everything
npm run devFrontend runs at http://localhost:5173
API runs at http://localhost:3001
Collaboration server at ws://localhost:3002
feat/your-feature-name
fix/bug-description
docs/what-you-updated
chore/dependency-update
We use Conventional Commits:
feat: add slash command menu
fix: resolve auto-save lag on large documents
docs: update README with quick start
chore: bump lexical to 0.15.0
refactor: extract useAutoSave to separate hook
- TypeScript strict mode — no
anytypes - Tailwind CSS only — no inline styles
- Lexical for all editor functionality — not ProseMirror or TipTap
- Zod for all external data validation
- JSDoc comments on all exported functions and components
- MIT-compatible dependencies only
- Make sure CI passes locally:
npx tsc --noEmit # type check npx eslint src/ # lint npm run build # build
- Push your branch and open a PR targeting
dev - Fill out the PR template completely
- A maintainer will review within 48 hours
- Bug fixes with reproduction steps
- Performance improvements (especially editor lag)
- New block types for the editor
- Improved TypeScript types
- Documentation improvements
- Test coverage
- Accessibility improvements
- New major features
- Breaking API changes
- Changes to the tech stack
- Changes to the database schema
This project follows the Contributor Covenant. By participating you agree to uphold it.
Open a GitHub Discussion — keep Issues for confirmed bugs only.