Thank you for your interest in contributing to WebUtilBox! This document provides guidelines and information for contributors.
- Node.js (v18 or higher)
- npm or yarn
- Git
- Code editor (VS Code recommended)
-
Fork and clone the repository
git clone https://github.com/your-username/Webutilbox-.git cd Webutilbox- -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open in browser
http://localhost:5173
- Use TypeScript for all new code
- Follow existing code formatting (ESLint + Prettier)
- Use meaningful variable and function names
- Add JSDoc comments for complex functions
- Follow React best practices and hooks patterns
We use Conventional Commits format:
type(scope): description
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
Examples:
feat(json-formatter): add syntax highlighting
fix(image-converter): resolve quality slider issue
docs(readme): update installation instructions-
Create a feature branch
git checkout -b feat/your-feature-name
-
Make your changes
- Write clean, documented code
- Add tests if applicable
- Update documentation
-
Test your changes
npm run lint npm run build
-
Commit your changes
git add . git commit -m "feat: add your feature description"
-
Push to your fork
git push origin feat/your-feature-name
-
Create a Pull Request
- Use a clear, descriptive title
- Provide detailed description of changes
- Reference any related issues
- Add screenshots for UI changes
-
Create the tool component
// src/pages/your-tool.tsx export function YourTool() { return ( <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} className="space-y-6" > <Card> <CardHeader> <CardTitle>Your Tool</CardTitle> <CardDescription>Tool description</CardDescription> </CardHeader> <CardContent> {/* Tool implementation */} </CardContent> </Card> </motion.div> ); }
-
Add route to App.tsx
<Route path="/your-tool" element={<YourTool />} />
-
Add to dashboard tools array
{ title: 'Your Tool', description: 'Tool description', icon: YourIcon, path: '/your-tool', gradient: 'from-color-500/20 to-color-500/20', }
-
Add to sidebar navigation
{ name: 'Your Tool', icon: YourIcon, path: '/your-tool' }
- Use existing UI components from
src/components/ui/ - Follow the established design system
- Ensure responsive design (mobile-first)
- Add proper accessibility attributes
- Use Framer Motion for animations
- Implement proper loading states
- Test on multiple browsers (Chrome, Firefox, Safari, Edge)
- Verify mobile responsiveness
- Test dark/light theme compatibility
- Validate accessibility with screen readers
- Test with various input sizes and edge cases
- Use CSS variables for colors
- Support both light and dark themes
- Follow the established color palette
- Ensure proper contrast ratios
- Use the established font hierarchy
- Maintain consistent spacing
- Use semantic HTML elements
- Keep animations subtle and purposeful
- Use Framer Motion for complex animations
- Ensure animations respect user preferences
- Test performance on lower-end devices
When reporting bugs, please include:
- Clear description of the issue
- Steps to reproduce the bug
- Expected behavior vs actual behavior
- Screenshots or videos if applicable
- Environment details:
- Browser and version
- Operating system
- Device type (desktop/mobile)
For new feature requests:
- Check existing issues to avoid duplicates
- Provide clear use case and rationale
- Include mockups or detailed descriptions
- Consider implementation complexity
- Discuss with maintainers before starting work
- Be respectful and inclusive
- Help others learn and grow
- Share knowledge and best practices
- Provide constructive feedback
- Follow the Code of Conduct
By contributing to WebUtilBox, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to WebUtilBox! 🚀