Skip to content

Repository files navigation

SoloDevBoard

CI

A single pane of glass for solo developers managing GitHub workloads across multiple repositories.

What Is SoloDevBoard?

SoloDevBoard is a .NET 10 Blazor Server application that consolidates your GitHub repository management into a single, unified interface. If you maintain multiple GitHub repositories as a solo developer, SoloDevBoard eliminates the context-switching between repository tabs, project boards, settings pages, and workflow runs.

FeatureDescriptionStatus
Audit DashboardConsolidated view of issues, open PRs, workflow health, and label consistency across selected repositories.Available
Label ManagerCreate, edit, synchronise, and enforce label taxonomies across multiple repositories from a single interface.Available
RepositoriesView, search, refresh, and filter repositories accessible to your GitHub account (including open-source topic filters). Add, remove, bulk, and row catalogue actions remain stubs.Partially Available
One-Click MigrationMigrate labels, milestones, and Projects v2 Status columns from one repository to another in a single preview-first action.Available
Board Rules VisualiserVisualise supported board states and transitions for GitHub Project v2 boards. Full GitHub automation-rule retrieval remains a later slice.Partially Available
Triage UIKeyboard-friendly interface for triaging incoming issues quickly.Available
Actions TemplatesBrowse, customise, and apply built-in GitHub Actions workflow templates across repositories. Custom template repositories are deferred past v1.1.Partially Available
PlanningDaily Focus, backlog review, iteration planning, and repository participation for your project board.Available

Tech Stack

  • .NET SDK 10.0 or later.
  • Git (any recent version).
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.

Getting Started

Prerequisites

Ensure you have the following installed:

  • .NET SDK 10.0 or later.
  • Git.
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.
  • The Aspire CLI (aspire) for local orchestration.

Run Locally

SoloDevBoard uses Aspire for local orchestration and production deployment to Azure Container Apps. Two authentication modes are available: PAT-only local trusted mode (default, for solo local development and trusted personal self-hosting) and hosted sign-in (GitHub App, for shared or public deployments). See Getting Started — PAT-only local trusted mode for the mode comparison.

Quick start with Aspire (recommended):

# Clone the repository
git clone https://github.com/markheydon/solo-dev-board.git
cd solo-dev-board
# Restore dependencies
dotnet restore SoloDevBoard.slnx
# Configure GitHub auth — one secret for PAT-only local trusted mode
aspire secret set Parameters:gh-pat "<your-pat>"# Start with Aspire
aspire start --apphost src/SoloDevBoard.AppHost/SoloDevBoard.AppHost.csproj
# Get the allocated endpoint
aspire describe

Open the app resource URL shown by aspire describe in your browser.

Optional legacy path (without Aspire):

dotnet user-secrets set"GitHubAuth:PersonalAccessToken""<your-pat>" --project src/App/SoloDevBoard.App
dotnet run --project src/App/SoloDevBoard.App

For hosted sign-in mode (GitHub App), see docs/getting-started.md or src/SoloDevBoard.AppHost/README.md.

Aspire is used for both local orchestration and production deployment to Azure Container Apps. See docs/deployment.md for Azure deployment instructions, including the self-hoster PAT path for a personal instance on your own subscription.

Project Structure

solo-dev-board/
├── src/SoloDevBoard.AppHost/ # Aspire AppHost (local orchestration and Azure deployment)
├── src/SoloDevBoard.ServiceDefaults/ # Aspire service defaults (telemetry, health checks)
├── src/
│ ├── App/ # Blazor Server UI (presentation layer)
│ ├── Application/ # Use cases and service interfaces
│ ├── Domain/ # Domain entities and value objects
│ └── Infrastructure/ # GitHub API clients, external integrations
├── tests/
│ └── App.Tests/ # xUnit test projects
├── docs/ # Developer / operator documentation
│ ├── README.md # Index for repository-centric docs
│ ├── getting-started.md # Setup and configuration guide
│ ├── deployment.md # Azure Container Apps deployment guide
│ └── github-app.md # Hosted-sign-in GitHub App listing checklist
├── website/ # Public product site (Hugo / Hextra → GitHub Pages)
│ ├── hugo.yaml # Hugo site configuration
│ └── content/ # Landing, User Guide, and About pages
├── scripts/
│ ├── invoke-hugo-site.sh # Local Hugo build/serve via Docker/Podman (bash)
│ └── Invoke-HugoSite.ps1 # Windows PowerShell equivalent
├── CHANGELOG.md # Keep a Changelog (release notes source)
├── plan/
│ ├── SCOPE.md # Project scope and constraints
│ ├── DECISIONS.md # Active decision log (repo memory)
│ ├── IMPLEMENTATION_PLAN.md # Phased development plan
│ ├── BACKLOG.md # Roadmap index (Issues are source of truth)
│ ├── RELEASE_PLAN.md # Versioning and release process
│ ├── LABEL_STRATEGY.md # GitHub label taxonomy
│ ├── PROJECT_MANAGEMENT.md # Issues, milestones, and project board guide
│ ├── PROJECT_BOARD_DESIGN.md # Project board column and automation design
│ └── DOCS_STRATEGY.md # Documentation conventions
├── adr/
│ ├── README.md # Redirect to plan/DECISIONS.md
│ └── archive/ # Read-only legacy ADR files
├── .github/
│ ├── instructions/ # Path-scoped coding rules (canonical)
│ ├── prompts/ # Thin Copilot mirrors → .agents/workflows/
│ ├── ISSUE_TEMPLATE/ # Issue templates (feature, bug, chore)
│ ├── pull_request_template.md
│ └── workflows/
│ ├── ci.yml # .NET build, format, and test on every PR
│ ├── playwright.yml # Playwright E2E (PAT and hosted matrix)
│ ├── cd.yml # CD: Aspire deploy to Azure
│ ├── aspire-deploy-validate.yml # Validates AppHost deployment model on PR
│ ├── bash-validate.yml # ShellCheck on scripts/**/*.sh
│ ├── powershell-validate.yml # PSScriptAnalyzer on scripts/**/*.ps1
│ ├── github-actions-validate.yml # actionlint on workflow YAML
│ ├── github-scripts-validate.yml # ESLint and tests for .github/scripts
│ ├── hugo-validate.yml # Hugo end-user docs build validation on PR
│ └── hugo-deploy.yml # Hugo end-user docs deploy to GitHub Pages
├── .agents/
│ ├── contracts/ # Role boundary contracts (PM, delivery, verify, etc.)
│ ├── workflows/ # Canonical workflow entry points
│ └── skills/ # Shared implementation and workflow skills
├── .cursor/
│ ├── rules/ # Thin Cursor mirrors → .github/instructions/
│ └── commands/ # Thin Cursor mirrors → .agents/workflows/
└── AGENTS.md # Canonical AI collaborator standards

Contributing

SoloDevBoard welcomes contributions from all developers. Please read CONTRIBUTING.md and the Code of Conduct.

To contribute:

  1. Fork the repository and create a new branch for your changes.
  2. Review the project structure and existing documentation to understand the architecture and conventions.
  3. Ensure all code comments, string literals, and documentation use UK English spelling.
  4. Follow the coding conventions outlined in AGENTS.md.
  5. Use the issue templates in .github/ISSUE_TEMPLATE/ to report bugs or request features.
  6. When implementing a feature or fix, reference the relevant issue in your commit message.
  7. Add or update tests in the appropriate test project under tests/.
  8. Submit your changes via a pull request that follows plan/PULL_REQUEST_POLICY.md and .github/pull_request_template.md.
  9. The CI workflow will build and test your changes automatically.
  10. The project maintainer will review your PR and provide feedback or merge when ready.

For guidance on labels, see plan/LABEL_STRATEGY.md. For help with setup, see docs/getting-started.md. End-user documentation is published from website/ to GitHub Pages on v* release tags.


AI-Driven Development

SoloDevBoard is developed with AI agents as active collaborators. AGENTS.md is the canonical source for architecture, conventions, UK English requirements, and workflow gates. Role contracts in .agents/contracts/, workflow entry points in .agents/workflows/, skills in .agents/skills/, and the PM runbook in plan/PM_RUNBOOK.md provide structured workflows for planning, implementation, and review. For Cursor Cloud VM development, see plan/CURSOR_CLOUD.md.


Security

Please report vulnerabilities privately as described in SECURITY.md. Do not file public issues for security problems.

Licence

SoloDevBoard is released under the MIT Licence.

About

A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - markheydon/solo-dev-board: A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface. · GitHub
Skip to content

Repository files navigation

SoloDevBoard

CI

A single pane of glass for solo developers managing GitHub workloads across multiple repositories.

What Is SoloDevBoard?

SoloDevBoard is a .NET 10 Blazor Server application that consolidates your GitHub repository management into a single, unified interface. If you maintain multiple GitHub repositories as a solo developer, SoloDevBoard eliminates the context-switching between repository tabs, project boards, settings pages, and workflow runs.

FeatureDescriptionStatus
Audit DashboardConsolidated view of issues, open PRs, workflow health, and label consistency across selected repositories.Available
Label ManagerCreate, edit, synchronise, and enforce label taxonomies across multiple repositories from a single interface.Available
RepositoriesView, search, refresh, and filter repositories accessible to your GitHub account (including open-source topic filters). Add, remove, bulk, and row catalogue actions remain stubs.Partially Available
One-Click MigrationMigrate labels, milestones, and Projects v2 Status columns from one repository to another in a single preview-first action.Available
Board Rules VisualiserVisualise supported board states and transitions for GitHub Project v2 boards. Full GitHub automation-rule retrieval remains a later slice.Partially Available
Triage UIKeyboard-friendly interface for triaging incoming issues quickly.Available
Actions TemplatesBrowse, customise, and apply built-in GitHub Actions workflow templates across repositories. Custom template repositories are deferred past v1.1.Partially Available
PlanningDaily Focus, backlog review, iteration planning, and repository participation for your project board.Available

Tech Stack

  • .NET SDK 10.0 or later.
  • Git (any recent version).
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.

Getting Started

Prerequisites

Ensure you have the following installed:

  • .NET SDK 10.0 or later.
  • Git.
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.
  • The Aspire CLI (aspire) for local orchestration.

Run Locally

SoloDevBoard uses Aspire for local orchestration and production deployment to Azure Container Apps. Two authentication modes are available: PAT-only local trusted mode (default, for solo local development and trusted personal self-hosting) and hosted sign-in (GitHub App, for shared or public deployments). See Getting Started — PAT-only local trusted mode for the mode comparison.

Quick start with Aspire (recommended):

# Clone the repository
git clone https://github.com/markheydon/solo-dev-board.git
cd solo-dev-board
# Restore dependencies
dotnet restore SoloDevBoard.slnx
# Configure GitHub auth — one secret for PAT-only local trusted mode
aspire secret set Parameters:gh-pat "<your-pat>"# Start with Aspire
aspire start --apphost src/SoloDevBoard.AppHost/SoloDevBoard.AppHost.csproj
# Get the allocated endpoint
aspire describe

Open the app resource URL shown by aspire describe in your browser.

Optional legacy path (without Aspire):

dotnet user-secrets set"GitHubAuth:PersonalAccessToken""<your-pat>" --project src/App/SoloDevBoard.App
dotnet run --project src/App/SoloDevBoard.App

For hosted sign-in mode (GitHub App), see docs/getting-started.md or src/SoloDevBoard.AppHost/README.md.

Aspire is used for both local orchestration and production deployment to Azure Container Apps. See docs/deployment.md for Azure deployment instructions, including the self-hoster PAT path for a personal instance on your own subscription.

Project Structure

solo-dev-board/
├── src/SoloDevBoard.AppHost/ # Aspire AppHost (local orchestration and Azure deployment)
├── src/SoloDevBoard.ServiceDefaults/ # Aspire service defaults (telemetry, health checks)
├── src/
│ ├── App/ # Blazor Server UI (presentation layer)
│ ├── Application/ # Use cases and service interfaces
│ ├── Domain/ # Domain entities and value objects
│ └── Infrastructure/ # GitHub API clients, external integrations
├── tests/
│ └── App.Tests/ # xUnit test projects
├── docs/ # Developer / operator documentation
│ ├── README.md # Index for repository-centric docs
│ ├── getting-started.md # Setup and configuration guide
│ ├── deployment.md # Azure Container Apps deployment guide
│ └── github-app.md # Hosted-sign-in GitHub App listing checklist
├── website/ # Public product site (Hugo / Hextra → GitHub Pages)
│ ├── hugo.yaml # Hugo site configuration
│ └── content/ # Landing, User Guide, and About pages
├── scripts/
│ ├── invoke-hugo-site.sh # Local Hugo build/serve via Docker/Podman (bash)
│ └── Invoke-HugoSite.ps1 # Windows PowerShell equivalent
├── CHANGELOG.md # Keep a Changelog (release notes source)
├── plan/
│ ├── SCOPE.md # Project scope and constraints
│ ├── DECISIONS.md # Active decision log (repo memory)
│ ├── IMPLEMENTATION_PLAN.md # Phased development plan
│ ├── BACKLOG.md # Roadmap index (Issues are source of truth)
│ ├── RELEASE_PLAN.md # Versioning and release process
│ ├── LABEL_STRATEGY.md # GitHub label taxonomy
│ ├── PROJECT_MANAGEMENT.md # Issues, milestones, and project board guide
│ ├── PROJECT_BOARD_DESIGN.md # Project board column and automation design
│ └── DOCS_STRATEGY.md # Documentation conventions
├── adr/
│ ├── README.md # Redirect to plan/DECISIONS.md
│ └── archive/ # Read-only legacy ADR files
├── .github/
│ ├── instructions/ # Path-scoped coding rules (canonical)
│ ├── prompts/ # Thin Copilot mirrors → .agents/workflows/
│ ├── ISSUE_TEMPLATE/ # Issue templates (feature, bug, chore)
│ ├── pull_request_template.md
│ └── workflows/
│ ├── ci.yml # .NET build, format, and test on every PR
│ ├── playwright.yml # Playwright E2E (PAT and hosted matrix)
│ ├── cd.yml # CD: Aspire deploy to Azure
│ ├── aspire-deploy-validate.yml # Validates AppHost deployment model on PR
│ ├── bash-validate.yml # ShellCheck on scripts/**/*.sh
│ ├── powershell-validate.yml # PSScriptAnalyzer on scripts/**/*.ps1
│ ├── github-actions-validate.yml # actionlint on workflow YAML
│ ├── github-scripts-validate.yml # ESLint and tests for .github/scripts
│ ├── hugo-validate.yml # Hugo end-user docs build validation on PR
│ └── hugo-deploy.yml # Hugo end-user docs deploy to GitHub Pages
├── .agents/
│ ├── contracts/ # Role boundary contracts (PM, delivery, verify, etc.)
│ ├── workflows/ # Canonical workflow entry points
│ └── skills/ # Shared implementation and workflow skills
├── .cursor/
│ ├── rules/ # Thin Cursor mirrors → .github/instructions/
│ └── commands/ # Thin Cursor mirrors → .agents/workflows/
└── AGENTS.md # Canonical AI collaborator standards

Contributing

SoloDevBoard welcomes contributions from all developers. Please read CONTRIBUTING.md and the Code of Conduct.

To contribute:

  1. Fork the repository and create a new branch for your changes.
  2. Review the project structure and existing documentation to understand the architecture and conventions.
  3. Ensure all code comments, string literals, and documentation use UK English spelling.
  4. Follow the coding conventions outlined in AGENTS.md.
  5. Use the issue templates in .github/ISSUE_TEMPLATE/ to report bugs or request features.
  6. When implementing a feature or fix, reference the relevant issue in your commit message.
  7. Add or update tests in the appropriate test project under tests/.
  8. Submit your changes via a pull request that follows plan/PULL_REQUEST_POLICY.md and .github/pull_request_template.md.
  9. The CI workflow will build and test your changes automatically.
  10. The project maintainer will review your PR and provide feedback or merge when ready.

For guidance on labels, see plan/LABEL_STRATEGY.md. For help with setup, see docs/getting-started.md. End-user documentation is published from website/ to GitHub Pages on v* release tags.


AI-Driven Development

SoloDevBoard is developed with AI agents as active collaborators. AGENTS.md is the canonical source for architecture, conventions, UK English requirements, and workflow gates. Role contracts in .agents/contracts/, workflow entry points in .agents/workflows/, skills in .agents/skills/, and the PM runbook in plan/PM_RUNBOOK.md provide structured workflows for planning, implementation, and review. For Cursor Cloud VM development, see plan/CURSOR_CLOUD.md.


Security

Please report vulnerabilities privately as described in SECURITY.md. Do not file public issues for security problems.

Licence

SoloDevBoard is released under the MIT Licence.

About

A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - markheydon/solo-dev-board: A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface. · GitHub
Skip to content

Repository files navigation

SoloDevBoard

CI

A single pane of glass for solo developers managing GitHub workloads across multiple repositories.

What Is SoloDevBoard?

SoloDevBoard is a .NET 10 Blazor Server application that consolidates your GitHub repository management into a single, unified interface. If you maintain multiple GitHub repositories as a solo developer, SoloDevBoard eliminates the context-switching between repository tabs, project boards, settings pages, and workflow runs.

FeatureDescriptionStatus
Audit DashboardConsolidated view of issues, open PRs, workflow health, and label consistency across selected repositories.Available
Label ManagerCreate, edit, synchronise, and enforce label taxonomies across multiple repositories from a single interface.Available
RepositoriesView, search, refresh, and filter repositories accessible to your GitHub account (including open-source topic filters). Add, remove, bulk, and row catalogue actions remain stubs.Partially Available
One-Click MigrationMigrate labels, milestones, and Projects v2 Status columns from one repository to another in a single preview-first action.Available
Board Rules VisualiserVisualise supported board states and transitions for GitHub Project v2 boards. Full GitHub automation-rule retrieval remains a later slice.Partially Available
Triage UIKeyboard-friendly interface for triaging incoming issues quickly.Available
Actions TemplatesBrowse, customise, and apply built-in GitHub Actions workflow templates across repositories. Custom template repositories are deferred past v1.1.Partially Available
PlanningDaily Focus, backlog review, iteration planning, and repository participation for your project board.Available

Tech Stack

  • .NET SDK 10.0 or later.
  • Git (any recent version).
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.

Getting Started

Prerequisites

Ensure you have the following installed:

  • .NET SDK 10.0 or later.
  • Git.
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.
  • The Aspire CLI (aspire) for local orchestration.

Run Locally

SoloDevBoard uses Aspire for local orchestration and production deployment to Azure Container Apps. Two authentication modes are available: PAT-only local trusted mode (default, for solo local development and trusted personal self-hosting) and hosted sign-in (GitHub App, for shared or public deployments). See Getting Started — PAT-only local trusted mode for the mode comparison.

Quick start with Aspire (recommended):

# Clone the repository
git clone https://github.com/markheydon/solo-dev-board.git
cd solo-dev-board
# Restore dependencies
dotnet restore SoloDevBoard.slnx
# Configure GitHub auth — one secret for PAT-only local trusted mode
aspire secret set Parameters:gh-pat "<your-pat>"# Start with Aspire
aspire start --apphost src/SoloDevBoard.AppHost/SoloDevBoard.AppHost.csproj
# Get the allocated endpoint
aspire describe

Open the app resource URL shown by aspire describe in your browser.

Optional legacy path (without Aspire):

dotnet user-secrets set"GitHubAuth:PersonalAccessToken""<your-pat>" --project src/App/SoloDevBoard.App
dotnet run --project src/App/SoloDevBoard.App

For hosted sign-in mode (GitHub App), see docs/getting-started.md or src/SoloDevBoard.AppHost/README.md.

Aspire is used for both local orchestration and production deployment to Azure Container Apps. See docs/deployment.md for Azure deployment instructions, including the self-hoster PAT path for a personal instance on your own subscription.

Project Structure

solo-dev-board/
├── src/SoloDevBoard.AppHost/ # Aspire AppHost (local orchestration and Azure deployment)
├── src/SoloDevBoard.ServiceDefaults/ # Aspire service defaults (telemetry, health checks)
├── src/
│ ├── App/ # Blazor Server UI (presentation layer)
│ ├── Application/ # Use cases and service interfaces
│ ├── Domain/ # Domain entities and value objects
│ └── Infrastructure/ # GitHub API clients, external integrations
├── tests/
│ └── App.Tests/ # xUnit test projects
├── docs/ # Developer / operator documentation
│ ├── README.md # Index for repository-centric docs
│ ├── getting-started.md # Setup and configuration guide
│ ├── deployment.md # Azure Container Apps deployment guide
│ └── github-app.md # Hosted-sign-in GitHub App listing checklist
├── website/ # Public product site (Hugo / Hextra → GitHub Pages)
│ ├── hugo.yaml # Hugo site configuration
│ └── content/ # Landing, User Guide, and About pages
├── scripts/
│ ├── invoke-hugo-site.sh # Local Hugo build/serve via Docker/Podman (bash)
│ └── Invoke-HugoSite.ps1 # Windows PowerShell equivalent
├── CHANGELOG.md # Keep a Changelog (release notes source)
├── plan/
│ ├── SCOPE.md # Project scope and constraints
│ ├── DECISIONS.md # Active decision log (repo memory)
│ ├── IMPLEMENTATION_PLAN.md # Phased development plan
│ ├── BACKLOG.md # Roadmap index (Issues are source of truth)
│ ├── RELEASE_PLAN.md # Versioning and release process
│ ├── LABEL_STRATEGY.md # GitHub label taxonomy
│ ├── PROJECT_MANAGEMENT.md # Issues, milestones, and project board guide
│ ├── PROJECT_BOARD_DESIGN.md # Project board column and automation design
│ └── DOCS_STRATEGY.md # Documentation conventions
├── adr/
│ ├── README.md # Redirect to plan/DECISIONS.md
│ └── archive/ # Read-only legacy ADR files
├── .github/
│ ├── instructions/ # Path-scoped coding rules (canonical)
│ ├── prompts/ # Thin Copilot mirrors → .agents/workflows/
│ ├── ISSUE_TEMPLATE/ # Issue templates (feature, bug, chore)
│ ├── pull_request_template.md
│ └── workflows/
│ ├── ci.yml # .NET build, format, and test on every PR
│ ├── playwright.yml # Playwright E2E (PAT and hosted matrix)
│ ├── cd.yml # CD: Aspire deploy to Azure
│ ├── aspire-deploy-validate.yml # Validates AppHost deployment model on PR
│ ├── bash-validate.yml # ShellCheck on scripts/**/*.sh
│ ├── powershell-validate.yml # PSScriptAnalyzer on scripts/**/*.ps1
│ ├── github-actions-validate.yml # actionlint on workflow YAML
│ ├── github-scripts-validate.yml # ESLint and tests for .github/scripts
│ ├── hugo-validate.yml # Hugo end-user docs build validation on PR
│ └── hugo-deploy.yml # Hugo end-user docs deploy to GitHub Pages
├── .agents/
│ ├── contracts/ # Role boundary contracts (PM, delivery, verify, etc.)
│ ├── workflows/ # Canonical workflow entry points
│ └── skills/ # Shared implementation and workflow skills
├── .cursor/
│ ├── rules/ # Thin Cursor mirrors → .github/instructions/
│ └── commands/ # Thin Cursor mirrors → .agents/workflows/
└── AGENTS.md # Canonical AI collaborator standards

Contributing

SoloDevBoard welcomes contributions from all developers. Please read CONTRIBUTING.md and the Code of Conduct.

To contribute:

  1. Fork the repository and create a new branch for your changes.
  2. Review the project structure and existing documentation to understand the architecture and conventions.
  3. Ensure all code comments, string literals, and documentation use UK English spelling.
  4. Follow the coding conventions outlined in AGENTS.md.
  5. Use the issue templates in .github/ISSUE_TEMPLATE/ to report bugs or request features.
  6. When implementing a feature or fix, reference the relevant issue in your commit message.
  7. Add or update tests in the appropriate test project under tests/.
  8. Submit your changes via a pull request that follows plan/PULL_REQUEST_POLICY.md and .github/pull_request_template.md.
  9. The CI workflow will build and test your changes automatically.
  10. The project maintainer will review your PR and provide feedback or merge when ready.

For guidance on labels, see plan/LABEL_STRATEGY.md. For help with setup, see docs/getting-started.md. End-user documentation is published from website/ to GitHub Pages on v* release tags.


AI-Driven Development

SoloDevBoard is developed with AI agents as active collaborators. AGENTS.md is the canonical source for architecture, conventions, UK English requirements, and workflow gates. Role contracts in .agents/contracts/, workflow entry points in .agents/workflows/, skills in .agents/skills/, and the PM runbook in plan/PM_RUNBOOK.md provide structured workflows for planning, implementation, and review. For Cursor Cloud VM development, see plan/CURSOR_CLOUD.md.


Security

Please report vulnerabilities privately as described in SECURITY.md. Do not file public issues for security problems.

Licence

SoloDevBoard is released under the MIT Licence.

About

A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - markheydon/solo-dev-board: A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface. · GitHub
Skip to content

Repository files navigation

SoloDevBoard

CI

A single pane of glass for solo developers managing GitHub workloads across multiple repositories.

What Is SoloDevBoard?

SoloDevBoard is a .NET 10 Blazor Server application that consolidates your GitHub repository management into a single, unified interface. If you maintain multiple GitHub repositories as a solo developer, SoloDevBoard eliminates the context-switching between repository tabs, project boards, settings pages, and workflow runs.

FeatureDescriptionStatus
Audit DashboardConsolidated view of issues, open PRs, workflow health, and label consistency across selected repositories.Available
Label ManagerCreate, edit, synchronise, and enforce label taxonomies across multiple repositories from a single interface.Available
RepositoriesView, search, refresh, and filter repositories accessible to your GitHub account (including open-source topic filters). Add, remove, bulk, and row catalogue actions remain stubs.Partially Available
One-Click MigrationMigrate labels, milestones, and Projects v2 Status columns from one repository to another in a single preview-first action.Available
Board Rules VisualiserVisualise supported board states and transitions for GitHub Project v2 boards. Full GitHub automation-rule retrieval remains a later slice.Partially Available
Triage UIKeyboard-friendly interface for triaging incoming issues quickly.Available
Actions TemplatesBrowse, customise, and apply built-in GitHub Actions workflow templates across repositories. Custom template repositories are deferred past v1.1.Partially Available
PlanningDaily Focus, backlog review, iteration planning, and repository participation for your project board.Available

Tech Stack

  • .NET SDK 10.0 or later.
  • Git (any recent version).
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.

Getting Started

Prerequisites

Ensure you have the following installed:

  • .NET SDK 10.0 or later.
  • Git.
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.
  • The Aspire CLI (aspire) for local orchestration.

Run Locally

SoloDevBoard uses Aspire for local orchestration and production deployment to Azure Container Apps. Two authentication modes are available: PAT-only local trusted mode (default, for solo local development and trusted personal self-hosting) and hosted sign-in (GitHub App, for shared or public deployments). See Getting Started — PAT-only local trusted mode for the mode comparison.

Quick start with Aspire (recommended):

# Clone the repository
git clone https://github.com/markheydon/solo-dev-board.git
cd solo-dev-board
# Restore dependencies
dotnet restore SoloDevBoard.slnx
# Configure GitHub auth — one secret for PAT-only local trusted mode
aspire secret set Parameters:gh-pat "<your-pat>"# Start with Aspire
aspire start --apphost src/SoloDevBoard.AppHost/SoloDevBoard.AppHost.csproj
# Get the allocated endpoint
aspire describe

Open the app resource URL shown by aspire describe in your browser.

Optional legacy path (without Aspire):

dotnet user-secrets set"GitHubAuth:PersonalAccessToken""<your-pat>" --project src/App/SoloDevBoard.App
dotnet run --project src/App/SoloDevBoard.App

For hosted sign-in mode (GitHub App), see docs/getting-started.md or src/SoloDevBoard.AppHost/README.md.

Aspire is used for both local orchestration and production deployment to Azure Container Apps. See docs/deployment.md for Azure deployment instructions, including the self-hoster PAT path for a personal instance on your own subscription.

Project Structure

solo-dev-board/
├── src/SoloDevBoard.AppHost/ # Aspire AppHost (local orchestration and Azure deployment)
├── src/SoloDevBoard.ServiceDefaults/ # Aspire service defaults (telemetry, health checks)
├── src/
│ ├── App/ # Blazor Server UI (presentation layer)
│ ├── Application/ # Use cases and service interfaces
│ ├── Domain/ # Domain entities and value objects
│ └── Infrastructure/ # GitHub API clients, external integrations
├── tests/
│ └── App.Tests/ # xUnit test projects
├── docs/ # Developer / operator documentation
│ ├── README.md # Index for repository-centric docs
│ ├── getting-started.md # Setup and configuration guide
│ ├── deployment.md # Azure Container Apps deployment guide
│ └── github-app.md # Hosted-sign-in GitHub App listing checklist
├── website/ # Public product site (Hugo / Hextra → GitHub Pages)
│ ├── hugo.yaml # Hugo site configuration
│ └── content/ # Landing, User Guide, and About pages
├── scripts/
│ ├── invoke-hugo-site.sh # Local Hugo build/serve via Docker/Podman (bash)
│ └── Invoke-HugoSite.ps1 # Windows PowerShell equivalent
├── CHANGELOG.md # Keep a Changelog (release notes source)
├── plan/
│ ├── SCOPE.md # Project scope and constraints
│ ├── DECISIONS.md # Active decision log (repo memory)
│ ├── IMPLEMENTATION_PLAN.md # Phased development plan
│ ├── BACKLOG.md # Roadmap index (Issues are source of truth)
│ ├── RELEASE_PLAN.md # Versioning and release process
│ ├── LABEL_STRATEGY.md # GitHub label taxonomy
│ ├── PROJECT_MANAGEMENT.md # Issues, milestones, and project board guide
│ ├── PROJECT_BOARD_DESIGN.md # Project board column and automation design
│ └── DOCS_STRATEGY.md # Documentation conventions
├── adr/
│ ├── README.md # Redirect to plan/DECISIONS.md
│ └── archive/ # Read-only legacy ADR files
├── .github/
│ ├── instructions/ # Path-scoped coding rules (canonical)
│ ├── prompts/ # Thin Copilot mirrors → .agents/workflows/
│ ├── ISSUE_TEMPLATE/ # Issue templates (feature, bug, chore)
│ ├── pull_request_template.md
│ └── workflows/
│ ├── ci.yml # .NET build, format, and test on every PR
│ ├── playwright.yml # Playwright E2E (PAT and hosted matrix)
│ ├── cd.yml # CD: Aspire deploy to Azure
│ ├── aspire-deploy-validate.yml # Validates AppHost deployment model on PR
│ ├── bash-validate.yml # ShellCheck on scripts/**/*.sh
│ ├── powershell-validate.yml # PSScriptAnalyzer on scripts/**/*.ps1
│ ├── github-actions-validate.yml # actionlint on workflow YAML
│ ├── github-scripts-validate.yml # ESLint and tests for .github/scripts
│ ├── hugo-validate.yml # Hugo end-user docs build validation on PR
│ └── hugo-deploy.yml # Hugo end-user docs deploy to GitHub Pages
├── .agents/
│ ├── contracts/ # Role boundary contracts (PM, delivery, verify, etc.)
│ ├── workflows/ # Canonical workflow entry points
│ └── skills/ # Shared implementation and workflow skills
├── .cursor/
│ ├── rules/ # Thin Cursor mirrors → .github/instructions/
│ └── commands/ # Thin Cursor mirrors → .agents/workflows/
└── AGENTS.md # Canonical AI collaborator standards

Contributing

SoloDevBoard welcomes contributions from all developers. Please read CONTRIBUTING.md and the Code of Conduct.

To contribute:

  1. Fork the repository and create a new branch for your changes.
  2. Review the project structure and existing documentation to understand the architecture and conventions.
  3. Ensure all code comments, string literals, and documentation use UK English spelling.
  4. Follow the coding conventions outlined in AGENTS.md.
  5. Use the issue templates in .github/ISSUE_TEMPLATE/ to report bugs or request features.
  6. When implementing a feature or fix, reference the relevant issue in your commit message.
  7. Add or update tests in the appropriate test project under tests/.
  8. Submit your changes via a pull request that follows plan/PULL_REQUEST_POLICY.md and .github/pull_request_template.md.
  9. The CI workflow will build and test your changes automatically.
  10. The project maintainer will review your PR and provide feedback or merge when ready.

For guidance on labels, see plan/LABEL_STRATEGY.md. For help with setup, see docs/getting-started.md. End-user documentation is published from website/ to GitHub Pages on v* release tags.


AI-Driven Development

SoloDevBoard is developed with AI agents as active collaborators. AGENTS.md is the canonical source for architecture, conventions, UK English requirements, and workflow gates. Role contracts in .agents/contracts/, workflow entry points in .agents/workflows/, skills in .agents/skills/, and the PM runbook in plan/PM_RUNBOOK.md provide structured workflows for planning, implementation, and review. For Cursor Cloud VM development, see plan/CURSOR_CLOUD.md.


Security

Please report vulnerabilities privately as described in SECURITY.md. Do not file public issues for security problems.

Licence

SoloDevBoard is released under the MIT Licence.

About

A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - markheydon/solo-dev-board: A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface. · GitHub
Skip to content

Repository files navigation

SoloDevBoard

CI

A single pane of glass for solo developers managing GitHub workloads across multiple repositories.

What Is SoloDevBoard?

SoloDevBoard is a .NET 10 Blazor Server application that consolidates your GitHub repository management into a single, unified interface. If you maintain multiple GitHub repositories as a solo developer, SoloDevBoard eliminates the context-switching between repository tabs, project boards, settings pages, and workflow runs.

FeatureDescriptionStatus
Audit DashboardConsolidated view of issues, open PRs, workflow health, and label consistency across selected repositories.Available
Label ManagerCreate, edit, synchronise, and enforce label taxonomies across multiple repositories from a single interface.Available
RepositoriesView, search, refresh, and filter repositories accessible to your GitHub account (including open-source topic filters). Add, remove, bulk, and row catalogue actions remain stubs.Partially Available
One-Click MigrationMigrate labels, milestones, and Projects v2 Status columns from one repository to another in a single preview-first action.Available
Board Rules VisualiserVisualise supported board states and transitions for GitHub Project v2 boards. Full GitHub automation-rule retrieval remains a later slice.Partially Available
Triage UIKeyboard-friendly interface for triaging incoming issues quickly.Available
Actions TemplatesBrowse, customise, and apply built-in GitHub Actions workflow templates across repositories. Custom template repositories are deferred past v1.1.Partially Available
PlanningDaily Focus, backlog review, iteration planning, and repository participation for your project board.Available

Tech Stack

  • .NET SDK 10.0 or later.
  • Git (any recent version).
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.

Getting Started

Prerequisites

Ensure you have the following installed:

  • .NET SDK 10.0 or later.
  • Git.
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.
  • The Aspire CLI (aspire) for local orchestration.

Run Locally

SoloDevBoard uses Aspire for local orchestration and production deployment to Azure Container Apps. Two authentication modes are available: PAT-only local trusted mode (default, for solo local development and trusted personal self-hosting) and hosted sign-in (GitHub App, for shared or public deployments). See Getting Started — PAT-only local trusted mode for the mode comparison.

Quick start with Aspire (recommended):

# Clone the repository
git clone https://github.com/markheydon/solo-dev-board.git
cd solo-dev-board
# Restore dependencies
dotnet restore SoloDevBoard.slnx
# Configure GitHub auth — one secret for PAT-only local trusted mode
aspire secret set Parameters:gh-pat "<your-pat>"# Start with Aspire
aspire start --apphost src/SoloDevBoard.AppHost/SoloDevBoard.AppHost.csproj
# Get the allocated endpoint
aspire describe

Open the app resource URL shown by aspire describe in your browser.

Optional legacy path (without Aspire):

dotnet user-secrets set"GitHubAuth:PersonalAccessToken""<your-pat>" --project src/App/SoloDevBoard.App
dotnet run --project src/App/SoloDevBoard.App

For hosted sign-in mode (GitHub App), see docs/getting-started.md or src/SoloDevBoard.AppHost/README.md.

Aspire is used for both local orchestration and production deployment to Azure Container Apps. See docs/deployment.md for Azure deployment instructions, including the self-hoster PAT path for a personal instance on your own subscription.

Project Structure

solo-dev-board/
├── src/SoloDevBoard.AppHost/ # Aspire AppHost (local orchestration and Azure deployment)
├── src/SoloDevBoard.ServiceDefaults/ # Aspire service defaults (telemetry, health checks)
├── src/
│ ├── App/ # Blazor Server UI (presentation layer)
│ ├── Application/ # Use cases and service interfaces
│ ├── Domain/ # Domain entities and value objects
│ └── Infrastructure/ # GitHub API clients, external integrations
├── tests/
│ └── App.Tests/ # xUnit test projects
├── docs/ # Developer / operator documentation
│ ├── README.md # Index for repository-centric docs
│ ├── getting-started.md # Setup and configuration guide
│ ├── deployment.md # Azure Container Apps deployment guide
│ └── github-app.md # Hosted-sign-in GitHub App listing checklist
├── website/ # Public product site (Hugo / Hextra → GitHub Pages)
│ ├── hugo.yaml # Hugo site configuration
│ └── content/ # Landing, User Guide, and About pages
├── scripts/
│ ├── invoke-hugo-site.sh # Local Hugo build/serve via Docker/Podman (bash)
│ └── Invoke-HugoSite.ps1 # Windows PowerShell equivalent
├── CHANGELOG.md # Keep a Changelog (release notes source)
├── plan/
│ ├── SCOPE.md # Project scope and constraints
│ ├── DECISIONS.md # Active decision log (repo memory)
│ ├── IMPLEMENTATION_PLAN.md # Phased development plan
│ ├── BACKLOG.md # Roadmap index (Issues are source of truth)
│ ├── RELEASE_PLAN.md # Versioning and release process
│ ├── LABEL_STRATEGY.md # GitHub label taxonomy
│ ├── PROJECT_MANAGEMENT.md # Issues, milestones, and project board guide
│ ├── PROJECT_BOARD_DESIGN.md # Project board column and automation design
│ └── DOCS_STRATEGY.md # Documentation conventions
├── adr/
│ ├── README.md # Redirect to plan/DECISIONS.md
│ └── archive/ # Read-only legacy ADR files
├── .github/
│ ├── instructions/ # Path-scoped coding rules (canonical)
│ ├── prompts/ # Thin Copilot mirrors → .agents/workflows/
│ ├── ISSUE_TEMPLATE/ # Issue templates (feature, bug, chore)
│ ├── pull_request_template.md
│ └── workflows/
│ ├── ci.yml # .NET build, format, and test on every PR
│ ├── playwright.yml # Playwright E2E (PAT and hosted matrix)
│ ├── cd.yml # CD: Aspire deploy to Azure
│ ├── aspire-deploy-validate.yml # Validates AppHost deployment model on PR
│ ├── bash-validate.yml # ShellCheck on scripts/**/*.sh
│ ├── powershell-validate.yml # PSScriptAnalyzer on scripts/**/*.ps1
│ ├── github-actions-validate.yml # actionlint on workflow YAML
│ ├── github-scripts-validate.yml # ESLint and tests for .github/scripts
│ ├── hugo-validate.yml # Hugo end-user docs build validation on PR
│ └── hugo-deploy.yml # Hugo end-user docs deploy to GitHub Pages
├── .agents/
│ ├── contracts/ # Role boundary contracts (PM, delivery, verify, etc.)
│ ├── workflows/ # Canonical workflow entry points
│ └── skills/ # Shared implementation and workflow skills
├── .cursor/
│ ├── rules/ # Thin Cursor mirrors → .github/instructions/
│ └── commands/ # Thin Cursor mirrors → .agents/workflows/
└── AGENTS.md # Canonical AI collaborator standards

Contributing

SoloDevBoard welcomes contributions from all developers. Please read CONTRIBUTING.md and the Code of Conduct.

To contribute:

  1. Fork the repository and create a new branch for your changes.
  2. Review the project structure and existing documentation to understand the architecture and conventions.
  3. Ensure all code comments, string literals, and documentation use UK English spelling.
  4. Follow the coding conventions outlined in AGENTS.md.
  5. Use the issue templates in .github/ISSUE_TEMPLATE/ to report bugs or request features.
  6. When implementing a feature or fix, reference the relevant issue in your commit message.
  7. Add or update tests in the appropriate test project under tests/.
  8. Submit your changes via a pull request that follows plan/PULL_REQUEST_POLICY.md and .github/pull_request_template.md.
  9. The CI workflow will build and test your changes automatically.
  10. The project maintainer will review your PR and provide feedback or merge when ready.

For guidance on labels, see plan/LABEL_STRATEGY.md. For help with setup, see docs/getting-started.md. End-user documentation is published from website/ to GitHub Pages on v* release tags.


AI-Driven Development

SoloDevBoard is developed with AI agents as active collaborators. AGENTS.md is the canonical source for architecture, conventions, UK English requirements, and workflow gates. Role contracts in .agents/contracts/, workflow entry points in .agents/workflows/, skills in .agents/skills/, and the PM runbook in plan/PM_RUNBOOK.md provide structured workflows for planning, implementation, and review. For Cursor Cloud VM development, see plan/CURSOR_CLOUD.md.


Security

Please report vulnerabilities privately as described in SECURITY.md. Do not file public issues for security problems.

Licence

SoloDevBoard is released under the MIT Licence.

About

A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - markheydon/solo-dev-board: A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface. · GitHub
Skip to content

Repository files navigation

SoloDevBoard

CI

A single pane of glass for solo developers managing GitHub workloads across multiple repositories.

What Is SoloDevBoard?

SoloDevBoard is a .NET 10 Blazor Server application that consolidates your GitHub repository management into a single, unified interface. If you maintain multiple GitHub repositories as a solo developer, SoloDevBoard eliminates the context-switching between repository tabs, project boards, settings pages, and workflow runs.

FeatureDescriptionStatus
Audit DashboardConsolidated view of issues, open PRs, workflow health, and label consistency across selected repositories.Available
Label ManagerCreate, edit, synchronise, and enforce label taxonomies across multiple repositories from a single interface.Available
RepositoriesView, search, refresh, and filter repositories accessible to your GitHub account (including open-source topic filters). Add, remove, bulk, and row catalogue actions remain stubs.Partially Available
One-Click MigrationMigrate labels, milestones, and Projects v2 Status columns from one repository to another in a single preview-first action.Available
Board Rules VisualiserVisualise supported board states and transitions for GitHub Project v2 boards. Full GitHub automation-rule retrieval remains a later slice.Partially Available
Triage UIKeyboard-friendly interface for triaging incoming issues quickly.Available
Actions TemplatesBrowse, customise, and apply built-in GitHub Actions workflow templates across repositories. Custom template repositories are deferred past v1.1.Partially Available
PlanningDaily Focus, backlog review, iteration planning, and repository participation for your project board.Available

Tech Stack

  • .NET SDK 10.0 or later.
  • Git (any recent version).
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.

Getting Started

Prerequisites

Ensure you have the following installed:

  • .NET SDK 10.0 or later.
  • Git.
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.
  • The Aspire CLI (aspire) for local orchestration.

Run Locally

SoloDevBoard uses Aspire for local orchestration and production deployment to Azure Container Apps. Two authentication modes are available: PAT-only local trusted mode (default, for solo local development and trusted personal self-hosting) and hosted sign-in (GitHub App, for shared or public deployments). See Getting Started — PAT-only local trusted mode for the mode comparison.

Quick start with Aspire (recommended):

# Clone the repository
git clone https://github.com/markheydon/solo-dev-board.git
cd solo-dev-board
# Restore dependencies
dotnet restore SoloDevBoard.slnx
# Configure GitHub auth — one secret for PAT-only local trusted mode
aspire secret set Parameters:gh-pat "<your-pat>"# Start with Aspire
aspire start --apphost src/SoloDevBoard.AppHost/SoloDevBoard.AppHost.csproj
# Get the allocated endpoint
aspire describe

Open the app resource URL shown by aspire describe in your browser.

Optional legacy path (without Aspire):

dotnet user-secrets set"GitHubAuth:PersonalAccessToken""<your-pat>" --project src/App/SoloDevBoard.App
dotnet run --project src/App/SoloDevBoard.App

For hosted sign-in mode (GitHub App), see docs/getting-started.md or src/SoloDevBoard.AppHost/README.md.

Aspire is used for both local orchestration and production deployment to Azure Container Apps. See docs/deployment.md for Azure deployment instructions, including the self-hoster PAT path for a personal instance on your own subscription.

Project Structure

solo-dev-board/
├── src/SoloDevBoard.AppHost/ # Aspire AppHost (local orchestration and Azure deployment)
├── src/SoloDevBoard.ServiceDefaults/ # Aspire service defaults (telemetry, health checks)
├── src/
│ ├── App/ # Blazor Server UI (presentation layer)
│ ├── Application/ # Use cases and service interfaces
│ ├── Domain/ # Domain entities and value objects
│ └── Infrastructure/ # GitHub API clients, external integrations
├── tests/
│ └── App.Tests/ # xUnit test projects
├── docs/ # Developer / operator documentation
│ ├── README.md # Index for repository-centric docs
│ ├── getting-started.md # Setup and configuration guide
│ ├── deployment.md # Azure Container Apps deployment guide
│ └── github-app.md # Hosted-sign-in GitHub App listing checklist
├── website/ # Public product site (Hugo / Hextra → GitHub Pages)
│ ├── hugo.yaml # Hugo site configuration
│ └── content/ # Landing, User Guide, and About pages
├── scripts/
│ ├── invoke-hugo-site.sh # Local Hugo build/serve via Docker/Podman (bash)
│ └── Invoke-HugoSite.ps1 # Windows PowerShell equivalent
├── CHANGELOG.md # Keep a Changelog (release notes source)
├── plan/
│ ├── SCOPE.md # Project scope and constraints
│ ├── DECISIONS.md # Active decision log (repo memory)
│ ├── IMPLEMENTATION_PLAN.md # Phased development plan
│ ├── BACKLOG.md # Roadmap index (Issues are source of truth)
│ ├── RELEASE_PLAN.md # Versioning and release process
│ ├── LABEL_STRATEGY.md # GitHub label taxonomy
│ ├── PROJECT_MANAGEMENT.md # Issues, milestones, and project board guide
│ ├── PROJECT_BOARD_DESIGN.md # Project board column and automation design
│ └── DOCS_STRATEGY.md # Documentation conventions
├── adr/
│ ├── README.md # Redirect to plan/DECISIONS.md
│ └── archive/ # Read-only legacy ADR files
├── .github/
│ ├── instructions/ # Path-scoped coding rules (canonical)
│ ├── prompts/ # Thin Copilot mirrors → .agents/workflows/
│ ├── ISSUE_TEMPLATE/ # Issue templates (feature, bug, chore)
│ ├── pull_request_template.md
│ └── workflows/
│ ├── ci.yml # .NET build, format, and test on every PR
│ ├── playwright.yml # Playwright E2E (PAT and hosted matrix)
│ ├── cd.yml # CD: Aspire deploy to Azure
│ ├── aspire-deploy-validate.yml # Validates AppHost deployment model on PR
│ ├── bash-validate.yml # ShellCheck on scripts/**/*.sh
│ ├── powershell-validate.yml # PSScriptAnalyzer on scripts/**/*.ps1
│ ├── github-actions-validate.yml # actionlint on workflow YAML
│ ├── github-scripts-validate.yml # ESLint and tests for .github/scripts
│ ├── hugo-validate.yml # Hugo end-user docs build validation on PR
│ └── hugo-deploy.yml # Hugo end-user docs deploy to GitHub Pages
├── .agents/
│ ├── contracts/ # Role boundary contracts (PM, delivery, verify, etc.)
│ ├── workflows/ # Canonical workflow entry points
│ └── skills/ # Shared implementation and workflow skills
├── .cursor/
│ ├── rules/ # Thin Cursor mirrors → .github/instructions/
│ └── commands/ # Thin Cursor mirrors → .agents/workflows/
└── AGENTS.md # Canonical AI collaborator standards

Contributing

SoloDevBoard welcomes contributions from all developers. Please read CONTRIBUTING.md and the Code of Conduct.

To contribute:

  1. Fork the repository and create a new branch for your changes.
  2. Review the project structure and existing documentation to understand the architecture and conventions.
  3. Ensure all code comments, string literals, and documentation use UK English spelling.
  4. Follow the coding conventions outlined in AGENTS.md.
  5. Use the issue templates in .github/ISSUE_TEMPLATE/ to report bugs or request features.
  6. When implementing a feature or fix, reference the relevant issue in your commit message.
  7. Add or update tests in the appropriate test project under tests/.
  8. Submit your changes via a pull request that follows plan/PULL_REQUEST_POLICY.md and .github/pull_request_template.md.
  9. The CI workflow will build and test your changes automatically.
  10. The project maintainer will review your PR and provide feedback or merge when ready.

For guidance on labels, see plan/LABEL_STRATEGY.md. For help with setup, see docs/getting-started.md. End-user documentation is published from website/ to GitHub Pages on v* release tags.


AI-Driven Development

SoloDevBoard is developed with AI agents as active collaborators. AGENTS.md is the canonical source for architecture, conventions, UK English requirements, and workflow gates. Role contracts in .agents/contracts/, workflow entry points in .agents/workflows/, skills in .agents/skills/, and the PM runbook in plan/PM_RUNBOOK.md provide structured workflows for planning, implementation, and review. For Cursor Cloud VM development, see plan/CURSOR_CLOUD.md.


Security

Please report vulnerabilities privately as described in SECURITY.md. Do not file public issues for security problems.

Licence

SoloDevBoard is released under the MIT Licence.

About

A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - markheydon/solo-dev-board: A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface. · GitHub
Skip to content

Repository files navigation

SoloDevBoard

CI

A single pane of glass for solo developers managing GitHub workloads across multiple repositories.

What Is SoloDevBoard?

SoloDevBoard is a .NET 10 Blazor Server application that consolidates your GitHub repository management into a single, unified interface. If you maintain multiple GitHub repositories as a solo developer, SoloDevBoard eliminates the context-switching between repository tabs, project boards, settings pages, and workflow runs.

FeatureDescriptionStatus
Audit DashboardConsolidated view of issues, open PRs, workflow health, and label consistency across selected repositories.Available
Label ManagerCreate, edit, synchronise, and enforce label taxonomies across multiple repositories from a single interface.Available
RepositoriesView, search, refresh, and filter repositories accessible to your GitHub account (including open-source topic filters). Add, remove, bulk, and row catalogue actions remain stubs.Partially Available
One-Click MigrationMigrate labels, milestones, and Projects v2 Status columns from one repository to another in a single preview-first action.Available
Board Rules VisualiserVisualise supported board states and transitions for GitHub Project v2 boards. Full GitHub automation-rule retrieval remains a later slice.Partially Available
Triage UIKeyboard-friendly interface for triaging incoming issues quickly.Available
Actions TemplatesBrowse, customise, and apply built-in GitHub Actions workflow templates across repositories. Custom template repositories are deferred past v1.1.Partially Available
PlanningDaily Focus, backlog review, iteration planning, and repository participation for your project board.Available

Tech Stack

  • .NET SDK 10.0 or later.
  • Git (any recent version).
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.

Getting Started

Prerequisites

Ensure you have the following installed:

  • .NET SDK 10.0 or later.
  • Git.
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.
  • The Aspire CLI (aspire) for local orchestration.

Run Locally

SoloDevBoard uses Aspire for local orchestration and production deployment to Azure Container Apps. Two authentication modes are available: PAT-only local trusted mode (default, for solo local development and trusted personal self-hosting) and hosted sign-in (GitHub App, for shared or public deployments). See Getting Started — PAT-only local trusted mode for the mode comparison.

Quick start with Aspire (recommended):

# Clone the repository
git clone https://github.com/markheydon/solo-dev-board.git
cd solo-dev-board
# Restore dependencies
dotnet restore SoloDevBoard.slnx
# Configure GitHub auth — one secret for PAT-only local trusted mode
aspire secret set Parameters:gh-pat "<your-pat>"# Start with Aspire
aspire start --apphost src/SoloDevBoard.AppHost/SoloDevBoard.AppHost.csproj
# Get the allocated endpoint
aspire describe

Open the app resource URL shown by aspire describe in your browser.

Optional legacy path (without Aspire):

dotnet user-secrets set"GitHubAuth:PersonalAccessToken""<your-pat>" --project src/App/SoloDevBoard.App
dotnet run --project src/App/SoloDevBoard.App

For hosted sign-in mode (GitHub App), see docs/getting-started.md or src/SoloDevBoard.AppHost/README.md.

Aspire is used for both local orchestration and production deployment to Azure Container Apps. See docs/deployment.md for Azure deployment instructions, including the self-hoster PAT path for a personal instance on your own subscription.

Project Structure

solo-dev-board/
├── src/SoloDevBoard.AppHost/ # Aspire AppHost (local orchestration and Azure deployment)
├── src/SoloDevBoard.ServiceDefaults/ # Aspire service defaults (telemetry, health checks)
├── src/
│ ├── App/ # Blazor Server UI (presentation layer)
│ ├── Application/ # Use cases and service interfaces
│ ├── Domain/ # Domain entities and value objects
│ └── Infrastructure/ # GitHub API clients, external integrations
├── tests/
│ └── App.Tests/ # xUnit test projects
├── docs/ # Developer / operator documentation
│ ├── README.md # Index for repository-centric docs
│ ├── getting-started.md # Setup and configuration guide
│ ├── deployment.md # Azure Container Apps deployment guide
│ └── github-app.md # Hosted-sign-in GitHub App listing checklist
├── website/ # Public product site (Hugo / Hextra → GitHub Pages)
│ ├── hugo.yaml # Hugo site configuration
│ └── content/ # Landing, User Guide, and About pages
├── scripts/
│ ├── invoke-hugo-site.sh # Local Hugo build/serve via Docker/Podman (bash)
│ └── Invoke-HugoSite.ps1 # Windows PowerShell equivalent
├── CHANGELOG.md # Keep a Changelog (release notes source)
├── plan/
│ ├── SCOPE.md # Project scope and constraints
│ ├── DECISIONS.md # Active decision log (repo memory)
│ ├── IMPLEMENTATION_PLAN.md # Phased development plan
│ ├── BACKLOG.md # Roadmap index (Issues are source of truth)
│ ├── RELEASE_PLAN.md # Versioning and release process
│ ├── LABEL_STRATEGY.md # GitHub label taxonomy
│ ├── PROJECT_MANAGEMENT.md # Issues, milestones, and project board guide
│ ├── PROJECT_BOARD_DESIGN.md # Project board column and automation design
│ └── DOCS_STRATEGY.md # Documentation conventions
├── adr/
│ ├── README.md # Redirect to plan/DECISIONS.md
│ └── archive/ # Read-only legacy ADR files
├── .github/
│ ├── instructions/ # Path-scoped coding rules (canonical)
│ ├── prompts/ # Thin Copilot mirrors → .agents/workflows/
│ ├── ISSUE_TEMPLATE/ # Issue templates (feature, bug, chore)
│ ├── pull_request_template.md
│ └── workflows/
│ ├── ci.yml # .NET build, format, and test on every PR
│ ├── playwright.yml # Playwright E2E (PAT and hosted matrix)
│ ├── cd.yml # CD: Aspire deploy to Azure
│ ├── aspire-deploy-validate.yml # Validates AppHost deployment model on PR
│ ├── bash-validate.yml # ShellCheck on scripts/**/*.sh
│ ├── powershell-validate.yml # PSScriptAnalyzer on scripts/**/*.ps1
│ ├── github-actions-validate.yml # actionlint on workflow YAML
│ ├── github-scripts-validate.yml # ESLint and tests for .github/scripts
│ ├── hugo-validate.yml # Hugo end-user docs build validation on PR
│ └── hugo-deploy.yml # Hugo end-user docs deploy to GitHub Pages
├── .agents/
│ ├── contracts/ # Role boundary contracts (PM, delivery, verify, etc.)
│ ├── workflows/ # Canonical workflow entry points
│ └── skills/ # Shared implementation and workflow skills
├── .cursor/
│ ├── rules/ # Thin Cursor mirrors → .github/instructions/
│ └── commands/ # Thin Cursor mirrors → .agents/workflows/
└── AGENTS.md # Canonical AI collaborator standards

Contributing

SoloDevBoard welcomes contributions from all developers. Please read CONTRIBUTING.md and the Code of Conduct.

To contribute:

  1. Fork the repository and create a new branch for your changes.
  2. Review the project structure and existing documentation to understand the architecture and conventions.
  3. Ensure all code comments, string literals, and documentation use UK English spelling.
  4. Follow the coding conventions outlined in AGENTS.md.
  5. Use the issue templates in .github/ISSUE_TEMPLATE/ to report bugs or request features.
  6. When implementing a feature or fix, reference the relevant issue in your commit message.
  7. Add or update tests in the appropriate test project under tests/.
  8. Submit your changes via a pull request that follows plan/PULL_REQUEST_POLICY.md and .github/pull_request_template.md.
  9. The CI workflow will build and test your changes automatically.
  10. The project maintainer will review your PR and provide feedback or merge when ready.

For guidance on labels, see plan/LABEL_STRATEGY.md. For help with setup, see docs/getting-started.md. End-user documentation is published from website/ to GitHub Pages on v* release tags.


AI-Driven Development

SoloDevBoard is developed with AI agents as active collaborators. AGENTS.md is the canonical source for architecture, conventions, UK English requirements, and workflow gates. Role contracts in .agents/contracts/, workflow entry points in .agents/workflows/, skills in .agents/skills/, and the PM runbook in plan/PM_RUNBOOK.md provide structured workflows for planning, implementation, and review. For Cursor Cloud VM development, see plan/CURSOR_CLOUD.md.


Security

Please report vulnerabilities privately as described in SECURITY.md. Do not file public issues for security problems.

Licence

SoloDevBoard is released under the MIT Licence.

About

A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - markheydon/solo-dev-board: A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface. · GitHub
Skip to content

Repository files navigation

SoloDevBoard

CI

A single pane of glass for solo developers managing GitHub workloads across multiple repositories.

What Is SoloDevBoard?

SoloDevBoard is a .NET 10 Blazor Server application that consolidates your GitHub repository management into a single, unified interface. If you maintain multiple GitHub repositories as a solo developer, SoloDevBoard eliminates the context-switching between repository tabs, project boards, settings pages, and workflow runs.

FeatureDescriptionStatus
Audit DashboardConsolidated view of issues, open PRs, workflow health, and label consistency across selected repositories.Available
Label ManagerCreate, edit, synchronise, and enforce label taxonomies across multiple repositories from a single interface.Available
RepositoriesView, search, refresh, and filter repositories accessible to your GitHub account (including open-source topic filters). Add, remove, bulk, and row catalogue actions remain stubs.Partially Available
One-Click MigrationMigrate labels, milestones, and Projects v2 Status columns from one repository to another in a single preview-first action.Available
Board Rules VisualiserVisualise supported board states and transitions for GitHub Project v2 boards. Full GitHub automation-rule retrieval remains a later slice.Partially Available
Triage UIKeyboard-friendly interface for triaging incoming issues quickly.Available
Actions TemplatesBrowse, customise, and apply built-in GitHub Actions workflow templates across repositories. Custom template repositories are deferred past v1.1.Partially Available
PlanningDaily Focus, backlog review, iteration planning, and repository participation for your project board.Available

Tech Stack

  • .NET SDK 10.0 or later.
  • Git (any recent version).
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.

Getting Started

Prerequisites

Ensure you have the following installed:

  • .NET SDK 10.0 or later.
  • Git.
  • A GitHub account.
  • A GitHub Personal Access Token (PAT) or GitHub App for API authentication.
  • The Aspire CLI (aspire) for local orchestration.

Run Locally

SoloDevBoard uses Aspire for local orchestration and production deployment to Azure Container Apps. Two authentication modes are available: PAT-only local trusted mode (default, for solo local development and trusted personal self-hosting) and hosted sign-in (GitHub App, for shared or public deployments). See Getting Started — PAT-only local trusted mode for the mode comparison.

Quick start with Aspire (recommended):

# Clone the repository
git clone https://github.com/markheydon/solo-dev-board.git
cd solo-dev-board
# Restore dependencies
dotnet restore SoloDevBoard.slnx
# Configure GitHub auth — one secret for PAT-only local trusted mode
aspire secret set Parameters:gh-pat "<your-pat>"# Start with Aspire
aspire start --apphost src/SoloDevBoard.AppHost/SoloDevBoard.AppHost.csproj
# Get the allocated endpoint
aspire describe

Open the app resource URL shown by aspire describe in your browser.

Optional legacy path (without Aspire):

dotnet user-secrets set"GitHubAuth:PersonalAccessToken""<your-pat>" --project src/App/SoloDevBoard.App
dotnet run --project src/App/SoloDevBoard.App

For hosted sign-in mode (GitHub App), see docs/getting-started.md or src/SoloDevBoard.AppHost/README.md.

Aspire is used for both local orchestration and production deployment to Azure Container Apps. See docs/deployment.md for Azure deployment instructions, including the self-hoster PAT path for a personal instance on your own subscription.

Project Structure

solo-dev-board/
├── src/SoloDevBoard.AppHost/ # Aspire AppHost (local orchestration and Azure deployment)
├── src/SoloDevBoard.ServiceDefaults/ # Aspire service defaults (telemetry, health checks)
├── src/
│ ├── App/ # Blazor Server UI (presentation layer)
│ ├── Application/ # Use cases and service interfaces
│ ├── Domain/ # Domain entities and value objects
│ └── Infrastructure/ # GitHub API clients, external integrations
├── tests/
│ └── App.Tests/ # xUnit test projects
├── docs/ # Developer / operator documentation
│ ├── README.md # Index for repository-centric docs
│ ├── getting-started.md # Setup and configuration guide
│ ├── deployment.md # Azure Container Apps deployment guide
│ └── github-app.md # Hosted-sign-in GitHub App listing checklist
├── website/ # Public product site (Hugo / Hextra → GitHub Pages)
│ ├── hugo.yaml # Hugo site configuration
│ └── content/ # Landing, User Guide, and About pages
├── scripts/
│ ├── invoke-hugo-site.sh # Local Hugo build/serve via Docker/Podman (bash)
│ └── Invoke-HugoSite.ps1 # Windows PowerShell equivalent
├── CHANGELOG.md # Keep a Changelog (release notes source)
├── plan/
│ ├── SCOPE.md # Project scope and constraints
│ ├── DECISIONS.md # Active decision log (repo memory)
│ ├── IMPLEMENTATION_PLAN.md # Phased development plan
│ ├── BACKLOG.md # Roadmap index (Issues are source of truth)
│ ├── RELEASE_PLAN.md # Versioning and release process
│ ├── LABEL_STRATEGY.md # GitHub label taxonomy
│ ├── PROJECT_MANAGEMENT.md # Issues, milestones, and project board guide
│ ├── PROJECT_BOARD_DESIGN.md # Project board column and automation design
│ └── DOCS_STRATEGY.md # Documentation conventions
├── adr/
│ ├── README.md # Redirect to plan/DECISIONS.md
│ └── archive/ # Read-only legacy ADR files
├── .github/
│ ├── instructions/ # Path-scoped coding rules (canonical)
│ ├── prompts/ # Thin Copilot mirrors → .agents/workflows/
│ ├── ISSUE_TEMPLATE/ # Issue templates (feature, bug, chore)
│ ├── pull_request_template.md
│ └── workflows/
│ ├── ci.yml # .NET build, format, and test on every PR
│ ├── playwright.yml # Playwright E2E (PAT and hosted matrix)
│ ├── cd.yml # CD: Aspire deploy to Azure
│ ├── aspire-deploy-validate.yml # Validates AppHost deployment model on PR
│ ├── bash-validate.yml # ShellCheck on scripts/**/*.sh
│ ├── powershell-validate.yml # PSScriptAnalyzer on scripts/**/*.ps1
│ ├── github-actions-validate.yml # actionlint on workflow YAML
│ ├── github-scripts-validate.yml # ESLint and tests for .github/scripts
│ ├── hugo-validate.yml # Hugo end-user docs build validation on PR
│ └── hugo-deploy.yml # Hugo end-user docs deploy to GitHub Pages
├── .agents/
│ ├── contracts/ # Role boundary contracts (PM, delivery, verify, etc.)
│ ├── workflows/ # Canonical workflow entry points
│ └── skills/ # Shared implementation and workflow skills
├── .cursor/
│ ├── rules/ # Thin Cursor mirrors → .github/instructions/
│ └── commands/ # Thin Cursor mirrors → .agents/workflows/
└── AGENTS.md # Canonical AI collaborator standards

Contributing

SoloDevBoard welcomes contributions from all developers. Please read CONTRIBUTING.md and the Code of Conduct.

To contribute:

  1. Fork the repository and create a new branch for your changes.
  2. Review the project structure and existing documentation to understand the architecture and conventions.
  3. Ensure all code comments, string literals, and documentation use UK English spelling.
  4. Follow the coding conventions outlined in AGENTS.md.
  5. Use the issue templates in .github/ISSUE_TEMPLATE/ to report bugs or request features.
  6. When implementing a feature or fix, reference the relevant issue in your commit message.
  7. Add or update tests in the appropriate test project under tests/.
  8. Submit your changes via a pull request that follows plan/PULL_REQUEST_POLICY.md and .github/pull_request_template.md.
  9. The CI workflow will build and test your changes automatically.
  10. The project maintainer will review your PR and provide feedback or merge when ready.

For guidance on labels, see plan/LABEL_STRATEGY.md. For help with setup, see docs/getting-started.md. End-user documentation is published from website/ to GitHub Pages on v* release tags.


AI-Driven Development

SoloDevBoard is developed with AI agents as active collaborators. AGENTS.md is the canonical source for architecture, conventions, UK English requirements, and workflow gates. Role contracts in .agents/contracts/, workflow entry points in .agents/workflows/, skills in .agents/skills/, and the PM runbook in plan/PM_RUNBOOK.md provide structured workflows for planning, implementation, and review. For Cursor Cloud VM development, see plan/CURSOR_CLOUD.md.


Security

Please report vulnerabilities privately as described in SECURITY.md. Do not file public issues for security problems.

Licence

SoloDevBoard is released under the MIT Licence.

About

A .NET Blazor app for solo developers to manage GitHub workloads across multiple repositories in one unified interface.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages