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
| Shortcut | Action |
|---|---|
Ctrl+Shift+T | New terminal tab |
Ctrl+Shift+W | Close current tab |
Ctrl+Shift+D | Split horizontal |
Ctrl+Shift+E | Split vertical |
Ctrl+Shift+P | Close active pane |
Ctrl+Alt+Left/Right | Switch panes |
Ctrl+B | Toggle project panel |
Ctrl+N | New project dialog |
F5 | Refresh 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
- Gitea repository at
gitea.brrd.tech/rob/my-tool - Local project at
~/PycharmProjects/my-tool/with:CLAUDE.md- AI assistant contextREADME.md- Project readmepyproject.toml- Python packaging.gitignore- Standard ignoresdocs/- Symlink to centralized docs
- Documentation folder at
project-docs/docs/projects/my-tool/ - 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
| Class | File | Purpose |
|---|---|---|
MainWindow | main_window.py | QMainWindow with menus, splitter layout |
ProjectListWidget | project_list.py | Project list with context menu actions |
WorkspaceManager | workspace.py | Manages splittable pane layout |
PaneWidget | workspace.py | Tab container within a pane |
TerminalWidget | terminal_widget.py | PTY-based terminal with pyte screen emulation |
ProjectDashboard | views/dashboard.py | Project-specific dashboard view |
GlobalDashboard | views/global_dashboard.py | Cross-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
.gitfolder to be recognized as a project - Skips hidden folders (starting with
.) - Skips folders in ignore list
- Merges rich metadata from
build-public-docs.shwhen available
Gitea API Token
The new-project script needs a Gitea API token to create repositories automatically.
Setup options:
- Environment variable:
export GITEA_TOKEN=your_token - Config file:
~/.config/development-hub/gitea-token
The script will prompt for the token on first run and save it automatically.
Creating a token:
- Go to https://gitea.brrd.tech/user/settings/applications
- Generate a new token with 'repo' scope
- Copy the token when prompted
Template Placeholders
When creating new projects, templates use these placeholders:
| Placeholder | Description | Example |
|---|---|---|
{{PROJECT_NAME}} | Lowercase project name | my-tool |
{{PROJECT_TITLE}} | Display title | My Tool |
{{PROJECT_TAGLINE}} | Short description | Does useful things |
{{YEAR}} | Current year | 2026 |
{{DATE}} | Creation date | 2026-01-07 |
{{GITEA_URL}} | Gitea server URL | https://gitea.brrd.tech |
{{GITEA_OWNER}} | Repository owner | rob |
Related Projects
Development Hub manages these projects:
| Project | Description |
|---|---|
| CmdForge | AI-powered CLI tool builder |
| CascadingDev | Cascading Development Framework |
| Orchestrated Discussions | AI Discussion Framework |
| Artifact Editor | Code Artifact Editor |
| Ramble | Voice Note Transcription |
All projects follow the same patterns and can be created using new-project.