Skip to content

🀝 Contributing

We welcome contributions from everyone β€” whether you're fixing a typo, improving tests, or building new features!

This guide will walk you through setting up the project locally and contributing with confidence. Let’s build something great together! πŸš€

⭐️ Star the repo to show your support: https://github.com/jd-35656/resumake


πŸ“Œ How to Contribute

  1. Fork the repository
  2. Clone your fork locally
  3. Create a new branch for your feature or fix
  4. Make your changes
  5. Run tests and checks
  6. Push to your fork
  7. Open a Pull Request

Please use Conventional Commits for commit messages.


πŸ§ͺ Development Environment Setup

1. Clone the Repository

git clone https://github.com/jd-35656/resumake.git
cd resumake

2. Install Development Tooling

We use nox to automate development tasks:

pipx install nox

3. Create a Virtual Environment

nox -s develop-3.13

This sets up a virtual environment in .nox/develop-3.13.

4. Activate the Environment

source .nox/develop-3-13/bin/activate

5. Deactivate the Environment

deactivate

Using a Different Python Version?

Run nox -l to see available Python versions (e.g., 3.9–3.13) and run:

nox -s develop-3.12

🧠 IDE Setup

  1. Open the project folder
  2. Press Ctrl+Shift+P β†’ β€œPython: Select Interpreter”
  3. Select .nox/develop-3-13/bin/python
  4. Recommended Extensions:

    • Python
    • Pylance
    • Ruff
  1. File β†’ Settings β†’ Project β†’ Python Interpreter
  2. Add: .nox/develop-3-13/bin/python
  3. Apply and OK

βœ… Verify Your Setup

Make sure everything is working correctly:

nox            # Run tests, lint, and type checks
nox -s tests   # Just run tests
nox -s lint    # Run formatter and linter
nox -s check   # Lint + type check

πŸ› οΈ Development Workflow

  1. Make your changes
  2. Run nox to ensure all checks pass
  3. Add a changelog entry (if needed)
  4. Commit using Conventional Commits
  5. Push to your fork
  6. Open a PR on GitHub

πŸ“ Changelog Entries

For user-facing changes, add a changelog fragment using towncrier:

changelog.d/<issue_number>.<type>.rst

Types: added, changed, deprecated, removed, fixed, security

Example:

changelog.d/123.added.rst     # Adds a new feature

🧹 Code Standards

Style Guide


πŸ—‚οΈ Project Structure

src/resumake/
β”œβ”€β”€ __main__.py         # CLI entry
β”œβ”€β”€ __version__.py      # Auto-generated
β”œβ”€β”€ cli/
β”‚   └── app.py          # Typer app
└── core/
    └── __init__.py

tests/
β”œβ”€β”€ test_cli.py
β”œβ”€β”€ test_app.py
β”œβ”€β”€ test_main.py
β”œβ”€β”€ test_version.py
└── test_package.py

πŸ“„ Key Files

Important Files

  • noxfile.py – Dev automation (lint, tests, etc.)
  • pyproject.toml – Dependencies and tool configs
  • docs/ – MkDocs documentation
  • .github/workflows/ – CI/CD automation
  • changelog.d/ – Changelog fragments

πŸ› οΈ Troubleshooting

Common Problems & Fixes

Issue Solution
Tests failing nox -s tests -- -v
Lint errors nox -s lint (auto-fixable with Ruff)
Type errors nox -s typecheck
Coverage too low Add more tests!
CI build fails Check GitHub Actions logs

πŸ™Œ Thank You

Your contributions make this project better! Even small improvements make a big impact. Feel free to open an issue or start a discussion.

⭐️ Star the project: https://github.com/jd-35656/resumake