- Bun v1.1+
- Git
git clone https://github.com/cachevector/doqtor.git
cd doqtor
bun install
bun run buildbun run test
bun run lint
bun run typecheckMonorepo managed with Turborepo and Bun workspaces.
doqtor/
├── apps/
│ ├── backend/ Hono webhook server (deployed on Railway)
│ └── cli/ CLI tool (published as @doqtor/cli on npm)
├── packages/
│ ├── core-engine/ Shared types, diff analyzer, drift detector
│ ├── parser/ TypeScript AST parsing via ts-morph
│ ├── matcher/ Maps code changes to documentation files
│ ├── fixer/ Generates documentation fixes (deterministic + AI)
│ └── github/ GitHub App integration (auth, webhooks, PRs)
├── tests/
│ └── simulation/ End-to-end integration tests
└── docs/ Documentation and assets
bun run dev # Watch mode for all packages
bun run build # Build all packages
bun run test # Run all tests
bun run lint # Lint all packages
bun run lint:fix # Auto-fix lint issues
bun run format # Format with Prettier
bun run typecheck # Type check all packagesbun run --filter=@doqtor/parser test
bun run --filter=@doqtor/cli buildbun run simulate # Default simulation
bun run simulate:validatorjs # ValidatorJS scenario
bun run simulate:statestream # StateStream scenario- Create a branch from
master - Make your changes
- Write or update tests
- Make sure all checks pass:
bun run test bun run lint bun run typecheck - Submit a pull request
- TypeScript strict mode, no
anytypes - Run
bun run lint:fixandbun run formatbefore committing - Use
import type { ... }for type-only imports - Prefer small, testable functions over large classes
- All errors must be logged with context
- Unit tests required for all new logic
# Run all tests
bun run test
# Run tests for a specific package
bun run --filter=@doqtor/parser test
# Watch mode
bun run test:watchTests live next to the source files or in a __tests__ directory within each package.
Follow Conventional Commits:
feat:new featurefix:bug fixdocs:documentation changestest:adding or updating testsrefactor:code changes that neither fix a bug nor add a featurechore:maintenance tasks
- One feature or fix per PR
- Include a description of what changed and why
- Link related issues if applicable
- Make sure all checks pass before requesting review
Open an issue if you have questions or want to discuss a feature before working on it.