# Seeking a Development Team for GitHub Integration Project
This job is designed to find a development team capable of handling backend services that integrate with GitHub. This project will serve as a test to determine if your team is suitable for long-term collaboration. Our company has successfully worked with several international engineers, and we are looking to expand our development capabilities.
## Our Team
We are seeking a dependable team for long-term outsourcing projects, with a focus on maintaining high standards in quality, scheduling, and pricing. Our organization is ISO27001 certified, and any collaboration must adhere to our stringent project specifications. [View our certification]([login to view URL]).
## Please provide your personal information for the interview.
1. Are you a team player or an individual worker?
2. Past projects involving Java, Spring Boot, and GitHub API integrations.
3. Link to your GitHub profile.
4. Experience with webhook implementations.
# Project Overview
## Objective
This project aims to develop a backend service that integrates with GitHub, focusing on reading issues and pull requests (PRs), handling webhook notifications, and creating new issues via the GitHub API.
## Task
### Task 1: [Feature] Implement Issue and Pull Request Retrieval from GitHub
- **Details to Retrieve:**
- **Issues:** Retrieve basic information (ID, number, title, body, state, etc.), participants (assignees, labels, milestone), associations (comments, linked pull requests, custom fields), and other relevant data (Node ID, state reason).
- **Pull Requests:** Retrieve basic information (ID, number, title, body, state, etc.), branch and commit details (head, base, commits, files changed), merge information (merged status, mergeable state, etc.), participants (assignees, reviewers), associations (comments, linked issues, custom fields), and other relevant data (Node ID).
### Task 2: [Feature] Create New Issues on GitHub
- Implement functionality to create new GitHub issues via the GitHub API, with customizable parameters such as title, body, labels, assignees, milestone, and custom fields.
### Task 3: [Feature] Manage API Keys and Secure Authentication
- Implement API key management using a `.yaml` configuration file, supporting environment variables for flexible configuration across different environments (development, testing, production).
- Ensure secure authentication with GitHub.
### Task 4: [Documentation] Document GitHub Data Retrieval Fields
- Document all fields that the system can retrieve from GitHub, detailing their purpose, usage, and how to use the API. The documentation should be clear and thorough to ensure ease of use and future maintenance.
### Task 5: [Feature] Handle Webhook Notifications
- Implement an API to process webhook notifications triggered by changes to issues and PRs in GitHub.
- The API should handle incoming notifications and provide appropriate responses, ensuring all mutable items in GitHub (e.g., issues, PRs) are monitored effectively.
### Task 6: [Scalability & Error Handling] Ensure Robust Performance and Error Management
- Design the service to efficiently handle large volumes of issues and PRs, implementing pagination for data retrieval to manage large datasets.
- Implement robust error handling to manage API failures, rate limits, and other potential issues. Provide clear and actionable error messages to users.
### Deadline
- **Start Time:** The project must start within 24 hours of accepting the job.
- **Completion Time:** The project must be completed within 5 days.
### Budget
- **Fixed Rate:** USD 300 for the entire project.
- The project is estimated to require 24 hours for completion.
- **Payment Release:** Upon successful review by our QA and Development Teams.
### Skills Required
- Java
- Spring Boot
- GitHub API
- RESTful API Development
- Webhooks
- YAML Configuration
### Detailed Requirements
For a detailed explanation of the updated requirements, please refer to the following document: [Detailed Requirements]([login to view URL]).
# Acceptance
## Function Review
- Ensure all GitHub data retrievals are accurate and complete.
- Secure and correct handling of API keys and authentication.
- Complete and well-structured documentation.
- Successful handling and response to GitHub webhook notifications.
## Fool-proof Design
- **API:** Ensure API stability, with proper error handling and rate limit management.
- **Security:** Secure management of API keys using best practices in `.yaml` configuration.
- **Flexibility:** Dynamic handling of GitHub custom fields to ensure adaptability to future changes.
## Code Review
- Adherence to development specifications and industry standards.
- Clean, maintainable, and well-documented code.
- Successful integration with GitHub's APIs and seamless handling of webhooks.