Thank you for considering contributing to EventHub! We welcome contributions from the community.
- Check if the bug has already been reported in Issues
- If not, create a new issue with:
- Clear, descriptive title
- Steps to reproduce
- Expected vs actual behavior
- Screenshots if applicable
- Your environment (browser, OS, etc.)
- Check existing Issues for similar suggestions
- Create a new issue with:
- Clear description of the feature
- Use cases and benefits
- Possible implementation approach (optional)
-
Fork the Repository
git clone https://github.com/your-username/Event-Management-System.git cd Event-Management-System -
Create a Branch
git checkout -b feature/your-feature-name # or git checkout -b fix/your-bug-fix -
Make Your Changes
- Follow the existing code style
- Write clear, concise commit messages
- Add comments for complex logic
- Update documentation if needed
-
Test Your Changes
npm run build npm run dev
- Ensure the app builds without errors
- Test all affected functionality
- Check responsive design
-
Commit Your Changes
git add . git commit -m "feat: add amazing feature" # or git commit -m "fix: resolve issue with X"
Use conventional commit messages:
feat:new featurefix:bug fixdocs:documentation changesstyle:formatting changesrefactor:code refactoringtest:adding testschore:maintenance tasks
-
Push to Your Fork
git push origin feature/your-feature-name
-
Create a Pull Request
- Go to the original repository
- Click "New Pull Request"
- Select your fork and branch
- Fill in the PR template with:
- Description of changes
- Related issue numbers
- Screenshots (if UI changes)
- Testing done
- Use TypeScript for type safety
- Follow React best practices
- Use functional components with hooks
- Keep components small and focused
- Use meaningful variable and function names
- Add PropTypes or TypeScript interfaces
// Imports
import React from 'react';
import type { Props } from './types';
// Component
const MyComponent: React.FC<Props> = ({ prop1, prop2 }) => {
// State and hooks
// Event handlers
// Effects
// Render
return (
<div>
{/* JSX */}
</div>
);
};
export default MyComponent;- Components: PascalCase (e.g.,
EventCard.tsx) - Utilities: camelCase (e.g.,
dateUtils.ts) - Types: PascalCase (e.g.,
Event,User)
- Never commit Firebase credentials
- Use environment variables for configuration
- Test security rules before deployment
- Follow principle of least privilege
- Test new features thoroughly
- Include edge cases
- Test on multiple browsers if making UI changes
- Verify mobile responsiveness
src/
├── components/ # Reusable UI components
│ ├── common/ # Shared components
│ ├── events/ # Event-related components
│ └── ...
├── pages/ # Page components
├── services/ # Firebase service functions
├── hooks/ # Custom React hooks
├── contexts/ # React contexts
├── types/ # TypeScript type definitions
├── utils/ # Utility functions
└── config/ # Configuration files
Feel free to open an issue for:
- Questions about the codebase
- Help with setup
- Clarification on features
- Discussion about architecture
- Be respectful and inclusive
- Provide constructive feedback
- Help others learn and grow
- Follow GitHub's Community Guidelines
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to EventHub! 🎉