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:
- Builds necessary scripts
- Starts the development server
- 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! 💜