Thank you for considering contributing to Vibely! This document outlines the process and guidelines.
Before creating bug reports, please check existing issues. When creating a bug report, include:
- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- Screenshots (if applicable)
- Environment details (OS, browser, Node version)
Enhancement suggestions are tracked as GitHub issues. Provide:
- Clear title and description
- Use case - Why is this enhancement useful?
- Proposed solution (if you have one)
- Alternatives considered
- Fork the repo and create your branch from
main - Follow the coding style (ESLint/Prettier will help)
- Add tests if applicable
- Update documentation if needed
- Write clear commit messages (see below)
We follow Conventional Commits:
<type>(<scope>): <subject>
<body>
<footer>
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, no logic change)refactor: Code refactoringperf: Performance improvementstest: Adding or updating testschore: Maintenance tasksci: CI/CD changesui: UI changes
feat(web): add event creation form
fix(mobile): resolve QR scanner crash on iOS
docs: update installation instructions
refactor(shared): simplify validation schemas- Node.js 18+
- pnpm 8+
- Git
# 1. Clone your fork
git clone https://github.com/YOUR_USERNAME/vibely.git
cd vibely
# 2. Add upstream remote
git remote add upstream https://github.com/Suharshit/vibely.git
# 3. Install dependencies
pnpm install
# 4. Create a feature branch
git checkout -b feature/my-feature
# 5. Make your changes and test
pnpm dev
pnpm type-check
pnpm lint
# 6. Commit and push
git add .
git commit -m "feat: add my feature"
git push origin feature/my-featureBefore submitting a PR:
# Type check all packages
pnpm type-check
# Lint all code
pnpm lint
# Build everything
pnpm buildvibely/
├── apps/
│ ├── web/ # Next.js web app
│ └── mobile/ # Expo mobile app
├── packages/
│ └── shared/ # Shared types and validation
├── .github/ # GitHub workflows and templates
└── docs/ # Additional documentation
- TypeScript: Strict mode enabled
- Formatting: Prettier (runs on commit)
- Linting: ESLint (runs on commit)
- Naming:
- Components: PascalCase (
EventCard.tsx) - Files: kebab-case (
event-utils.ts) - Functions: camelCase (
getUserEvents)
- Components: PascalCase (
- Automated checks must pass (type check, lint, build)
- At least one approval from a maintainer
- No merge conflicts with main branch
- Documentation updated if needed
- Open a GitHub Discussion
- Check existing issues
- Reach out to maintainers
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing! 🎉