Contribution

Help us make VitNode even better!

So, you want to help make VitNode even more awesome? That's great! Whether you're fixing bugs, adding features, or improving documentation, your contributions are welcome.

Prerequisites

Before you start, make sure you have these installed:

  • Node.js (minimum v20, recommended v22)
  • Docker for local development
  • pnpm as the package manager
  • Your favorite code editor (we ❤️ VS Code)

Development Environment

Fork & Clone

First, fork the VitNode repository, then clone your fork:

git clone https://github.com/{YOUR-USERNAME}/vitnode.git && cd vitnode

Install Dependencies

pnpm install

Start the Database

We use Docker to make database setup painless:

pnpm docker:dev

This starts a PostgreSQL container configured for VitNode development.

Launch Developer Mode

pnpm dev

This command:

  1. Builds necessary scripts
  2. Starts the development server
  3. Watches for changes and hot reloads

Voilà! Your development environment is ready at http://localhost:3000 🎉 with docs at http://localhost:3001 🎉

Project Structure

VitNode is organized as a monorepo using Turborepo:

vitnode/
├── apps/
   ├── web/          # Main frontend application
   ├── src/app/[locale]/(main)  # Main application code
   └── src/app/[locale]/admin   # Admin panel code
   └── docs/         # Documentation site
├── packages/
   ├── vitnode/      # Core framework code
   ├── eslint/       # ESLint configurations for workspaces
   └── create-vitnode-app/ # CLI tool for creating new projects
└── plugins/          # Official open-source plugins

Monorepo Magic!

VitNode uses Turborepo to keep everything organized. Apps, packages, and plugins all live together in harmony!

Coding Standards

  • We use TypeScript for type safety (TypeScript Docs)
  • Follow ESM (ECMAScript Modules) conventions (ESM Guide)
  • Respect the ESLint configuration in each workspace (ESLint)
  • Format your code with Prettier (Prettier)
  • Use React Server Components where appropriate
  • Write meaningful commit messages (Conventional Commits)

Database Changes

If you make changes to the database schema:

pnpm db:push    # Push schema changes
pnpm db:migrate # Run migrations

Test your changes!!! <3

Always test your database changes thoroughly before submitting a PR!

Contribution Workflow

Create a Branch

git checkout -b feature/your-amazing-feature
# or
git checkout -b fix/issue-you-are-solving

Make Your Changes

Follow our coding standards:

  • TypeScript for type safety
  • ESM module conventions
  • React Server Components where appropriate
  • Respect ESLint rules in each workspace

Don't forget to test your changes locally! 🧪

Commit Your Changes

git commit -m "feat: add cool new feature"
# or
git commit -m "fix: solve critical bug in authentication"

We follow Conventional Commits format.

Submit a Pull Request

Push your branch and create a PR on GitHub. Please include:

  • What problem does it solve?
  • How does it implement the solution? (Bonus points for screenshots or code snippets!)
  • Any extra context or fun facts

Screenshots, GIFs, and memes are always welcome in your PR description!


Common Issues & FAQ

  • Database won’t start? Make sure Docker is running and try pnpm docker:dev again.
  • Type errors everywhere? Double-check your Node.js and TypeScript versions.
  • Something else? Ask in the community or check the docs!

Need Help?

  • Check the documentation
  • Look for similar issues in the issue tracker
  • Ask questions in the community

Thank you for contributing to VitNode! 🚀

You rock!

Every contribution makes VitNode better. We appreciate you! 💜

On this page