Thank you for your interest in contributing to KanVibe! This guide will help you get started.
- Node.js 20+ (see
.nvmrc) - pnpm
- Docker (for PostgreSQL)
- tmux or zellij (for terminal features)
# Clone the repository
git clone https://github.com/rookedsysc/kanvibe.git
cd kanvibe
# Copy environment variables
cp .env.example .env
# Start PostgreSQL
docker compose up db -d
# Install dependencies
pnpm install
# Run database migrations
pnpm migration:run
# Start development server
pnpm devOpen http://localhost:4885 in your browser.
-
All checks must pass:
pnpm build # Build must succeed pnpm check # Type check must pass pnpm test # Tests must pass
-
Include a working screenshot or GIF demonstrating your change. PRs without visual proof of functionality will not be merged.
-
Follow the existing code style. The project uses:
- TypeScript strict mode
- Tailwind CSS v4 with design tokens (CSS variables)
- next-intl for all user-facing strings
- TypeORM migrations for schema changes
- Fork the repository
- Create a feature branch from
main - Make your changes
- Run all checks (
pnpm build && pnpm check && pnpm test) - Commit with Conventional Commits format
- Push and create a Pull Request
- Attach a screenshot/GIF of the working feature
feat(scope): add new feature
fix(scope): fix specific bug
docs: update documentation
refactor(scope): code restructuring
All user-facing strings must be translated. When adding or modifying UI text:
- Add the key/value to
messages/ko.json - Add translations to
messages/en.jsonandmessages/zh.json - Use
t("key")in components viauseTranslationsorgetTranslations
All schema changes go through TypeORM migrations:
# Generate migration from entity changes
pnpm migration:generate -- src/migrations/DescriptiveName
# Run migrations
pnpm migration:runNever use synchronize: true. See CLAUDE.md for detailed migration workflow.
When making changes that affect user-facing behavior, update the corresponding documentation:
| Changed | Update |
|---|---|
| Features or UI | README.md, docs/README.ko.md, docs/README.zh.md |
| Contributing process | docs/CONTRIBUTING.md, docs/CONTRIBUTING.ko.md, docs/CONTRIBUTING.zh.md |
| Environment variables | .env.example + all README files |
| Hook API | All README files (Hook API section) |
All three language versions (EN, KO, ZH) must be updated together.
Currently, KanVibe supports Claude Code Hooks for automatic status tracking. Support for Gemini Hooks and Codex Hooks is planned and under development.
If you have ideas for a better approach or architecture for multi-agent hook support, please open a Discussion first. We'd love to collaborate on finding the best direction before implementation begins.
The next major feature goal is a token usage tracking dashboard - monitoring AI agent token consumption across tasks and sessions.
For significant changes or new features:
- Open a Discussion to share your idea
- Get feedback from the community and maintainers
- Once the direction is agreed upon, create an Issue and submit a PR
By contributing to KanVibe, you agree that your contributions will be licensed under the AGPL-3.0 License.