# React Crafter **React Crafter** is a CLI tool designed to quickly scaffold a modern React application with TypeScript, Ant Design, Sass, Webpack, and essential development tools like Husky and linters pre-configured. This tool simplifies the initial setup, allowing developers to start coding with best practices from the get-go. ## Features - **React with TypeScript**: Automatically sets up a React project using TypeScript. - **Ant Design Integration**: Includes Ant Design (antd) for UI components, fully integrated with your project. - **Sass Support**: Configures Sass for better styling with variables, mixins, and more. - **Webpack Configuration**: Custom Webpack setup for development and production builds. - **Husky & Linters**: Pre-configured Git hooks with Husky, Commitlint, and Prettier to enforce code quality and style. - **Atomic Design Structure**: Creates an atomic design folder structure to organize your components. - **Redux Setup**: Sets up Redux with slices, middleware, and selectors for state management. - **Test Suite**: Installs Jest and Playwright for comprehensive testing. ## Installation First, install the CLI globally via npm: ```bash npm install -g react-crafter ``` Or use it directly with npx (no installation required): ```bash npx react-crafter ``` ## Usage To create a new React project, simply run: ```bash npx react-crafter my-new-app ``` Replace `my-new-app` with the name of your project. ### Example: ```bash npx react-crafter awesome-project ``` ## Commands Here’s a summary of the commands you can use after setting up your project: 1. **Start Development Server**: ```bash npm start ``` Starts the development server with Webpack. The project is served using Webpack Dev Server with the configuration specified in `webpack.config.js`. 2. **Build for Production**: ```bash npm run build ``` Builds the project for production. Webpack compiles the project and outputs the optimized bundle in the `/dist` directory. 3. **Run Tests**: ```bash npm test ``` Placeholder for running tests. Currently, it does not run any tests but can be customized to run Jest or other test suites. 4. **Run Tests in Watch Mode**: ```bash npm run test:dev ``` Runs tests in watch mode using React Scripts. Suitable for a test-driven development approach. 5. **Format Staged Files**: ```bash npm run pretty-quick ``` Formats all staged files using Prettier. Ensures that code is consistently formatted before committing. 6. **Lint Entire Codebase**: ```bash npm run lint:prettier ``` Checks the format of the entire codebase using a custom script. It can be used to ensure that all files adhere to Prettier’s formatting rules. 7. **Format Entire Codebase**: ```bash npm run prettier ``` Formats the entire codebase using Prettier based on the configuration in `.prettierrc`. 8. **Format & Commit**: ```bash npm run prettier:commit ``` Applies Prettier formatting to staged files before committing. Ensures that committed code is properly formatted. 9. **Eject Project**: ```bash npm run eject ``` Ejects the project from Create React App. This command exposes the underlying configuration files for full control but cannot be undone. 10. **Prepare Husky**: ```bash npm run prepare ``` Installs Husky hooks. This script is automatically run after dependencies are installed, setting up Git hooks for the project. ## Customization React Crafter provides a base setup for React projects, but it is also customizable to fit your specific needs: - **Pre-configured files**: Files like `prettier-commit.js`, `check-format.js`, and others are copied during setup. - **Package.json customization**: The CLI updates `package.json` with custom scripts tailored to your project’s needs. - **Atomic design structure**: The tool creates a folder structure based on atomic design principles to help organize components. ## Post-Setup Options After the project is set up, you’ll be prompted to choose how to open the project: - **Terminal** - **VSCode** - **Neovim** - **None** This feature ensures you can start working in your preferred environment immediately after setup. ## Contributing We welcome contributions to React Crafter! If you have ideas, find bugs, or want to improve the project, please feel free to contribute. Here's how you can get involved: ### 1. Fork the Repository Start by forking the repository to your own GitHub account: 1. Navigate to the [React Crafter GitHub repository](#). 2. Click the "Fork" button in the top right corner. ### 2. Clone Your Fork Clone your forked repository to your local machine: ```bash git clone https://github.com/your-username/react-crafter.git cd react-crafter ``` ### 3. Create a New Branch Create a new branch for your feature or bug fix: ```bash git checkout -b feature/your-feature-name ``` ### 4. Make Changes Make your changes or improvements in your new branch. Follow the existing code style and conventions. ### 5. Test Your Changes Before submitting your changes, make sure everything works as expected: ```bash npm run test ``` ### 6. Commit and Push Commit your changes with a descriptive commit message: ```bash git add . git commit -m "Add new feature: your-feature-name" git push origin feature/your-feature-name ``` ### 7. Create a Pull Request Go to the original repository and click on the "Pull Requests" tab. Click "New Pull Request" and select your branch. Provide a description of your changes and submit the pull request. ### 8. Review Process Your pull request will be reviewed by the maintainers. You may be asked to make additional changes or clarifications before your code is merged. ### 9. Celebrate 🎉 Once your pull request is merged, you’ve officially contributed to React Crafter! Thank you for your contribution. ### Code of Conduct Please note that we have a [Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [cargdev@gmail.com](mailto:cargdev@gmail.com). ## License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.