Thank you for your interest in contributing to Avenida! This document provides guidelines and information about contributing to our projects.
By participating in this project, you agree to abide by our Code of Conduct.
- Clone the workspace repository
- Follow the setup instructions in the README
- Clone the specific project you want to contribute to
Avenida is organized as multiple repositories:
- avenida-web — Main web application (Next.js)
- avenida-site — Marketing website (Next.js)
- avenida-packages — Shared TypeScript packages
- avenida-extension — Browser extension (WXT)
- avenida-infra — Database migrations and infrastructure
- Check if the issue already exists in the relevant repository
- Use the Bug Report issue template
- Include:
- Clear description of the bug
- Steps to reproduce
- Expected vs actual behavior
- Screenshots if applicable
- Environment details (browser, OS, etc.)
- Use the Feature Request issue template
- Describe the problem you're trying to solve
- Explain your proposed solution
- Consider alternatives you've thought about
- Fork the repository
- Create a branch from
main:git checkout -b feat/your-feature-name
- Make your changes following our coding standards
- Write tests for new functionality
- Commit using Conventional Commits:
git commit -m "feat(scope): add new feature" - Push and create a Pull Request
Use descriptive branch names with prefixes:
feat/— New featuresfix/— Bug fixesdocs/— Documentation changesrefactor/— Code refactoringtest/— Test additions/changeschore/— Maintenance tasks
Follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types: feat, fix, docs, style, refactor, perf, test, chore
Examples:
feat(wishlist): add sharing functionality
fix(extension): handle null price in extraction
docs(readme): update setup instructions
- Write clear, self-documenting code
- Add JSDoc comments for public APIs
- Follow existing patterns in the codebase
- Keep functions small and focused
- Use strict mode
- Prefer
typefor object shapes - Validate external inputs with Zod
- Avoid
any— useunknownand narrow
- Write tests for new features
- Add regression tests for bug fixes
- Keep tests deterministic
- Code follows project style guidelines
- Tests pass locally
- New code has appropriate test coverage
- Documentation updated if needed
- Commit messages follow Conventional Commits
- PR description explains the changes
- A maintainer will review your PR
- Address any feedback or requested changes
- Once approved, a maintainer will merge your PR
- Open a Discussion for questions
- Check existing issues and discussions first
- Reach out at [email protected]
Thank you for contributing! 🎉