Thanks for your interest in contributing! This guide will help you get started.
Before you begin, make sure you have the following installed:
- Node.js (v18 or later) - Download
- Bun - A fast JavaScript runtime and package manager. Install it with:
Or see bun.sh for other installation methods.
curl -fsSL https://bun.sh/install | bash - uv - A fast Python package manager. Install it with:
Or via Homebrew:
curl -LsSf https://astral.sh/uv/install.sh | shbrew install uv. See docs.astral.sh/uv for details.
Good First Issue has two main components:
- Front-end app - Built with Nuxt.js, displays the curated list of repositories
- Data population script - Written in Python, fetches repository data from GitHub
-
Clone the repository
git clone https://github.com/DeepSourceCorp/good-first-issue.git cd good-first-issue -
Set up Python environment
uv sync --all-extras
This creates a virtual environment and installs all dependencies.
-
Set up sample data files
The front-end app needs data files to display repositories. Copy the sample files to get started:
cp data/generated.sample.json data/generated.json cp data/tags.sample.json data/tags.json
These files contain:
generated.json- Repository metadata (stars, issues, languages, etc.)tags.json- Language tags for filtering
-
Install frontend dependencies
bun install
-
Start the development server
bun dev
The app will open at http://localhost:3000.
To run the data sanity tests:
uv run python gfi/test_data.pyTo run type checking:
uv run mypy gfi/*.pyOr run both with:
make testmake format- Create a new branch for your changes
- Make your changes and test them locally
- Submit a pull request with a clear description of what you changed and why
If you use AI tools (Claude, Copilot, ChatGPT, etc.) when contributing:
- Disclose AI usage in your pull request description
- Review and test all AI-generated code before submitting
- Ensure accuracy - don't submit code you haven't verified works
Low-quality AI-generated PRs or issues will be closed without review.
Inspired by Ghostty's AI Policy.