A backend API that helps developers discover GitHub issues labeled good first issue by language or topic.
- ✨ Features
- 📦 Installation
- ⚙️ Configuration
- 🚀 Running the App
- 🧪 Testing
- 📢 API Usage
- 📁 Project Structure
- 📚 Contributing
- 🛡 License
- ✅ 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.
git clone https://github.com/DeTuksa/good_first_issue_api.git
cd good_first_issue_api
npm installCreate a .env file in the root directory:
GITHUB_TOKEN=your_personal_github_tokenThis token is used to authenticate requests to the GitHub API to avoid rate limits.
# Development
npm run start:dev
# Production
npm run start:prod# Unit tests
npm run test
# End-to-end (integration) tests
npm run test:e2e
# Code coverage
npm run test:covFetches 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=nestjsExample 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"]
}
]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
We welcome contributions of all kinds!
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature-name. - Make your changes and commit:
git commit -m 'feat: your message'. - Push to your fork:
git push origin feature/your-feature-name. - Submit a pull request.
- 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.
This project is licensed under the MIT License.