Files
Charon/PROJECT_BOARD_SETUP.md

9.7 KiB

GitHub Project Board Setup & Automation Guide

This guide will help you set up the project board and automation for CaddyProxyManager+.

🎯 Quick Start (5 Minutes)

Step 1: Create the Project Board

  1. Go to https://github.com/Wikid82/CaddyProxyManagerPlus/projects
  2. Click "New project"
  3. Choose "Board" view
  4. Name it: CaddyProxyManager+ Development
  5. Click "Create"

Step 2: Configure Project Columns

The new GitHub Projects automatically creates columns. Add these views/columns:

  1. 📋 Backlog - Issues that are planned but not started
  2. 🏗️ Alpha - Core foundation features (v0.1)
  3. 🔐 Beta - Security - Authentication, WAF, CrowdSec features
  4. 📊 Beta - Monitoring - Logging, dashboards, analytics
  5. 🎨 Beta - UX - UI improvements and user experience
  6. 🚧 In Progress - Currently being worked on
  7. 👀 Review - Ready for code review
  8. Done - Completed issues

Step 3: Get Your Project Number

After creating the project, your URL will look like:

https://github.com/users/Wikid82/projects/1

The number at the end (e.g., 1) is your PROJECT_NUMBER.

Step 4: Update the Automation Workflow

  1. Open .github/workflows/auto-add-to-project.yml
  2. Replace YOUR_PROJECT_NUMBER with your actual project number:
    project-url: https://github.com/users/Wikid82/projects/1
    
  3. Commit and push the change

Step 5: Create Labels

  1. Go to: https://github.com/Wikid82/CaddyProxyManagerPlus/actions
  2. Find the workflow: "Create Project Labels"
  3. Click "Run workflow" > "Run workflow"
  4. Wait ~30 seconds - this creates all 27 labels automatically!

Step 6: Test the Automation

  1. Create a test issue with title: [ALPHA] Test Issue
  2. Watch it automatically:
    • Get labeled with alpha
    • Get added to your project board
    • Appear in the correct column

🔧 How the Automation Works

Workflow 1: auto-add-to-project.yml

Triggers: When an issue or PR is opened/reopened Action: Automatically adds it to your project board

Workflow 2: auto-label-issues.yml

Triggers: When an issue is opened or edited Action: Scans title and body for keywords and adds labels

Auto-labeling Examples:

  • Title contains [critical] → Adds critical label
  • Body contains crowdsec → Adds crowdsec label
  • Title contains [alpha] → Adds alpha label

Workflow 3: create-labels.yml

Triggers: Manual only Action: Creates all project labels with proper colors and descriptions


📝 Using the Issue Templates

We've created 4 specialized issue templates:

1. 🏗️ Alpha Feature (alpha-feature.yml)

For core foundation features (Issues #1-10 in planning doc)

  • Automatically tagged with alpha and feature
  • Includes priority selector
  • Has task checklist format

2. 🔐 Beta Security Feature (beta-security-feature.yml)

For authentication, WAF, CrowdSec, etc. (Issues #11-22)

  • Automatically tagged with beta, feature, security
  • Includes threat model section
  • Security testing plan included

3. 📊 Beta Monitoring Feature (beta-monitoring-feature.yml)

For logging, dashboards, analytics (Issues #23-27)

  • Automatically tagged with beta, feature, monitoring
  • Includes metrics planning
  • UI/UX considerations section

4. ⚙️ General Feature (general-feature.yml)

For any other feature request

  • Flexible milestone selection
  • Problem/solution format
  • User story section

🎨 Label System

Priority Labels (Required for all issues)

  • 🔴 critical - Must have, blocks other work
  • 🟠 high - Important, should be included
  • 🟡 medium - Nice to have, can be deferred
  • 🟢 low - Future enhancement

Milestone Labels

  • 🟣 alpha - Foundation (v0.1)
  • 🔵 beta - Advanced features (v0.5)
  • 🟦 post-beta - Future enhancements (v1.0+)

Category Labels

  • architecture, backend, frontend
  • security, ssl, sso, waf
  • caddy, crowdsec
  • database, ui, deployment
  • monitoring, documentation, testing
  • performance, community
  • plus (premium features), enterprise

📊 Creating Issues from Planning Doc

For each issue in PROJECT_PLANNING.md:

  1. Click "New Issue"
  2. Select the appropriate template
  3. Copy content from planning doc
  4. Set priority from the planning doc
  5. Create the issue

The automation will:

  • Auto-label based on title keywords
  • Add to project board
  • Place in appropriate column (if configured)

Method 2: Bulk Creation Script (Advanced)

You can create a script to bulk-import issues. Here's a sample using GitHub CLI:

#!/bin/bash
# install: brew install gh
# auth: gh auth login

# Example: Create Issue #1
gh issue create \
  --title "[ALPHA] Project Architecture & Tech Stack Selection" \
  --label "alpha,critical,architecture" \
  --body-file issue_templates/issue_01.md

🎯 Suggested Workflow

For Project Maintainers:

  1. Review Planning Doc: PROJECT_PLANNING.md
  2. Create Alpha Issues First: Issues #1-10
  3. Prioritize in Project Board: Drag to order
  4. Assign to Milestones: Create GitHub milestones
  5. Start Development: Pick from top of Alpha column
  6. Move Cards: As work progresses, move across columns
  7. Create Beta Issues: Once alpha is stable

For Contributors:

  1. Browse Project Board: See what needs work
  2. Pick an Issue: Comment "I'd like to work on this"
  3. Get Assigned: Maintainer assigns you
  4. Submit PR: Link to the issue
  5. Auto-closes: PR merge auto-closes the issue

🔐 Required Permissions

The GitHub Actions workflows require these permissions:

  • issues: write - To add labels (already included)
  • CPMP_TOKEN - Automatically provided (already configured)
  • ⚠️ Project Board Access - Ensure Actions can access projects

To verify project access:

  1. Go to project settings
  2. Under "Manage access"
  3. Ensure "GitHub Actions" has write access

🚀 Advanced: Custom Automations

Auto-move to "In Progress"

Add this to your project board automation (in project settings):

When: Issue is assigned Then: Move to "🚧 In Progress"

Auto-move to "Review"

When: PR is opened and linked to issue Then: Move issue to "👀 Review"

Auto-move to "Done"

When: PR is merged Then: Move issue to " Done"

Auto-assign by label

When: Issue has label critical Then: Assign to @Wikid82


📋 Creating Your First Issues

Here's a suggested order to create issues from the planning doc:

Week 1 - Foundation (Create these first):

  • Issue #1: Project Architecture & Tech Stack Selection
  • Issue #2: Caddy Integration & Configuration Management
  • Issue #3: Database Schema & Models

Week 2 - Core UI:

  • Issue #4: Basic Web UI Foundation
  • Issue #5: Proxy Host Management (Core Feature)

Week 3 - HTTPS & Security:

  • Issue #6: Automatic HTTPS & Certificate Management
  • Issue #7: User Authentication & Authorization

Week 4 - Operations:

  • Issue #8: Basic Access Logging
  • Issue #9: Settings & Configuration UI
  • Issue #10: Docker & Deployment Configuration

Then: Alpha release! 🎉


🎨 Project Board Views

Create multiple views for different perspectives:

View 1: Kanban (Default)

All issues in status columns

View 2: Priority Matrix

Group by: Priority Sort by: Created date

View 3: By Category

Group by: Labels (alpha, beta, etc.) Filter: Not done

View 4: This Sprint

Filter: Milestone = Current Sprint Sort by: Priority


📱 Mobile & Desktop

The project board works great on:

  • 💻 GitHub Desktop
  • 📱 GitHub Mobile App
  • 🌐 Web interface

You can triage issues from anywhere!


🆘 Troubleshooting

Issue doesn't get labeled automatically

  • Check title has bracketed keywords: [ALPHA], [CRITICAL]
  • Check workflow logs: Actions > Auto-label Issues
  • Manually add labels - that's fine too!

Issue doesn't appear on project board

  • Check the workflow ran: Actions > Auto-add issues
  • Verify your project URL in the workflow file
  • Manually add to project from issue sidebar

Labels not created

  • Run the "Create Project Labels" workflow manually
  • Check you have admin permissions
  • Create labels manually from Issues > Labels

Workflow permissions error

  • Go to Settings > Actions > General
  • Under "Workflow permissions"
  • Select "Read and write permissions"
  • Save

🎓 Learning Resources


Final Checklist

Before starting development, ensure:

  • Project board created
  • Project URL updated in workflow file
  • Labels created (run the workflow)
  • Issue templates tested
  • First test issue created successfully
  • Issue auto-labeled correctly
  • Issue appeared on project board
  • Column automation configured
  • Team members invited to project
  • Alpha milestone issues created (Issues #1-10)

🎉 You're Ready!

Your automated project management is set up! Every issue will now:

  1. Automatically get labeled
  2. Automatically added to project board
  3. Move through columns as work progresses
  4. Have structured templates for consistency

Focus on building awesome features - let automation handle the busywork! 🚀


Questions? Open an issue or discussion! The automation will handle it 😉