Thank you for your interest in contributing to Cvians! This guide will help you get started.
- Node.js 18+
- pnpm 8+ (recommended package manager)
-
Clone the repository
git clone https://github.com/cod-vista/cvians.git cd cvians -
Install dependencies
pnpm install
-
Build all packages
pnpm build
-
Start development
pnpm dev
cvians/
├── packages/
│ ├── core/ # Core components (tables, forms, etc.)
│ └── cli/ # CLI installation tool
├── apps/
│ ├── docs/ # Documentation site
│ └── playground/ # Development playground
├── tools/ # Build and development tools
└── examples/ # Usage examples
pnpm build- Build all packagespnpm dev- Start development modepnpm lint- Run ESLintpnpm test- Run testspnpm type-check- Check TypeScript typespnpm clean- Clean all build outputs
We use Jest and React Testing Library for testing:
# Run all tests
pnpm test
# Run tests in watch mode
pnpm test --watch
# Run tests for specific package
pnpm --filter @codvista/cvians-excel-table test- TypeScript - All code must be written in TypeScript
- ESLint - Follow the configured ESLint rules
- Prettier - Code formatting is handled by Prettier
- Conventional Commits - Use conventional commit messages
type(scope): description
[optional body]
[optional footer(s)]
Types: feat, fix, docs, style, refactor, test, chore
Examples:
feat(core): add new filtering options to ExcelTable
fix(cli): resolve component installation path issue
docs(readme): update installation instructions-
Fork the repository and create your branch from
main -
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes and add tests if applicable
-
Ensure tests pass
pnpm test pnpm lint pnpm type-check -
Update documentation if needed
-
Create a changeset for your changes
pnpm changeset
-
Commit your changes using conventional commits
-
Push to your fork and create a pull request
- ✅ All tests pass
- ✅ No linting errors
- ✅ TypeScript types are correct
- ✅ Documentation is updated
- ✅ Changeset is created (if applicable)
- ✅ Conventional commit messages
- Follow existing patterns - Look at existing components for consistency
- Type safety - All components must be fully typed
- Accessibility - Ensure components are accessible (ARIA, keyboard navigation)
- Responsive design - Components should work on all screen sizes
- Performance - Consider performance implications of your changes
- Create component in
packages/core/src/components/ - Export from
packages/core/src/index.ts - Add to CLI registry in
packages/cli/src/commands/add.ts - Write comprehensive tests
- Update documentation
- Create usage examples
- Maintain backward compatibility when possible
- Update tests to cover new functionality
- Update documentation and examples
- Consider deprecation warnings for breaking changes
When filing a bug report, please include:
- Environment details (OS, Node.js version, package versions)
- Steps to reproduce the issue
- Expected behavior vs actual behavior
- Minimal reproduction (CodeSandbox, repository, etc.)
- Screenshots if applicable
Before requesting a feature:
- Search existing issues to avoid duplicates
- Consider the use case - is it broadly applicable?
- Think about the API - how should it work?
- Consider backward compatibility
We use several documentation formats:
- README files - Overview and quick start guides
- API documentation - Generated from TypeScript types
- Examples - Real-world usage examples
- Storybook - Interactive component documentation
When contributing documentation:
- Keep it concise and clear
- Include code examples
- Test all code examples
- Update related documentation
Build failures:
pnpm clean
pnpm install
pnpm buildType errors:
pnpm type-checkLinting errors:
pnpm lint --fix- 💬 GitHub Discussions
- 🐛 GitHub Issues
- 📧 Email: maintainer@example.com
Releases are automated using Changesets:
- Create changeset -
pnpm changeset - Version packages -
pnpm version-packages - Publish -
pnpm release
Only maintainers can publish releases.
Contributors will be recognized in:
- GitHub contributors list
- CHANGELOG.md
- Documentation credits
- Social media acknowledgments
Thank you for contributing to Cvians! 🎉