First off, thank you for considering contributing to MicroCrowd! 🎉 It's people like you that make this tool valuable for the entire research community.
- Code of Conduct
- Getting Started
- Types of Contributions
- Development Process
- Coding Standards
- Testing Guidelines
- Submitting Changes
- Community Guidelines
This project and everyone participating in it is governed by our commitment to creating a welcoming, inclusive environment. By participating, you are expected to uphold these values:
- Be respectful and inclusive
- Be constructive in discussions and feedback
- Help others learn and grow
- Focus on what's best for the community
- Show empathy towards other community members
- Node.js 16.0.0 or higher
- npm or yarn
- Git
- OpenAI API key (for testing)
- Basic knowledge of React, TypeScript, and modern web development
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/yourusername/microcrowd.git cd microcrowd - Install dependencies:
npm install
- Set up environment variables:
cp .env.example .env # Add your OpenAI API key to .env - Start development server:
npm run dev
We welcome all types of contributions:
Found a bug? Please help us fix it:
- Use the GitHub issue tracker
- Include detailed steps to reproduce
- Provide browser/system information
- Include screenshots if relevant
Have an idea for improvement?
- Check existing issues first
- Clearly describe the use case
- Explain why it would benefit the community
- Consider implementation complexity
Ready to code? Great!
- Bug fixes
- New features
- Performance improvements
- Documentation updates
- Test improvements
Help others understand and use MicroCrowd:
- Fix typos or unclear explanations
- Add examples or tutorials
- Improve API documentation
- Translate documentation
main- Production-ready codedevelop- Integration branch for featuresfeature/feature-name- New featuresbugfix/issue-description- Bug fixesdocs/improvement-description- Documentation updates
- Create an issue first (for non-trivial changes)
- Create a branch from
develop:git checkout develop git pull origin develop git checkout -b feature/your-feature-name
- Make your changes with clear, logical commits
- Test your changes thoroughly
- Submit a pull request to
developbranch
- Use TypeScript for all new code
- Follow existing code style (we use Prettier)
- Use meaningful variable and function names
- Add type annotations for complex objects
- Prefer functional programming patterns
- Use functional components with hooks
- Keep components small and focused
- Use proper prop types
- Handle loading and error states
- Follow accessibility best practices
- Place components in
components/directory - Use
pages/for page-level components - Keep utilities in
services/orutils/ - Group related files together
interface PersonaProps {
persona: PersonaProfile;
onSelect: (id: string) => void;
isSelected?: boolean;
}
const PersonaCard: React.FC<PersonaProps> = ({
persona,
onSelect,
isSelected = false
}) => {
const handleClick = useCallback(() => {
onSelect(persona.id);
}, [persona.id, onSelect]);
return (
<div
className={`persona-card ${isSelected ? 'selected' : ''}`}
onClick={handleClick}
role="button"
tabIndex={0}
>
<h3>{persona.name}</h3>
<p>{persona.generatedSummary}</p>
</div>
);
};- Test all user interactions
- Verify different CSV formats work
- Check responsive design on mobile
- Test accessibility with screen readers
- Validate API error handling
- Feature works as expected
- No console errors or warnings
- Responsive design maintained
- Accessibility standards met
- Performance remains acceptable
- Error states handled gracefully
Please test with various CSV formats:
- Different column orders
- Missing fields
- Special characters
- Large datasets (100+ rows)
- Edge cases (empty cells, long text)
- Update documentation if needed
- Add/update tests for your changes
- Ensure all tests pass
- Update CHANGELOG.md for notable changes
- Create descriptive PR title and description
feat: add new persona generation algorithmfix: resolve CSV parsing issue with special charactersdocs: improve installation instructionsperf: optimize focus group simulation speed
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Performance improvement
- [ ] Other (please describe)
## Testing
- [ ] Tested manually
- [ ] Added/updated tests
- [ ] Tested with different CSV formats
## Screenshots (if applicable)
Add screenshots to help explain your changes
## Checklist
- [ ] Code follows style guidelines
- [ ] Self-review completed
- [ ] Documentation updated
- [ ] No breaking changes (or breaking changes documented)- GitHub Issues: For bug reports and feature requests
- GitHub Discussions: For questions and community chat
- Pull Requests: For code review and technical discussion
- Check existing issues and documentation first
- Ask questions in GitHub Discussions
- Be patient and respectful when asking for help
- Help others when you can
Contributors are recognized in:
- README.md acknowledgments
- Release notes for significant contributions
- GitHub contributors list
Welcome! We have issues labeled good first issue and help wanted that are perfect for getting started.
Help with code reviews, testing, and mentoring new contributors.
Maintainers who help guide the project direction and review major changes.
Current focus areas where contributions are most needed:
- Performance Optimization: Improve simulation speed and responsiveness
- CSV Format Support: Handle edge cases and various data formats
- Accessibility: Ensure the tool works for users with disabilities
- Documentation: Examples, tutorials, and API documentation
- Testing: Automated tests and comprehensive manual testing
- Internationalization: Support for multiple languages
Want to influence MicroCrowd's future?
- Join roadmap discussions in GitHub Issues
- Propose new features with detailed use cases
- Vote on feature priorities
- Help with technical design decisions
Don't hesitate to reach out:
- GitHub Discussions: For general questions
- Issues: For specific bugs or features
- Email: [your-email@domain.com] for sensitive topics
Thank you for contributing to MicroCrowd! 🙏
Your contributions help make market research more accessible and effective for everyone.