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 Auto-Discovery - Scans configurable directories for git repos, with ignore patterns
  • Project Dashboard - View todos, goals, milestones at a glance with interactive checkboxes
  • 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
  • Context Menu Actions - Open terminal, editor, Gitea, docs, deploy from right-click
  • Documentation Preview - Preview documentation updates before applying changes
  • Discussion Integration - Launch orchestrated discussions for todos and milestones

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 # Auto-discover projects from configurable paths
├── dialogs.py # New Project (with Ramble), Settings, Preview dialogs
├── settings.py # JSON persistence for settings & session
├── styles.py # Dark theme stylesheet
├── models/ # Data models (Goal, Todo, Milestone, Health)
├── views/ # Dashboard views (Project, Global)
├── parsers/ # Markdown file parsers (todos, goals, milestones)
├── services/ # Business logic (git, health checker, progress writer)
└── widgets/ # Reusable UI components

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
ProjectDashboardviews/dashboard.pyProject-specific dashboard view
GlobalDashboardviews/global_dashboard.pyCross-project overview dashboard

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

Project Search Paths

Projects are auto-discovered by scanning configured directories for .git folders. Configure in Settings dialog or edit ~/.config/development-hub/settings.json:

{
"project_search_paths": ["~/PycharmProjects"],
"project_ignore_folders": ["trash", "project-docs", ".cache", "__pycache__", "node_modules"]
}

Discovery rules:

  • Scans immediate subdirectories (not recursive)
  • Requires .git folder to be recognized as a project
  • Skips hidden folders (starting with .)
  • Skips folders in ignore list
  • Merges rich metadata from build-public-docs.sh when available

Gitea API Token

The new-project 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-07
{{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.