Contributing to Tuvix.js
Thank you for your interest in contributing! Whether it's a bug fix, new feature, documentation improvement, or translation - all contributions are welcome.
Ways to Contribute
- Bug reports - Open an issue
- Feature requests - Start a discussion
- Code - Fix bugs, add features, improve tests
- Documentation - Fix typos, add examples, improve clarity
- Translations - Add or improve documentation in other languages
Getting Started
1. Fork and Clone
git clone https://github.com/YOUR_USERNAME/tuvix.js.git
cd tuvix.js2. Install Dependencies
We use pnpm and Node.js ≥ 18.
pnpm install3. Build All Packages
pnpm build4. Run Tests
pnpm test5. Start the Docs Dev Server
cd website
pnpm install
pnpm devOpen http://localhost:5173 in your browser to preview the docs.
Project Structure
tuvix.js/
├── packages/
│ ├── core/ @tuvix.js/core
│ ├── router/ @tuvix.js/router
│ ├── event-bus/ @tuvix.js/event-bus
│ ├── loader/ @tuvix.js/loader
│ ├── sandbox/ @tuvix.js/sandbox
│ ├── react/ @tuvix.js/react
│ ├── vue/ @tuvix.js/vue
│ ├── svelte/ @tuvix.js/svelte
│ ├── angular/ @tuvix.js/angular
│ ├── devtools/ @tuvix.js/devtools
│ ├── server/ @tuvix.js/server
│ ├── module-federation/
│ ├── create-tuvix-app/
│ └── tuvix/ tuvix.js umbrella
└── website/
├── .vitepress/ VitePress config and theme
├── guide/ English documentation
├── packages/ Package API docs
├── tr/ Turkish translations
├── es/ Spanish translations
└── ... Other languagesCode Style
- TypeScript - strict mode, all code must be typed
- Prettier - run
pnpm formatto format - No runtime dependencies - packages must have zero runtime deps
- Named exports - avoid default exports
- Error messages - prefix with
[Tuvix ...]
Commit Messages
We follow Conventional Commits:
feat: add hash mode to router
fix(sandbox): clean up event listeners on unmount
docs: add Angular guide example
chore: bump vitepress to 1.7.0
test(event-bus): add once() edge case testsPull Request Process
Create a branch from
master:bashgit checkout -b feat/my-featureMake your changes and add tests
Run the full test suite:
bashpnpm test pnpm check-types pnpm lintIf your change affects a published package, add a changeset:
bashpnpm changesetPush and open a PR against
masterA maintainer will review your PR. Please respond to feedback within 7 days.
Adding a Translation
All documentation is in Markdown under website/. Each language has its own directory:
website/
├── index.md ← English (root)
├── guide/ ← English guides
├── tr/ ← Turkish
│ ├── index.md
│ ├── guide/
│ └── packages/
├── es/ ← Spanish
└── ...Steps to add or improve a translation
- Copy English files from
website/guide/towebsite/<lang>/guide/ - Translate the Markdown content (keep code blocks in English)
- Update the sidebar config in
website/.vitepress/config/<lang>.ts - Run
cd website && pnpm devto preview
Translation Tips
- Keep all code examples in English
- Translate UI labels, descriptions, and explanatory text
- Use native terminology where standard translations exist
Supported Languages
| Language | Code | Status |
|---|---|---|
| English | en | Complete (reference) |
| Turkish | tr | In progress |
| Spanish | es | In progress |
| German | de | In progress |
| French | fr | In progress |
| Japanese | ja | In progress |
| Chinese | zh | In progress |
| Italian | it | In progress |
| Portuguese | pt | In progress |
| Hindi | hi | In progress |
If you'd like to contribute to any of these languages, please check open translation issues or open a new one.
Code of Conduct
This project follows the Contributor Covenant. Be respectful and constructive.
License
By contributing, you agree your contributions will be licensed under the MIT License.