# Contributing to DayPicker You are welcome to join the [DayPicker contributors](https://github.com/gpbl/react-day-picker/graphs/contributors) and help us build the best date picker for React. ## Ways to Contribute There are many ways to contribute to the development of DayPicker: - Improve our build tools and GitHub actions - Open PRs with new features, bug fixes, and improved rendering performance - Align the source code with the latest TypeScript/React practices - Help with unit and integration tests - Proofread [our website](https://daypicker.dev/) and the code documentation in the source files - Make the website more stylish - Help maintain [the repository](https://github.com/gpbl/react-day-picker) on GitHub and triage issues and PRs - Answer [support questions](https://github.com/gpbl/react-day-picker/discussions/categories/support) - [Sponsor the project](https://github.com/sponsors/gpbl) [Send a message](https://github.com/gpbl/react-day-picker/discussions) on our discussions page to introduce yourself! ## Working With the Source Code DayPicker is built using the following tools and libraries: - [pnpm](https://pnpm.io/) - for package management - [TypeScript](https://www.typescriptlang.org/) with [React](https://reactjs.org/) - [Docusaurus](https://docusaurus.io/) - for the documentation website - [Vite](https://vitejs.dev/) - for the examples app - [Jest](https://jestjs.io/) - for unit tests To contribute to DayPicker, start by cloning the repository: ```sh git clone https://github.com/gpbl/react-day-picker.git cd react-day-picker pnpm install ``` ### DayPicker Workspace If your are using [Visual Studio code](https://code.visualstudio.com) open the [react-day-picker.code-workspace](https://github.com/gpbl/react-day-picker/blob/main/react-day-picker.code-workspace) to set up the development environment. This workspace includes: - Suggested extensions for the project - TypeScript compiler running in watch mode for the ESM export - Docusaurus website running at http://localhost:2001, with documentation and API docs - Vite.js examples app served at http://localhost:5173 - Use this app to run isolated test cases and examples, exported by `/examples/index.ts` ### Test Driven Development DayPicker development is test-driven. Change code and run the tests using `pnpm run test-watch` or `pnpm run test`. The Jest plugin in the VS Code workspace is recommended for running tests. ### Useful Scripts - To run the build in watch mode: ```sh pnpm tsc --project tsconfig-esm.json --watch ``` - To run the tests in watch mode: ``` pnpm run test-watch ``` - To run the examples app at http://localhost:5173 ``` pnpm --filter examples-app run dev ``` - To run the documentation at http://localhost:2001: ``` pnpm --filter website run start ```