name: "🍰 Request a new recipe!"
description: I have a request for a fresh, tasty recipe 😋
title: "[recipe] "
labels: ["recipe/request", "status/backlog", "good first issue"]

body:
  - type: markdown
    attributes:
      value: |
        ## :wave: Greetings

        Greetings, fellow geek! 
        
        Thanks for taking the time to request this recipe! This issue form helps to capture the 
        request in a standardized way, and to pre-gather as much information as possible, to expidite
        the cooking process!

  - type: checkboxes
    id: sanity_check
    attributes:
      label: 🤪 Sanity check
      description: Let's confirm that this is not a recipe which has previously been discussed / proposed
      options:
        - label: I have searched and confirmed no existing [open](https://github.com/funkypenguin/geek-cookbook/issues?q=is%3Aissue) / [closed](https://github.com/funkypenguin/geek-cookbook/issues?q=is%3Aissue+is%3Aclosed) issues, or [open](https://github.com/funkypenguin/geek-cookbook/pulls?q=is%3Apr) / [closed](https://github.com/funkypenguin/geek-cookbook/pulls?q=is%3Apr+is%3Aclosed) PRs exist for this recipe
          required: true       
        - label: I have confirmed that the app is actively supported by its developers (_i.e., not deprecated or abandoned_)
          required: true
          

  - type: textarea
    attributes:
      label: 📜 Description
      description: Please provide a brief description of the proposed recipe
    validations:
      required: true

  - type: input
    id: project_homepage
    attributes:
      label: 🏠 Project Homepage
      description: Provide a link to the project's homepage
      placeholder: e.g. https://radarr.video/
    validations:
      required: true

  - type: input
    id: discord_id
    attributes:
      label: 💬 Your Discord username
      description: If you've joined our [Discord server](http://chat.funkypenguin.co.nz), enter your username here so that we can collaborate effectively
      placeholder: BobTheBuilder#4567


  - type: checkboxes
    id: orchestration
    attributes:
      label: 🤹‍♀️ Orchestration Platform
      description: Which platform(s) are you interested in a recipe supporting?
      options:
        - label: I'm interested deploying the app into Docker Swarm using manual editing and classic `docker stack deploy`
        - label: I'm interested deploying the app into Docker Swarm using [premix](https://geek-cookbook.funkypenguin.co.nz/premix/)'s automated ansible playbooks
        - label: I'm interested deploying the app into Kubernetes using [premix](https://geek-cookbook.funkypenguin.co.nz/premix/)'s helm charts

  - type: checkboxes
    id: engagement
    attributes:
      label: 💍 Engagement
      description: To get this recipe cooked, I'm willing to...
      options:
        - label: I plan to test the recipe after publication and provide feedback
        - label: I'm happy to provide community support in Discord re the recipe
        - label: I plan to submit a PR for this recipe myself 🏆

  - type: checkboxes
    id: terms
    attributes:
      label: Code of Conduct
      description: By submitting this issue, you agree to follow our community's [Code of Conduct](https://geek-cookbook.funkypenguin.co.nz/community/code-of-conduct/)
      options:
        - label: I agree to follow this Geek Cookbook's Code of Conduct
          required: true

  - type: markdown
    attributes:
      value: |
        That's it for the obligatory checkboxes 👌
        
        ---

        The questions which follow are intended to help to frame the recipe correctly. 
        If your're not sure, that's ok, just choose `¯\_(ツ)_/¯` from the dropdown selection.

  - type: dropdown
    id: authentication
    validations:
      required: true    
    attributes:
      label: 🔐 Authentication
      description: |
        Does the app provide its own authentication (_i.e. NextCloud_), or does it require an authentication frontend (_i.e., Radarr_)?

        How should access to the app be managed?
      options:
        - The app provides its own, trustworthy authentication, or access control is unnecessary. I'd be happy exposing it to the internet
        - The app needs something in front of it to secure access (traefik-forward-auth, authelia, etc)
        - ¯\_(ツ)_/¯ 

  - type: dropdown
    validations:
      required: true  
    id: config
    attributes:
      label: 💼 Config Management
      description: How is the app configured? Some applications are configured [entirely using environment variables](https://12factor.net), some need static config files mounted into their container, and some are configured using an interactive setup process (_i.e. NextCloud_). 
      multiple: true
      options:
        - The app is configured with environment variables
        - The app is configured with command-line arguments
        - The app is configured with a static config file on the filesystem
        - The app is configured interactively which then persists the config to the filesystem
        - ¯\_(ツ)_/¯ 

  - type: dropdown
    id: connectivity
    validations:
      required: true
    attributes:
      label: 💼 Connnectivity
      description: What sort of network connectivity does the app need?
      multiple: true
      options:
        - The app requires no network connectivity
        - The app requires inbound web access HTTP/S access
        - The app requires inbound arbitrary TCP/UDP access
        - The app requires connectivity to other apps in its own stack (i.e., a database)
        - ¯\_(ツ)_/¯       

  - type: dropdown
    id: persistence
    validations:
      required: true    
    attributes:
      label: 💾 Data persistence
      description: What sort of persisted data does the app need?
      multiple: true
      options:
        - The app needs no persisted data
        - The app needs access to its own persistent data (i.e. logs, database directory, etc)
        - The app needs access to outside data (i.e. a media player)
        - ¯\_(ツ)_/¯   

  - type: dropdown
    id: backup
    validations:
      required: true    
    attributes:
      label: 🪂 Backup
      description: How is backup of the app's data to be handled?
      options:
        - The app does not require backup
        - The app can be backed up with a simple filesystem data copy
        - The app requires an extra process to create backups for a file-based copy (i.e., a mysql database dump)
        - ¯\_(ツ)_/¯       

