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
  1. Make the script executable:

    chmod +x hackathon_automation.sh
    
  2. Run the script:

    ./hackathon_automation.sh
    

Automated Workflow

The following is the sequence of steps performed by the script:

  1. Tool Check: Verifies if required tools are installed (Forge, Gcloud, Git, Curl, jq).
  2. Hackathon Detection: Detects eligible hackathons using the API.
  3. Cloud Resource Creation: Automatically provisions cloud resources (e.g., Google Cloud bucket).
  4. Project Configuration: Configures the project based on the hackathon's technology stack requirements.
  5. Project Submission: Submits the project to the hackathon platform.
  6. Jira Issue Creation: Creates a Jira issue for tracking progress.

Future Improvements

  1. Self-Improvement: The system can be extended to include AI/ML capabilities that help optimize the project's performance based on previous hackathon submissions.
  2. Multiple Hackathon Support: Extend the system to submit projects to multiple hackathons automatically.
  3. Dynamic Resource Scaling: Integrate auto-scaling capabilities in the cloud to handle increased load during the hackathon event.
  4. 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.

Built With

Share this project:

Updates