Contributing
Set up the VitNode monorepo locally, run tests and typechecks, and submit pull requests.
Contributions to VitNode - whether bug fixes, new features, or documentation improvements - are always welcome!
Quick start
Clone the repository, start local containers, and launch the dev server:
bun install
bun run docker:dev
bun devOpen http://localhost:3000 to view the website, AdminCP, and live docs.
Monorepo Layout
| Directory | Role |
|---|---|
packages/vitnode | @vitnode/core package containing routing, auth, models, and UI primitives |
apps/web | Frontend TanStack Start application and documentation portal |
apps/api | Standalone Hono REST/RPC API server |
plugins/* | First-party plugins (@vitnode/blog, @vitnode/example) |
Local Validation Checks
Before opening a pull request, run the same checks that execute in GitHub Actions CI:
1. Typecheck
bun run typecheck2. Run Tests
bun test3. Build All Workspaces
bun run buildDocs for AI Agents
The documentation portal in apps/web speaks Markdown as well as HTML, so agents and LLM tools can read it without scraping:
| URL | What you get |
|---|---|
/llms.txt | An index of every docs page with its title, URL and description |
/llms-full.txt | The whole documentation as one Markdown document |
/docs/<page>.md | A single page as Markdown, for example /docs/dev/setup.md |
Requesting a docs page with an Accept: text/markdown header redirects to its .md twin, so a curious agent gets Markdown without asking twice. Every page also has a Copy Markdown button and an Open in menu for ChatGPT, Claude and friends.
Pull Request Guidelines
- Focused PRs: Keep changes scoped to a single feature or bug fix.
- Follow Conventions: Follow repository conventions from
AGENTS.md(noany, arrow function components, semantic tokens). - Tests: Add unit tests for non-trivial logic using Vitest.