Here's the markdown documentation for the automated hackathon submission project:
# Auto Hackathon Submission Project
This project automates the process of detecting eligible hackathons, configuring the project dynamically, creating necessary cloud resources, submitting the project to the hackathon, and creating a Jira issue for tracking.
## Table of Contents
1. [Overview](#overview)
2. [Setup](#setup)
3. [How it Works](#how-it-works)
4. [Cloud Resources](#cloud-resources)
5. [Jira Integration](#jira-integration)
6. [Running the Script](#running-the-script)
7. [Automated Workflow](#automated-workflow)
8. [Future Improvements](#future-improvements)
## Overview
This project automates the following steps for hackathon participation:
- **Hackathon Detection**: The system queries hackathon platforms to detect live and eligible hackathons.
- **Project Configuration**: Configures the project dynamically, including dependencies like Python or Node.js, based on the detected hackathon.
- **Cloud Resource Creation**: Automatically creates cloud resources (e.g., Google Cloud storage buckets, virtual machines).
- **Project Submission**: Submits the project to the selected hackathon platform.
- **Jira Issue Creation**: Creates a Jira issue to track the progress of the hackathon project.
## Setup
1. **Install Required Tools**:
The script requires several tools to run properly. Ensure these tools are installed on your system:
- `forge`: For deployment configuration.
- `gcloud`: For Google Cloud SDK.
- `git`: For version control.
- `curl`: For HTTP requests.
- `jq`: For JSON parsing.
The script will check if these tools are installed and attempt to install them if they are missing.
2. **Google Cloud Setup**:
- You need a Google Cloud account and a service account key to interact with Google Cloud APIs (e.g., creating storage buckets).
- Set up a GCP project and provide the `GCP_PROJECT_ID` and `GCP_SERVICE_ACCOUNT_KEY` in the script.
3. **Jira Setup**:
- Create a Jira instance for tracking the hackathon project.
- Provide the `JIRA_URL`, `JIRA_USERNAME`, and `JIRA_API_TOKEN` for authentication with Jira.
4. **Hackathon Platform Setup**:
- The script uses an API (`HACKATHON_API_URL`) to detect live and eligible hackathons. Replace it with the actual hackathon platform API URL you wish to interact with.
## How it Works
The script automates the following tasks:
1. **Detecting Eligible Hackathons**:
- The script queries the hackathon platform's API and retrieves a list of live and eligible hackathons.
- It selects the first hackathon in the list.
2. **Creating Cloud Resources**:
- The script uses the Google Cloud SDK (`gcloud`) to create cloud resources like storage buckets and virtual machines for hosting the project.
3. **Configuring the Project**:
- The project is configured dynamically based on the detected hackathon's requirements. The configuration includes setting up necessary tech stacks (Python, Node.js) and generating deployment configurations for Forge.
4. **Submitting the Project**:
- The script submits the project to the hackathon platform via API by providing the GitHub repository URL, project name, category, and description.
5. **Creating a Jira Issue**:
- A Jira issue is created to track the project’s progress. The issue includes project details, such as the hackathon name and submission status.
## Cloud Resources
The script uses Google Cloud for hosting and resource management. These are the steps involved in cloud resource creation:
1. **Storage Bucket**:
- A storage bucket is created to store project files or other necessary resources.
2. **VM Instances** (if required):
- Virtual machines can be created if the hackathon requires backend infrastructure.
3. **App Engine or Cloud Run**:
- For deployment, the project can be deployed to Google Cloud App Engine or Cloud Run, depending on the configuration.
## Jira Integration
The script integrates with Jira to create a task that tracks the project's progress. The Jira issue includes:
- **Project Name**: The name of the hackathon project.
- **Summary**: A short description of the project.
- **Description**: Detailed information about the project, including hackathon details and submission status.
- **Issue Type**: The issue type is set to "Task."
## Running the Script
To run the script:
1. Clone the repository:
```bash
git clone https://github.com/allyelvis/self-improving-ml-hackathon.git
cd self-improving-ml-hackathon
Make the script executable:
chmod +x hackathon_automation.shRun the script:
./hackathon_automation.sh
Automated Workflow
The following is the sequence of steps performed by the script:
- Tool Check: Verifies if required tools are installed (Forge, Gcloud, Git, Curl, jq).
- Hackathon Detection: Detects eligible hackathons using the API.
- Cloud Resource Creation: Automatically provisions cloud resources (e.g., Google Cloud bucket).
- Project Configuration: Configures the project based on the hackathon's technology stack requirements.
- Project Submission: Submits the project to the hackathon platform.
- Jira Issue Creation: Creates a Jira issue for tracking progress.
Future Improvements
- Self-Improvement: The system can be extended to include AI/ML capabilities that help optimize the project's performance based on previous hackathon submissions.
- Multiple Hackathon Support: Extend the system to submit projects to multiple hackathons automatically.
- Dynamic Resource Scaling: Integrate auto-scaling capabilities in the cloud to handle increased load during the hackathon event.
- Enhanced Jira Integration: Include additional Jira features like time tracking, comments, and project management tools.
License
This project is licensed under the MIT License - see the LICENSE file for details.
### **How to Use the Markdown**:
- **Overview**: Provides a high-level view of the project’s functionality.
- **Setup**: Details the prerequisites for running the project, such as tools, configurations, and setup steps for cloud resources and Jira.
- **How it Works**: Explains the sequence of operations the script performs.
- **Cloud Resources**: Describes the resources managed by Google Cloud and the integration used in the script.
- **Jira Integration**: Explains how the Jira integration is handled.
- **Running the Script**: Provides clear instructions to clone and run the script.
- **Automated Workflow**: Lists the workflow that the script follows, step by step.
- **Future Improvements**: Outlines potential areas for future growth and enhancement of the system.
Log in or sign up for Devpost to join the conversation.