DevOpsProjManager
Interactive Walkthrough

UI Guide — dream11 Demo

A complete walkthrough of every panel and feature using the dream11.config.json project as live demo data.

12 Sections 10 Screenshots 4 CRUD Operations 10 Services
1

CRUD Demo — demo.txt

Automated test

Before loading the UI, demo_dream11.py performs a full Create / Read / Update / Delete cycle on D:\Uday\Yug\dream11\demo.txt to verify core I/O works correctly against the live working directory.

#OperationFileActionResult
1 CREATE demo.txt Path.write_text() — wrote initial content ✓ OK
2 READ demo.txt Path.read_text() — verified content matches ✓ OK
3 UPDATE demo.txt Appended timestamp line: "Updated: 2026-02-26 HH:MM:SS\n" ✓ OK
4 DELETE demo.txt Path.unlink() — confirmed exists() == False ✓ OK
5 RECREATE demo.txt Re-written for UI display in Sync / Diff / Env panels ✓ OK
All 4 CRUD operations passed against the live dream11 working directory. The file is re-created so it is visible in the Sync Preview, Diff Viewer and Env Editor panels shown below.
CRUD Results — dream11 / demo.txt
CRUD results dialog
Screenshot 09 — CRUD Results — Auto-generated by the demo script; confirms all four operations completed successfully on D:\Uday\Yug\dream11\demo.txt.
2

Importing dream11.config.json

Dashboard → Import

The legacy PowerShell config file is imported via the Import Config button on the Dashboard. import_legacy_config() reads dream11.config.json and converts it into a typed Project object with 2 folders and 10 services.

Legacy JSON structure

{
  "ProjectName": "dream11",
  "WorkDir":     "D:\\Uday\\Yug\\dream11",
  "GitDir":      "D:\\Uday\\Yug\\dream11-git",
  "RemoteOrigin": "origin",
  "Branch":      "main",
  "ExcludeDirs": ["node_modules", ...],
  "Services": {
    "dev":  [...5 services...],
    "prod": [...5 services...]
  }
}

Resulting Project object

Project(
  name="dream11",
  folders=[
    FolderConfig(
      name="Dev",
      path="D:\\Uday\\Yug\\dream11",
      type=FolderType.DEV),
    FolderConfig(
      name="Git",
      path="D:\\Uday\\Yug\\dream11-git",
      type=FolderType.STABLE),
  ],
  services=[...10 ServiceDefinition...],
)
DevOpsProjManager — Dashboard
Dashboard with dream11 project card
Screenshot 00 — Dashboard — The dream11 project card appears after import. Click the card to open the full project view. The navy sidebar switches between Dashboard and Settings.
3

Project View

Click project card

Clicking the dream11 project card opens a tabbed ProjectView dialog with five tabs: Sync / Environment / Services / FTP / Backups.

Project: dream11
Project view dialog
Screenshot 01 — Project View — Five tabs provide access to all project functionality. The title bar shows the project name.
4

Sync Panel

Tab: Sync

The Sync tab lets you preview and execute a folder-to-folder sync. Source and target are selected from the project folders (Dev and Git for dream11). Clicking Preview runs a dry-run via filecmp.dircmp; Sync Now creates a versioned backup first, then calls execute_sync().

Sync Panel — dream11
Sync panel
Screenshot 02 — Sync Panel — Source/target dropdowns at the top. The preview list shows files to be added, modified or deleted. Color coding: green = new, amber = modified, red = deleted.
5

Environment Editor

Tab: Environment

The Environment tab parses every .env file in the project folders into a key/value table. Sensitive fields (passwords, tokens, keys) are automatically masked with ***. You can load, save, generate a template, or diff two .env files directly from this panel.

Masking note: fields whose key contains PASSWORD, SECRET, TOKEN, KEY, API, or AUTH are automatically masked in the table. The real value is only written back on Save.
Environment Editor — dream11
Environment editor
Screenshot 03 — Environment Editor — Three-column table: Key / Value (masked for sensitive entries) / Comment. Buttons: Load .env, Save, Generate Template, Diff two files.
6

Service Panel

Tab: Services

dream11 has 10 services (5 dev, 5 prod) defined in dream11.config.json. The Services tab lists all of them; clicking Start spawns the command in a subprocess.Popen with live stdout/stderr streamed into the console widget.

TypeNameCommandDir
devFrontend (Vite dev:client)npm run dev:clientWorkDir
devServer (Express dev)npm run devWorkDir
devBackend (NestJS dev:backend)npm run dev:backendWorkDir
devDB Seednpm run db:seedWorkDir
devDB Pushnpm run db:pushWorkDir
prodBuild (root)npm run buildGitDir
prodStart (root server)npm run startGitDir
prodBackend Buildnpm run backend:buildGitDir
prodBackend Start (prod)npm run startGitDir\backend
prodType Checknpm run checkGitDir
Service Panel — dream11
Service panel
Screenshot 04 — Service Panel — Left list shows all 10 services. Right panel shows live console output. Start / Stop buttons control each service individually.
7

Backup Browser

Tab: Backups

Every time you run Sync Now the application automatically creates a versioned .zip snapshot of the target folder (v001, v002, …). The Backup Browser lists all snapshots for each project folder with size, date, and a one-click Restore button.

Backup Browser — dream11
Backup browser
Screenshot 05 — Backup Browser — Table columns: Version / Size / Created / Archive path. Restore extracts the zip back to the original folder. Delete removes the archive; old archives beyond the limit are purged automatically.
8

Settings Dialog

Sidebar → Settings

Click Settings in the sidebar (or press Ctrl+,) to open the global application settings.

Settings
Settings dialog
Screenshot 06 — Settings — Oracle Redwood theme is active (enterprise default). Log level, max backups per folder, and the auto-backup toggle.
SettingDefault
ThemeRedwood (Enterprise)
Log levelINFO
Max backups / folder10
Auto-backup on syncEnabled
Changes take effect immediately; window geometry is persisted so the app reopens at the same size and position.
9

Diff Viewer

Beyond Compare-style

The Diff Viewer provides a side-by-side file comparison powered by difflib.SequenceMatcher. Color coding matches industry convention: green for insertions, red for deletions, amber for replacements. The top folder tree lets you select any changed file across an entire directory comparison.

Diff Viewer — demo.txt
Diff viewer
Screenshot 07 — Diff Viewer — Left pane = file A, right pane = file B. Green = inserted, Red = deleted, Amber = modified. Identical lines are shown in normal text.
Three-way merge is also supported: open File › Three-way Merge, supply a base, mine, and theirs file. Conflicts are marked with standard merge markers.
10

FTP / SFTP Panel

Tab: FTP

The FTP panel provides a dual-pane file browser. Local files are on the left; remote files (after connecting) are on the right. Supports plain FTP, FTPS (explicit TLS), and SFTP (SSH) via paramiko. Passwords are encrypted at rest using Fernet.

FTP Panel — dream11
FTP panel
Screenshot 08 — FTP Panel — Enter host / port / credentials and protocol, then click Connect. The remote pane populates with directory listing. Use Upload / Download to transfer files.
11

Git Integration

GitPython 3.1

dream11 uses branch: main, remote: origin as defined in the legacy config. The Git panel (inside Project View) lets you pull, commit, push and switch branches without leaving the app. All Git operations run in a QThread worker to keep the UI responsive.

Supported operations

OperationCore function
Statusgit_manager.get_status()
Branchesget_branches()
Logget_log(n=50)
Pullpull(remote, branch)
Commit + Pushcommit_and_push(msg)
Checkout branchcheckout_branch(name)
Create branchcreate_branch(name)
Cloneclone(url, dest)

dream11 Git config

GitConfig(
  remote="origin",
  default_branch="main",
  auto_pull=False,
  sign_commits=False,
)
Git operations require the WorkDir or GitDir to already be initialised as a git repository (git init / git clone).
12

Keyboard Shortcuts & UI Design

ShortcutAction
Ctrl+,Open Settings
Ctrl+NNew project
Ctrl+OImport legacy config
Ctrl+SSave current config
F5Refresh project list
EscapeClose dialog

UI design principles

  • Oracle Redwood enterprise theme — navy sidebar, red accents
  • All heavy work in QThread workers — UI never freezes
  • Signals/slots connect workers to panels cleanly
  • All text / code is ASCII-only for maximum portability
  • Passwords masked in UI; encrypted at rest with Fernet
  • Auto-backup before every destructive sync (versioned zips)