Thank you for contributing! This guide covers setup, conventions, and the PR process.
# Clone
git clone https://github.com/toankhontech/arc-timer.git
cd arc-timer
# Install dependencies
pnpm install
# Build all packages
pnpm build
# Run tests
pnpm test
# Start dev mode (watches for changes)
pnpm devpackages/
core/ # @toankhontech/arctimer-core - shared logic, hooks, engine
react/ # @toankhontech/arctimer-react - web component
react-native/ # @toankhontech/arctimer-react-native - RN component
expo/ # @toankhontech/arctimer-expo - Expo wrapper
themes/ # @toankhontech/arctimer-themes - theme system
docs/ # Docusaurus documentation
examples/ # Example apps
- Fork the repository
- Create a branch:
git checkout -b feature/my-feature - Make changes and add tests
- Run tests:
pnpm test - Run type check:
pnpm typecheck - Add a changeset:
pnpm changeset - Commit using conventional commits
- Push and open a Pull Request
We use Conventional Commits:
feat: add spring easing animation
fix: correct color interpolation at boundaries
docs: update theming guide
test: add TimerGroup sequential mode tests
chore: update dependencies
- TypeScript strict mode
- Prettier for formatting (
pnpm prettier --write .) - ESLint for linting
- No
anytypes
- All new features must have tests
- Maintain >= 90% code coverage
- Use
vitestwith@testing-library/react
Before submitting a PR, add a changeset:
pnpm changesetSelect the packages affected and describe the change. This generates a changelog entry.
- Tests pass (
pnpm test) - TypeScript compiles (
pnpm typecheck) - Changeset added (
pnpm changeset) - Documentation updated (if applicable)
- No breaking changes (or marked as such)