development-hub/index.html

80 lines
24 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-overview" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.9.2">
<title data-rh="true">Development Hub</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://pages.brrd.tech/rob/development-hub/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Development Hub"><meta data-rh="true" name="description" content="Central orchestration project for managing Rob&#x27;s multi-project development ecosystem."><meta data-rh="true" property="og:description" content="Central orchestration project for managing Rob&#x27;s multi-project development ecosystem."><link data-rh="true" rel="icon" href="/rob/development-hub/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://pages.brrd.tech/rob/development-hub/"><link data-rh="true" rel="alternate" href="https://pages.brrd.tech/rob/development-hub/" hreflang="en"><link data-rh="true" rel="alternate" href="https://pages.brrd.tech/rob/development-hub/" hreflang="x-default"><script data-rh="true">function insertBanner(){var n=document.createElement("div");n.id="__docusaurus-base-url-issue-banner-container";n.innerHTML='\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/rob/development-hub/</span> </p>\n <p>We suggest trying baseUrl = <span id="__docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n',document.body.prepend(n);var e=document.getElementById("__docusaurus-base-url-issue-banner-suggestion-container"),o=window.location.pathname,s="/"===o.substr(-1)?o:o+"/";e.innerHTML=s}document.addEventListener("DOMContentLoaded",function(){void 0===window.docusaurus&&insertBanner()})</script><script data-rh="true" type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Development Hub","item":"https://pages.brrd.tech/rob/development-hub/"}]}</script><link rel="stylesheet" href="/rob/development-hub/assets/css/styles.6095798e.css">
<script src="/rob/development-hub/assets/js/runtime~main.20c2acbd.js" defer="defer"></script>
<script src="/rob/development-hub/assets/js/main.4d3a13f1.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg style="display: none;"><defs>
<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="theme-layout-navbar navbar navbar--fixed-top"><div class="navbar__inner"><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/rob/development-hub/"><b class="navbar__title text--truncate">Development Hub</b></a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href="https://gitea.brrd.tech/rob/development-hub" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Source Code<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true" class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill="currentColor" d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"></path></svg></button></div><div class="navbarSearchContainer_Bca1"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class="docsWrapper_hBAB"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docRoot_UBD9"><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class="sidebarViewport_aRkj"><div class="sidebar_njMd"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" href="/rob/development-hub/"><span title="Development Hub" class="linkLabel_WmDU">Development Hub</span></a></li></ul></nav></div></div></aside><main class="docMainContainer_TBSr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/rob/development-hub/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link">Development Hub</span></li></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type="button" class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Development Hub</h1></header>
<p>Central orchestration project for managing Rob&#x27;s multi-project development ecosystem.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="overview">Overview<a href="#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview" translate="no"></a></h2>
<p>Development Hub provides:</p>
<ul>
<li class=""><strong>GUI Application</strong> - PyQt6 workspace with project list, splittable terminal panes, and session persistence</li>
<li class=""><strong>CLI Tools</strong> - Scripts to create and manage projects following consistent patterns</li>
<li class=""><strong>Centralized Documentation</strong> - Docusaurus-based docs with Gitea Pages deployment</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="gui-application">GUI Application<a href="#gui-application" class="hash-link" aria-label="Direct link to GUI Application" title="Direct link to GUI Application" translate="no"></a></h2>
<p>A PyQt6-based workspace for managing your development projects.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="running-the-app">Running the App<a href="#running-the-app" class="hash-link" aria-label="Direct link to Running the App" title="Direct link to Running the App" translate="no"></a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">cd ~/PycharmProjects/development-hub</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">source .venv/bin/activate</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">python -m development_hub</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="features">Features<a href="#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features" translate="no"></a></h3>
<ul>
<li class=""><strong>Project List</strong> - Auto-discovers projects, right-click for actions (terminal, editor, Gitea, docs, deploy)</li>
<li class=""><strong>Splittable Panes</strong> - Horizontal/vertical splits, each pane has its own tab bar</li>
<li class=""><strong>PTY Terminals</strong> - Full terminal emulation with TUI support (vim, htop work)</li>
<li class=""><strong>Drag &amp; Drop</strong> - Drop files/folders into terminal to inject paths</li>
<li class=""><strong>Session Persistence</strong> - Remembers pane layout and open terminals on restart</li>
<li class=""><strong>New Project Dialog</strong> - Create projects with optional Ramble voice input</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="keyboard-shortcuts">Keyboard Shortcuts<a href="#keyboard-shortcuts" class="hash-link" aria-label="Direct link to Keyboard Shortcuts" title="Direct link to Keyboard Shortcuts" translate="no"></a></h3>
<table><thead><tr><th>Shortcut</th><th>Action</th></tr></thead><tbody><tr><td><code>Ctrl+Shift+T</code></td><td>New terminal tab</td></tr><tr><td><code>Ctrl+Shift+W</code></td><td>Close current tab</td></tr><tr><td><code>Ctrl+Shift+D</code></td><td>Split horizontal</td></tr><tr><td><code>Ctrl+Shift+E</code></td><td>Split vertical</td></tr><tr><td><code>Ctrl+Alt+Left/Right</code></td><td>Switch panes</td></tr><tr><td><code>Ctrl+B</code></td><td>Toggle project panel</td></tr><tr><td><code>Ctrl+N</code></td><td>New project dialog</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-new-project-script">The <code>new-project</code> Script<a href="#the-new-project-script" class="hash-link" aria-label="Direct link to the-new-project-script" title="Direct link to the-new-project-script" translate="no"></a></h2>
<p>The main tool is <code>new-project</code>, which automates creating a new project in the ecosystem:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">new-project my-tool --title &quot;My Tool&quot; --tagline &quot;Does useful things&quot;</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-it-creates">What It Creates<a href="#what-it-creates" class="hash-link" aria-label="Direct link to What It Creates" title="Direct link to What It Creates" translate="no"></a></h3>
<ol>
<li class=""><strong>Gitea repository</strong> at <code>gitea.brrd.tech/rob/my-tool</code></li>
<li class=""><strong>Local project</strong> at <code>~/PycharmProjects/my-tool/</code> with:<!-- -->
<ul>
<li class=""><code>CLAUDE.md</code> - AI assistant context</li>
<li class=""><code>README.md</code> - Project readme</li>
<li class=""><code>pyproject.toml</code> - Python packaging</li>
<li class=""><code>.gitignore</code> - Standard ignores</li>
<li class=""><code>docs/</code> - Symlink to centralized docs</li>
</ul>
</li>
<li class=""><strong>Documentation folder</strong> at <code>project-docs/docs/projects/my-tool/</code></li>
<li class=""><strong>Build configuration</strong> in <code>build-public-docs.sh</code></li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="usage">Usage<a href="#usage" class="hash-link" aria-label="Direct link to Usage" title="Direct link to Usage" translate="no"></a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Full specification</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">new-project myproject --title &quot;My Project&quot; --tagline &quot;Short description&quot;</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Interactive mode (prompts for title/tagline)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">new-project myproject</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"># Options</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">--dry-run Show what would happen without making changes</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">--skip-gitea Skip Gitea repo creation (for offline use)</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">--help Show help</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="project-structure">Project Structure<a href="#project-structure" class="hash-link" aria-label="Direct link to Project Structure" title="Direct link to Project Structure" translate="no"></a></h2>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#F8F8F2;--prism-background-color:#282A36"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#F8F8F2"><span class="token plain">development-hub/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── src/development_hub/ # GUI application</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── main_window.py # Main window with menus</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── project_list.py # Project discovery &amp; context menu</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── workspace.py # Splittable pane layout</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── terminal_widget.py # PTY terminal with pyte</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ ├── dialogs.py # New Project, Settings dialogs</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── ...</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── bin/</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">│ └── new-project # CLI scaffolding script</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── templates/ # Project templates</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── docs/ # Symlink to this folder</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── pyproject.toml</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">├── CLAUDE.md</span><br></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">└── README.md</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration" translate="no"></a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="gitea-api-token">Gitea API Token<a href="#gitea-api-token" class="hash-link" aria-label="Direct link to Gitea API Token" title="Direct link to Gitea API Token" translate="no"></a></h3>
<p>The script needs a Gitea API token to create repositories automatically.</p>
<p><strong>Setup options:</strong></p>
<ol>
<li class="">Environment variable: <code>export GITEA_TOKEN=your_token</code></li>
<li class="">Config file: <code>~/.config/development-hub/gitea-token</code></li>
</ol>
<p>The script will prompt for the token on first run and save it automatically.</p>
<p><strong>Creating a token:</strong></p>
<ol>
<li class="">Go to <a href="https://gitea.brrd.tech/user/settings/applications" target="_blank" rel="noopener noreferrer" class="">https://gitea.brrd.tech/user/settings/applications</a></li>
<li class="">Generate a new token with &#x27;repo&#x27; scope</li>
<li class="">Copy the token when prompted</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="related-projects">Related Projects<a href="#related-projects" class="hash-link" aria-label="Direct link to Related Projects" title="Direct link to Related Projects" translate="no"></a></h2>
<p>Development Hub manages these projects:</p>
<table><thead><tr><th>Project</th><th>Description</th></tr></thead><tbody><tr><td><a class="" href="/rob/cmdforge/overview">CmdForge</a></td><td>AI-powered CLI tool builder</td></tr><tr><td><a class="" href="/rob/cascadingdev/overview">CascadingDev</a></td><td>Cascading Development Framework</td></tr><tr><td><a class="" href="/rob/orchestrated-discussions/overview">Orchestrated Discussions</a></td><td>AI Discussion Framework</td></tr><tr><td><a class="" href="/rob/artifact-editor/overview">Artifact Editor</a></td><td>Code Artifact Editor</td></tr><tr><td><a class="" href="/rob/ramble/overview">Ramble</a></td><td>Voice Note Transcription</td></tr></tbody></table>
<p>All projects follow the same patterns and can be created using <code>new-project</code>.</p></div></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overview" class="table-of-contents__link toc-highlight">Overview</a></li><li><a href="#gui-application" class="table-of-contents__link toc-highlight">GUI Application</a><ul><li><a href="#running-the-app" class="table-of-contents__link toc-highlight">Running the App</a></li><li><a href="#features" class="table-of-contents__link toc-highlight">Features</a></li><li><a href="#keyboard-shortcuts" class="table-of-contents__link toc-highlight">Keyboard Shortcuts</a></li></ul></li><li><a href="#the-new-project-script" class="table-of-contents__link toc-highlight">The <code>new-project</code> Script</a><ul><li><a href="#what-it-creates" class="table-of-contents__link toc-highlight">What It Creates</a></li><li><a href="#usage" class="table-of-contents__link toc-highlight">Usage</a></li></ul></li><li><a href="#project-structure" class="table-of-contents__link toc-highlight">Project Structure</a></li><li><a href="#configuration" class="table-of-contents__link toc-highlight">Configuration</a><ul><li><a href="#gitea-api-token" class="table-of-contents__link toc-highlight">Gitea API Token</a></li></ul></li><li><a href="#related-projects" class="table-of-contents__link toc-highlight">Related Projects</a></li></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/rob/development-hub/">Overview</a></li></ul></div><div class="theme-layout-footer-column col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://gitea.brrd.tech/rob/development-hub" target="_blank" rel="noopener noreferrer" class="footer__link-item">Gitea<svg width="13.5" height="13.5" aria-label="(opens in new tab)" class="iconExternalLink_nPIU"><use href="#theme-svg-external-link"></use></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Development Hub Documentation</div></div></div></footer></div>
</body>
</html>