GitHub Repository Configuration

This document outlines the recommended GitHub repository settings to support the branching strategy.

Branch Protection Rules

Main Branch Protection

Navigate to Settings → Branches → Add rule for main:

Branch name pattern: main

Protection settings:
✅ Require a pull request before merging
  ✅ Require approvals: 1
  ✅ Dismiss stale PR approvals when new commits are pushed
  ✅ Require review from code owners
✅ Require status checks to pass before merging
  ✅ Require branches to be up to date before merging
  ✅ Status checks that are required: 
    - build (GitHub Actions)
✅ Require conversation resolution before merging
✅ Require linear history
✅ Require deployments to succeed before merging
✅ Include administrators
✅ Restrict pushes that create files that exceed 100 MB

Develop Branch Protection

Navigate to Settings → Branches → Add rule for develop:

Branch name pattern: develop

Protection settings:
✅ Require a pull request before merging
  ✅ Require approvals: 1 (optional for solo development)
✅ Require status checks to pass before merging
  ✅ Require branches to be up to date before merging
✅ Require conversation resolution before merging
✅ Include administrators
✅ Allow force pushes (for maintainers only)
✅ Automatically delete head branches

Repository Settings

General Settings

Repository name: portfolio
Description: Personal portfolio website with Jekyll and GitHub Pages
Website: https://colinrey.ch
Topics: portfolio, jekyll, github-pages, scss, responsive-design

Features:
✅ Wikis: Disabled
✅ Issues: Enabled
✅ Projects: Enabled
✅ Preserve this repository: Enabled
✅ Discussions: Enabled (optional)

Pull Requests:
✅ Allow merge commits: Enabled
✅ Allow squash merging: Enabled (default)
✅ Allow rebase merging: Enabled
✅ Always suggest updating PR branches: Enabled
✅ Automatically delete head branches: Enabled

GitHub Pages Settings

Source: Deploy from a branch
Branch: main
Folder: / (root)
Custom domain: colinrey.ch
✅ Enforce HTTPS: Enabled

Actions Settings

General:
✅ Allow all actions and reusable workflows

Workflow permissions:
✅ Read and write permissions
✅ Allow GitHub Actions to create and approve pull requests

Issue Labels

Custom Labels to Add

Type Labels:
- name: "bug"
  color: "d73a4a"
  description: "Something isn't working"

- name: "enhancement"
  color: "a2eeef"
  description: "New feature or request"

- name: "documentation"
  color: "0075ca"
  description: "Improvements or additions to documentation"

- name: "good first issue"
  color: "7057ff"
  description: "Good for newcomers"

- name: "help wanted"
  color: "008672"
  description: "Extra attention is needed"

Priority Labels:
- name: "priority: low"
  color: "0e8a16"
  description: "Low priority"

- name: "priority: medium"
  color: "fbca04"
  description: "Medium priority"

- name: "priority: high"
  color: "d93f0b"
  description: "High priority"

- name: "priority: critical"
  color: "b60205"
  description: "Critical priority"

Status Labels:
- name: "status: blocked"
  color: "d93f0b"
  description: "Blocked by external dependencies"

- name: "status: in progress"
  color: "0052cc"
  description: "Currently being worked on"

- name: "status: needs review"
  color: "fbca04"
  description: "Ready for review"

Collaborative Features

Code Owners

Create .github/CODEOWNERS file:

# Global owners
* @codefuturist

# Documentation
/docs/ @codefuturist
/README.md @codefuturist

# GitHub configuration
/.github/ @codefuturist

# Styling and design
/_sass/ @codefuturist
/assets/css/ @codefuturist

# Build and deployment
/.github/workflows/ @codefuturist
/_config.yml @codefuturist
/Gemfile @codefuturist

Discussions Categories

Categories:
- General: General discussions about the portfolio
- Ideas: Share ideas for new features or improvements  
- Q&A: Ask and answer questions about the codebase
- Show and tell: Share your work and get feedback

Security Settings

Security Features to Enable

Vulnerability alerts:
✅ Dependency graph: Enabled
✅ Dependabot alerts: Enabled
✅ Dependabot security updates: Enabled

Code scanning:
✅ CodeQL analysis: Enabled (GitHub Actions)
✅ Third-party tools: As needed

Secret scanning:
✅ Secret scanning: Enabled
✅ Push protection: Enabled

Automation with GitHub CLI

To apply these settings via CLI (where supported):

# Set branch protection for main
gh api repos/codefuturist/portfolio/branches/main/protection \
  --method PUT \
  --input protection-config.json

# Create labels
gh label create "priority: high" --color "d93f0b" --description "High priority"

# Set repository topics
gh repo edit --add-topic portfolio,jekyll,github-pages,scss

This configuration ensures a professional, secure, and collaborative development environment.