Contributions to this project are released to the public under the project's open source license.
Everyone is welcome to contribute to this project. Contributing doesn't just mean submitting pull requests—there are many different ways for you to get involved, including answering questions, reporting issues, improving documentation, or suggesting new features.
If you find a bug or have a feature request:
- Check if the issue already exists in the GitHub Issues
- If not, create a new issue with:
- Clear title and description
- Steps to reproduce (for bugs)
- Expected vs actual behavior
- Screenshots (if applicable)
- Your environment details (OS, Browser, Node version)
- Fork the repository
- Create a new branch for your feature/fix:
git checkout -b feature/your-feature-name
- Make your changes following the code style guidelines below
- Test your changes thoroughly
- Commit with clear, descriptive messages
- Push to your fork and submit a pull request
This project uses:
- React with class components
- Redux for state management
- ESLint for code quality
- Create React App configuration
Before submitting:
# Check for linting errors
npm run lint
# Build to ensure no errors
npm run build
# Test the application
npm test
npm start- Component Structure: Follow the existing pattern of separating containers from presentational components
- Redux Actions: Keep actions simple and use Redux Thunk for async operations
- Naming: Use clear, descriptive names for components, actions, and reducers
- File Organization:
- Components go in
src/components/ - Containers go in
src/containers/ - Redux logic goes in
src/store/
- Components go in
- CSS Modules: Use CSS modules for component styling to avoid conflicts
- PropTypes: Define PropTypes for all components receiving props
When adding new features:
- Create appropriate components in
src/components/orsrc/containers/ - Add Redux actions/reducers in
src/store/if state management is needed - Update routing in
src/App.jsxif new pages are added - Add appropriate styling using CSS modules
- Test thoroughly in development mode
- Consider mobile responsiveness
Presentational Components (src/components/):
- Should be stateless when possible
- Focus on how things look
- Receive data and callbacks via props
- Use CSS modules for styling
Container Components (src/containers/):
- Connect to Redux store
- Handle business logic
- Pass data to presentational components
- Manage local component state if needed
- Action Types: Define in
src/store/actions/actionTypes.js - Actions: Create action creators in appropriate files under
src/store/actions/ - Reducers: Keep reducers pure and immutable
- Async Operations: Use Redux Thunk middleware for API calls
When adding new features, consider adding tests:
- Unit tests for utility functions
- Component tests for complex components
- Integration tests for Redux flows
Please feel free to contact me with any question, comment, pull-request, issue, or any other thing you have in mind.
- Or Assayag orassayag@gmail.com
- GitHub: https://github.com/orassayag
- StackOverflow: https://stackoverflow.com/users/4442606/or-assayag?tab=profile
- LinkedIn: https://linkedin.com/in/orassayag
Thank you for contributing! 🙏