Skip to main content

Welcome Contributors

Thank you for your interest in contributing to the Money monorepo! This document provides guidelines and best practices for contributing to the project.

Getting Started

Before you begin contributing:
1

Set up your environment

Follow the Development Setup guide to configure your local environment.
2

Understand the codebase

Familiarize yourself with:
3

Find an issue or feature

Look for:
  • Issues labeled good first issue for beginners
  • Issues labeled help wanted for broader contributions
  • Or propose your own improvements
4

Discuss before major changes

For significant changes:
  • Open an issue to discuss your approach
  • Get feedback from maintainers
  • Ensure alignment with project goals

Types of Contributions

We welcome various types of contributions:

Bug Fixes

Fix issues and improve stability

New Features

Add new functionality and capabilities

Documentation

Improve docs, guides, and examples

Code Quality

Refactoring, optimization, and cleanup

Testing

Add or improve tests

Performance

Optimize speed and efficiency

Contribution Workflow

1. Fork and Clone

Fork the repository and clone it locally:
# Fork via GitHub UI, then clone
git clone https://github.com/YOUR-USERNAME/money.git
cd money

# Add upstream remote
git remote add upstream https://github.com/ORIGINAL-OWNER/money.git

2. Create a Branch

Create a descriptive branch for your changes:
# Feature branch
git checkout -b feature/add-password-generator

# Bug fix branch
git checkout -b fix/authentication-error

# Documentation branch
git checkout -b docs/update-setup-guide
Branch naming conventions:
  • feature/description - New features
  • fix/description - Bug fixes
  • docs/description - Documentation updates
  • refactor/description - Code refactoring
  • test/description - Test additions/changes
  • chore/description - Maintenance tasks

3. Make Your Changes

Follow these guidelines while coding:
1

Write clean code

  • Follow the Code Style guidelines
  • Use TypeScript types properly
  • Write self-documenting code with clear names
  • Add comments for complex logic
2

Test your changes

# Run type checking
pnpm check-types

# Run linting
pnpm lint

# Test locally
pnpm dev --filter=your-app

# Build to verify
pnpm build --filter=your-app
3

Keep changes focused

  • One logical change per commit
  • Separate refactoring from feature changes
  • Don’t mix unrelated changes
4

Update documentation

  • Update relevant docs if behavior changes
  • Add JSDoc comments for new functions
  • Update README if applicable

4. Commit Your Changes

Write clear, descriptive commit messages:
# Good commit messages
git commit -m "feat: add password strength indicator"
git commit -m "fix: resolve authentication timeout issue"
git commit -m "docs: update environment variables guide"
git commit -m "refactor: simplify database connection logic"

# Bad commit messages
git commit -m "update"
git commit -m "fix stuff"
git commit -m "changes"

Commit Message Format

type(scope): subject

[optional body]

[optional footer]
Types:
  • feat - New feature
  • fix - Bug fix
  • docs - Documentation changes
  • style - Code style/formatting (no logic change)
  • refactor - Code refactoring
  • perf - Performance improvements
  • test - Adding or updating tests
  • chore - Maintenance tasks
  • ci - CI/CD changes
Examples:
feat(auth): add two-factor authentication support

Implements TOTP-based 2FA using the authenticator app.
Includes QR code generation and backup codes.

Closes #123
fix(secure): prevent XSS in password notes field

Sanitize user input before rendering to prevent XSS attacks.
Add additional validation on the backend.

5. Push and Create Pull Request

# Push your branch
git push origin feature/your-feature-name
Then create a pull request on GitHub. See Pull Request Guidelines for details.

Code Review Process

All contributions go through code review:
1

Automated checks

CI/CD pipelines will run:
  • Type checking
  • Linting
  • Build verification
  • Tests (when available)
2

Maintainer review

A maintainer will review your code for:
  • Code quality and style
  • Logic and correctness
  • Performance implications
  • Security considerations
  • Documentation completeness
3

Address feedback

  • Respond to review comments
  • Make requested changes
  • Push updates to your branch
  • Re-request review when ready
4

Approval and merge

Once approved:
  • Maintainer will merge your PR
  • Your changes will be deployed
  • You’ll be credited in release notes

Code Quality Standards

All contributions must meet these standards:

TypeScript

  • ✅ All code must be properly typed
  • ✅ No any types without justification
  • ✅ Pass pnpm check-types without errors
  • ✅ Use interfaces for object shapes
  • ✅ Use type guards for runtime validation

Linting

  • ✅ Pass pnpm lint with zero warnings
  • ✅ Follow ESLint rules
  • ✅ Fix auto-fixable issues: pnpm lint -- --fix
  • ✅ No disabled rules without explanation

Code Style

  • ✅ Follow Code Style guidelines
  • ✅ Use Prettier for formatting: pnpm format
  • ✅ Consistent naming conventions
  • ✅ Clear and readable code

Testing

  • ✅ Test changes manually in browser
  • ✅ Verify builds succeed: pnpm build
  • ✅ Check for console errors
  • ✅ Test edge cases and error scenarios

What We Look For

Good contributions typically have: Clear purpose - Solves a specific problem or adds defined value Quality code - Well-written, maintainable, follows conventions Proper testing - Verified to work correctly Documentation - Code is documented, guides updated Focused scope - Does one thing well No breaking changes - Or clearly documented if necessary

What to Avoid

Large, unfocused PRs - Break into smaller, logical changes Breaking changes without discussion - Discuss first Incomplete features - Ensure functionality is complete Poor code quality - Follow style guide and best practices Missing documentation - Update docs with changes Unrelated changes - Keep PRs focused

Getting Help

If you need help:
  • 💬 Ask questions in GitHub issues
  • 📖 Read the docs for guidance
  • 🔍 Search existing issues for similar problems
  • 👥 Reach out to maintainers for major contributions

Recognition

Contributors are recognized in:
  • GitHub contributors list
  • Release notes and changelogs
  • Project documentation (when appropriate)

License

By contributing, you agree that your contributions will be licensed under the same license as the project.

Code of Conduct

Be respectful and professional:
  • ✅ Be welcoming and inclusive
  • ✅ Respect differing viewpoints
  • ✅ Accept constructive criticism gracefully
  • ✅ Focus on what’s best for the project
  • ❌ No harassment, discrimination, or unprofessional behavior

Thank You!

Your contributions help make this project better for everyone. We appreciate your time and effort!

Next Steps

Code Style

Learn the project’s code style conventions

Pull Requests

How to create great pull requests

Development Setup

Set up your development environment

Running Locally

Start coding and testing

Build docs developers (and LLMs) love