Thank you for your interest in contributing to Bugdet! This document provides guidelines and information for contributors.
- How We Work
- Getting Started
- Development Workflow
- Pull Request Process
- Code Style
- Commit Messages
- Issue Guidelines
We heavily use GitHub Issues to manage our tasks and backlog. Before starting any work:
- Check existing issues - Look for an issue that describes what you want to work on
- Create an issue if needed - If no issue exists, create one describing your proposed change
- Wait for assignment - Comment on the issue to express interest and wait for maintainer feedback
- Get assigned - Once assigned, you can start working on the issue
We use labels to categorize and prioritize issues:
| Label | Description |
|---|---|
bug |
Something isn't working correctly |
enhancement |
New feature or improvement request |
documentation |
Documentation improvements |
good first issue |
Good for newcomers to the project |
help wanted |
Extra attention is needed |
priority: high |
High priority items |
priority: low |
Lower priority items |
- Node.js 22+
- pnpm 9+
- Docker
- Git
-
Fork the repository
Click the "Fork" button on GitHub to create your own copy.
-
Clone your fork
git clone https://github.com/YOUR_USERNAME/bugdet.git cd bugdet -
Add upstream remote
git remote add upstream https://github.com/joaopcm/bugdet.git
-
Install dependencies
pnpm install
-
Set up environment variables
cp .env.example .env
See the README for required variables.
-
Start the database
pnpm db:start
-
Run migrations
pnpm db:migrate
-
Start the development server
pnpm dev
Always create a new branch for your work:
# Sync with upstream first
git fetch upstream
git checkout main
git merge upstream/main
# Create your feature branch
git checkout -b feature/your-feature-name
# or for bug fixes
git checkout -b fix/bug-descriptionfeature/- New features or enhancementsfix/- Bug fixesdocs/- Documentation changesrefactor/- Code refactoringchore/- Maintenance tasks
Before submitting your changes, make sure the code passes linting:
pnpm lintThe project uses Biome for linting and formatting. Pre-commit hooks will automatically check your staged files.
| Command | Description |
|---|---|
pnpm dev |
Start development server |
pnpm build |
Build for production |
pnpm lint |
Run linter |
pnpm email |
Preview email templates |
pnpm db:start |
Start database containers |
pnpm db:stop |
Stop database containers |
pnpm db:generate |
Generate new migrations |
pnpm db:migrate |
Run pending migrations |
- Ensure your code follows the style guidelines
- Update documentation if needed
- Test your changes thoroughly
- Sync with upstream to avoid merge conflicts
-
Push your branch
git push origin feature/your-feature-name
-
Open a Pull Request
- Go to the repository on GitHub
- Click "New Pull Request"
- Select your branch
- Fill in the PR template
-
PR Title Format
Use conventional commit format:
feat: add new transaction filterfix: resolve category deletion bugdocs: update API documentationrefactor: simplify auth logicchore: update dependencies
-
PR Description
Include:
- Summary of changes
- Related issue number (e.g., "Closes #123")
- Screenshots for UI changes
- Testing instructions
- Respond to feedback promptly
- Make requested changes in new commits
- Keep your branch updated with the base branch
- Code follows project style guidelines
- Self-reviewed the code
- Added/updated documentation as needed
- No new warnings introduced
- Related issue is linked
We use Biome for consistent code formatting and linting.
- Indentation: 2 spaces
- Quotes: Single quotes for JavaScript/TypeScript
- Semicolons: No semicolons
- Trailing commas: Always
- JSX quotes: Double quotes
Imports should be organized as:
- External dependencies
- Internal aliases (
@/) - Relative imports
- Use explicit types when inference isn't clear
- Prefer
interfaceovertypefor object shapes - Use strict null checks
We follow Conventional Commits:
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
| Type | Description |
|---|---|
feat |
A new feature |
fix |
A bug fix |
docs |
Documentation only changes |
style |
Changes that don't affect code meaning |
refactor |
Code change that neither fixes a bug nor adds a feature |
perf |
Performance improvement |
test |
Adding missing tests |
chore |
Changes to build process or tools |
feat(transactions): add bulk delete functionality
fix(auth): resolve session timeout issue
docs(readme): update installation instructions
refactor(api): simplify error handling in tRPC routersInclude:
- Clear, descriptive title
- Steps to reproduce
- Expected behavior
- Actual behavior
- Environment details (OS, browser, Node version)
- Screenshots if applicable
Include:
- Clear description of the feature
- Use case / motivation
- Proposed solution (if you have one)
- Alternative solutions considered
When creating issues, please use the appropriate template if available.
If you have questions about contributing:
- Check existing issues and discussions
- Open a new issue with the
questionlabel - Be patient - maintainers are often volunteers
Be respectful and inclusive. We want Bugdet to be a welcoming community for everyone.
Thank you for contributing to Bugdet!