Skip to content

DeTuksa/good_first_issue_api

Repository files navigation

🧐 Good First Issue Dashboard – Backend

NestJS logo

A backend API that helps developers discover GitHub issues labeled good first issue by language or topic.


📘 Table of Contents


✨ Features

  • ✅ Fetches GitHub issues tagged with good first issue.
  • 🔍 Supports filtering by language and topic.
  • ⚡ Built with NestJS + GitHub REST API v3.
  • 🧪 Includes unit and integration tests (Jest + Supertest).
  • 📦 Modular and scalable backend architecture.
  • 📊 Simple and ready for frontend dashboard integration.

📦 Installation

git clone https://github.com/DeTuksa/good_first_issue_api.git
cd good_first_issue_api
npm install

⚙️ Configuration

Create a .env file in the root directory:

GITHUB_TOKEN=your_personal_github_token

This token is used to authenticate requests to the GitHub API to avoid rate limits.


🚀 Running the App

# Development
npm run start:dev

# Production
npm run start:prod

🧪 Testing

# Unit tests
npm run test

# End-to-end (integration) tests
npm run test:e2e

# Code coverage
npm run test:cov

📢 API Usage

GET /github/issues

Fetches GitHub issues labeled good first issue.

Query Parameters:

Parameter Type Description
language string (Optional) Filter by programming language
topic string (Optional) Filter by repository topic

Example Request:

GET /github/issues?language=typescript&topic=nestjs

Example Response:

[
  {
    "title": "Fix input validation bug",
    "url": "https://github.com/org/repo/issues/123",
    "repository": "https://api.github.com/repos/org/repo",
    "created_at": "2025-05-14T10:00:00Z",
    "labels": ["good first issue", "bug"]
  }
]

📁 Project Structure

src/
├── github/
│   ├── github.controller.spec.ts      # Controller unit tests
│   ├── github.controller.ts         # Handles API routes 
│   ├── github.module.ts
│   ├── github.service.spec.ts    # Unit tests
│   └── github.service.ts # Business logic and GitHub API requests
├── app.module.ts

test/
├── github.e2e-spec.ts            # End-to-end tests (Supertest)

.env.example                      # Sample env config

📚 Contributing

We welcome contributions of all kinds!

🛠 How to Contribute

  1. Fork the repository.
  2. Create a new branch: git checkout -b feature/your-feature-name.
  3. Make your changes and commit: git commit -m 'feat: your message'.
  4. Push to your fork: git push origin feature/your-feature-name.
  5. Submit a pull request.

✅ Guidelines

  • Follow conventional commit messages (e.g. feat:, fix:, docs:).
  • Write or update tests for any changes.
  • Ensure all tests pass: npm run test.

Check out CONTRIBUTING.md for full details.


🛡 License

This project is licensed under the MIT License.


🙌 Acknowledgments

About

An API that scrapes GitHub for repositories with good first issues in specific languages or topics.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors