Contributing
Prerequisites
Section titled “Prerequisites”| Tool | Minimum version |
|---|---|
| Node.js | 24+ |
| npm | 10+ |
| Git | latest |
-
Clone the repository
Terminal window git clone https://github.com/user/recon-web.gitcd recon-web -
Install dependencies
Terminal window npm installnpm workspaces will hoist shared dependencies and link the five packages together automatically.
Development servers
Section titled “Development servers”npm run devStarts the Fastify API server on http://localhost:3000 with file-watch restarts.
npm run dev:webStarts the Vite dev server on http://localhost:5173 with hot module replacement. The dev server proxies API requests to port 3000, so run both commands in parallel for a full-stack environment.
Building
Section titled “Building”Core must be compiled before packages that depend on it. The recommended build order:
# Build core first (other packages reference its types)npx tsc -b packages/core
# Build everythingnpx tsc --build
# Build the web frontend (production bundle)npm run build -w @recon-web/webTesting
Section titled “Testing”npm test -w @recon-web/coreRuns approximately 109 tests covering all handlers, the runner, and utility functions. Tests use Vitest with MSW for HTTP mocking.
npm test -w @recon-web/cliRuns approximately 17 tests verifying command generation and output formatting.
npm test -w @recon-web/apiTests the Fastify routes, database layer, and SSE streaming.
Running all tests
Section titled “Running all tests”npm test --workspacesLinting and type checking
Section titled “Linting and type checking”# ESLint across all packagesnpm run lint
# TypeScript type checking (no emit)npm run typecheckDocker builds
Section titled “Docker builds”You can build a production Docker image for the API server:
docker build -f packages/api/Dockerfile -t recon-web-api:test .Pull request guidelines
Section titled “Pull request guidelines”-
Branch from
mainTerminal window git checkout -b feat/my-change main -
Make your changes — follow existing code style, add or update tests.
-
Verify locally
Terminal window npm run lintnpm run typechecknpm test --workspaces -
Commit with a descriptive message
Use conventional-style prefixes where appropriate (
feat:,fix:,docs:,refactor:,test:,chore:).Terminal window git commit -m "feat(core): add robots-txt handler" -
Push and open a pull request against
main. The CI pipeline will run lint, tests, audit, a Docker build, and Trivy scanning automatically.