Skip to main content

Development Hub

Central orchestration project for managing Rob's multi-project development ecosystem.

Overview

Development Hub provides:

  • GUI Application - PyQt6 workspace with project list, splittable terminal panes, and session persistence
  • CLI Tools - Scripts to create and manage projects following consistent patterns
  • Centralized Documentation - Docusaurus-based docs with Gitea Pages deployment

GUI Application

A PyQt6-based workspace for managing your development projects.

Running the App

cd ~/PycharmProjects/development-hub
source .venv/bin/activate
python -m development_hub

Features

  • Project List - Auto-discovers projects, right-click for actions (terminal, editor, Gitea, docs, deploy)
  • Splittable Panes - Horizontal/vertical splits, each pane has its own tab bar
  • PTY Terminals - Full terminal emulation with TUI support (vim, htop work)
  • Drag & Drop - Drop files/folders into terminal to inject paths
  • Session Persistence - Remembers pane layout and open terminals on restart
  • New Project Dialog - Create projects with optional Ramble voice input

Keyboard Shortcuts

ShortcutAction
Ctrl+Shift+TNew terminal tab
Ctrl+Shift+WClose current tab
Ctrl+Shift+DSplit horizontal
Ctrl+Shift+ESplit vertical
Ctrl+Shift+PClose active pane
Ctrl+Alt+Left/RightSwitch panes
Ctrl+BToggle project panel
Ctrl+NNew project dialog
F5Refresh project list

The new-project Script

The main tool is new-project, which automates creating a new project in the ecosystem:

new-project my-tool --title "My Tool" --tagline "Does useful things"

What It Creates

  1. Gitea repository at gitea.brrd.tech/rob/my-tool
  2. Local project at ~/PycharmProjects/my-tool/ with:
    • CLAUDE.md - AI assistant context
    • README.md - Project readme
    • pyproject.toml - Python packaging
    • .gitignore - Standard ignores
    • docs/ - Symlink to centralized docs
  3. Documentation folder at project-docs/docs/projects/my-tool/
  4. Build configuration in build-public-docs.sh

Usage

# Full specification
new-project myproject --title "My Project" --tagline "Short description"

# Interactive mode (prompts for title/tagline)
new-project myproject

# Options
--dry-run Show what would happen without making changes
--skip-gitea Skip Gitea repo creation (for offline use)
--help Show help

Architecture

src/development_hub/
├── __init__.py
├── __main__.py # Entry point
├── app.py # QApplication subclass
├── main_window.py # Main window with menus
├── project_list.py # Left panel - project discovery & context menu
├── workspace.py # Right panel - splittable panes with tabs
├── terminal_widget.py # PTY terminal with pyte emulation
├── project_discovery.py # Parse projects from build-public-docs.sh
├── dialogs.py # New Project (with Ramble), Settings dialogs
├── settings.py # JSON persistence for settings & session
└── styles.py # Dark theme stylesheet

Key Classes

ClassFilePurpose
MainWindowmain_window.pyQMainWindow with menus, splitter layout
ProjectListWidgetproject_list.pyProject list with context menu actions
WorkspaceManagerworkspace.pyManages splittable pane layout
PaneWidgetworkspace.pyTab container within a pane
TerminalWidgetterminal_widget.pyPTY-based terminal with pyte screen emulation

Project Structure

development-hub/
├── src/development_hub/ # GUI application (see Architecture above)
├── bin/
│ └── new-project # CLI scaffolding script
├── templates/
│ ├── gitignore.template # Python .gitignore with docs exclusion
│ ├── CLAUDE.md.template # AI context file
│ ├── README.md.template # Basic README
│ ├── pyproject.toml.template
│ ├── overview.md.template # Docs overview
│ └── updating-documentation.md.template
├── docs/ # Symlink to project-docs
├── pyproject.toml # Python packaging with PyQt6 dep
├── CLAUDE.md
└── README.md

Configuration

Gitea API Token

The script needs a Gitea API token to create repositories automatically.

Setup options:

  1. Environment variable: export GITEA_TOKEN=your_token
  2. Config file: ~/.config/development-hub/gitea-token

The script will prompt for the token on first run and save it automatically.

Creating a token:

  1. Go to https://gitea.brrd.tech/user/settings/applications
  2. Generate a new token with 'repo' scope
  3. Copy the token when prompted

Template Placeholders

When creating new projects, templates use these placeholders:

PlaceholderDescriptionExample
{{PROJECT_NAME}}Lowercase project namemy-tool
{{PROJECT_TITLE}}Display titleMy Tool
{{PROJECT_TAGLINE}}Short descriptionDoes useful things
{{YEAR}}Current year2026
{{DATE}}Creation date2026-01-06
{{GITEA_URL}}Gitea server URLhttps://gitea.brrd.tech
{{GITEA_OWNER}}Repository ownerrob

Development Hub manages these projects:

ProjectDescription
CmdForgeAI-powered CLI tool builder
CascadingDevCascading Development Framework
Orchestrated DiscussionsAI Discussion Framework
Artifact EditorCode Artifact Editor
RambleVoice Note Transcription

All projects follow the same patterns and can be created using new-project.