@aikotools/repo-maintenance 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,227 +1,199 @@
1
- # RepoHub - Repository Maintenance Tool
1
+ # RepoHub
2
2
 
3
- Web-basiertes Dashboard zur Verwaltung des `saas-coding-kernel` Multi-Repo Monorepos. Bietet Dependency-Graph, Bulk-Operationen, Cascade-Updates und Git-Management fuer 140+ Packages.
3
+ Web-based dashboard for managing multi-repo monorepos. Provides dependency graph visualization, cascade updates, bulk operations, and Git management across all your packages.
4
4
 
5
- ## Voraussetzungen
5
+ ![Domain Overview](https://raw.githubusercontent.com/aikotools/repo-maintenance/main/docs/screenshots/dashboard.png)
6
6
 
7
- | Tool | Version | Zweck |
8
- |------|---------|-------|
9
- | **Bun** | latest | Backend-Runtime |
10
- | **pnpm** | 10+ | Package Manager |
11
- | **Node.js** | 24+ | Build-Tools |
12
- | **Git** | - | Repository-Operationen |
13
- | **GitHub CLI (`gh`)** | - | Pull-All (Clone + GitHub-Abfrage) |
14
-
15
- GitHub CLI muss authentifiziert sein (`gh auth login`).
16
-
17
- ## Installation & Start
18
-
19
-
20
- ```bash
21
- cd repo/tools/tool-repo-maintenance
22
- pnpm install
23
- cp .env.example .env # Anpassen falls noetig
24
- ```
25
-
26
- ### Development
27
-
28
- ```bash
29
- pnpm dev # Backend (3100) + Frontend (3101) parallel
30
- pnpm dev:server # Nur Backend
31
- pnpm dev:client # Nur Frontend
32
- ```
7
+ ## Features
33
8
 
34
- Oeffne http://localhost:3101 im Browser.
9
+ - **Dashboard** with repo statistics and domain overview
10
+ - **Interactive dependency graph** visualization with domain filtering
11
+ - **Cascade updates** — propagate dependency changes through the entire chain
12
+ - **Pull All** — clone/pull all repos from GitHub in parallel
13
+ - **Bulk operations** — run shell commands across multiple repos
14
+ - **Repository detail** with diff viewer, dependencies, commit & push
15
+ - **File-URL dependency management** — switch between `file:` and npm versions
16
+ - **Persistent operation history** for cascade and pull-all runs
35
17
 
36
- ### Production
18
+ ## Installation
37
19
 
38
20
  ```bash
39
- pnpm build
40
- pnpm start # http://localhost:3100
21
+ npm install -g @aikotools/repo-maintenance
41
22
  ```
42
23
 
43
- ## Konfiguration
24
+ ## Quick Start
44
25
 
45
- ### .env
26
+ 1. Run `repohub`
27
+ 2. Open http://localhost:3100
28
+ 3. Click the gear icon (Settings) and configure:
29
+ - **Project Name** — a label for your monorepo
30
+ - **Root Folder** — path to the directory containing all your repos
31
+ - **npm Organizations** — scoped packages to detect as internal deps (e.g. `@myorg`)
32
+ - **GitHub Organizations** — for Pull All operations (e.g. `myorg`)
33
+ - **Parallel Tasks** (1–20, default: 6)
34
+ - **Default Branch** (e.g. `main`)
35
+ 4. Click **"Refresh repo structure"** to scan your repos
46
36
 
47
- ```bash
48
- PORT=3100 # Backend-Port
49
- VITE_PORT=3101 # Vite Dev-Server Port
50
- NPM_REGISTRY=https://npm.pkg.github.com # npm Registry (fuer Cascade)
51
- ```
37
+ ![Settings](https://raw.githubusercontent.com/aikotools/repo-maintenance/main/docs/screenshots/settings.png)
52
38
 
53
- ### Projekt-Einstellungen (UI)
39
+ ## Prerequisites
54
40
 
55
- Beim ersten Start ueber das Zahnrad-Icon (Settings) konfigurieren:
41
+ | Tool | Version | Purpose |
42
+ |------|---------|---------|
43
+ | **Node.js** | 24+ | Runtime |
44
+ | **Git** | — | Repository operations |
45
+ | **GitHub CLI (`gh`)** | — | Pull All (clone + GitHub queries) |
56
46
 
57
- - **NPM Organizations** - z.B. `@xhubio-saas` (zum Erkennen interner Dependencies)
58
- - **GitHub Organizations** - z.B. `xhubio-saas` (fuer Pull-All)
59
- - **Parallel Tasks** - Anzahl gleichzeitiger Operationen (1-20, Default: 6)
60
- - **Default Branch** - z.B. `main`
47
+ GitHub CLI must be authenticated (`gh auth login`).
61
48
 
62
- Die Konfiguration wird in `.repoMaintenance/project.json` gespeichert.
49
+ ## Feature Details
63
50
 
64
- ## Features
51
+ ### Repository Detail
65
52
 
66
- ### Dashboard
53
+ Click on any repo in the sidebar to open the detail view:
67
54
 
68
- Uebersicht mit Statistiken: Gesamtzahl Repos, Domains, uncommitted Changes und Dependency-Kanten. Zeigt Repos mit offenen Aenderungen und eine Domain-Uebersicht.
55
+ - **Changes tab** modified files with diff viewer. Untracked files can be added to `.gitignore` with one click.
56
+ - **Dependencies tab** — internal dependencies with links to the respective repo.
57
+ - **Dependents tab** — repos that depend on this repo.
58
+ - **Actions** — Refresh, Pull, Start Cascade.
59
+ - **Recent Commits** — last commits for the repo.
69
60
 
70
- ### Repository-Detail
71
-
72
- Klick auf ein Repo in der Sidebar oeffnet die Detailansicht:
73
-
74
- - **Changes-Tab** - Geaenderte Dateien mit Diff-Viewer. Untracked Files koennen per Klick zu `.gitignore` hinzugefuegt werden.
75
- - **Dependencies-Tab** - Interne Abhaengigkeiten mit Links zum jeweiligen Repo.
76
- - **Dependents-Tab** - Repos die von diesem Repo abhaengen.
77
- - **Actions** - Commit & Push, Pull, Start Cascade.
78
- - **Recent Commits** - Letzte Commits des Repos.
61
+ ![Repository Detail](https://raw.githubusercontent.com/aikotools/repo-maintenance/main/docs/screenshots/repo-detail.png)
79
62
 
80
63
  ### Dependency Graph
81
64
 
82
- Interaktive Visualisierung aller internen Abhaengigkeiten als Node-Edge-Graph (React Flow). Klick auf einen Node navigiert zum Repo-Detail.
65
+ Interactive visualization of all internal dependencies as a node-edge graph (React Flow). Filter by domain, toggle between full graph and affected-only views. Click on a node to navigate to the repo detail.
66
+
67
+ ![Dependency Graph](https://raw.githubusercontent.com/aikotools/repo-maintenance/main/docs/screenshots/dependency-graph.png)
83
68
 
84
69
  ### Pull All
85
70
 
86
- Synchronisiert alle Repos mit GitHub - wie `repo-maintenance.sh`, aber mit UI:
71
+ Synchronizes all repos with GitHub:
87
72
 
88
- 1. Holt alle Repos der konfigurierten GitHub-Organisation via `gh repo list`
89
- 2. **Klont** fehlende Repos in den richtigen Domain-Ordner
90
- 3. **Pullt** existierende Repos (ueberspringt bei uncommitted Changes)
91
- 4. Zeigt Live-Fortschritt mit Status pro Repo
73
+ 1. Fetches all repos from the configured GitHub organization via `gh repo list`
74
+ 2. **Clones** missing repos into the correct domain folder
75
+ 3. **Pulls** existing repos (skips repos with uncommitted changes)
76
+ 4. Shows live progress with per-repo status
92
77
 
93
- **Status-Typen:**
78
+ **Status types:**
94
79
 
95
- | Status | Bedeutung |
96
- |--------|-----------|
97
- | Updated | Erfolgreich gepullt |
98
- | Already up-to-date | Keine Aenderungen |
99
- | Cloned | Neu von GitHub geklont |
100
- | Skipped | In Ignore-Liste |
101
- | Unmapped | Kein Domain-Mapping konfiguriert |
102
- | Has changes | Uebersprungen wegen uncommitted Changes |
103
- | Failed | Fehler beim Pull/Clone |
80
+ | Status | Meaning |
81
+ |--------|---------|
82
+ | Updated | Successfully pulled |
83
+ | Already up-to-date | No changes |
84
+ | Cloned | Newly cloned from GitHub |
85
+ | Skipped | In ignore list |
86
+ | Unmapped | No domain mapping configured |
87
+ | Has changes | Skipped due to uncommitted changes |
88
+ | Failed | Error during pull/clone |
104
89
 
105
- **Repo-Mapping konfigurieren:** Settings > Repo Mapping > Edit. Dort koennen Repos Domains zugewiesen, ignoriert oder aus der Unmapped-Liste zugeordnet werden.
90
+ **Repo mapping:** Settings > Repo Mapping > Edit. Assign repos to domains, ignore repos, or map unmapped repos.
106
91
 
107
92
  ### Cascade Updates
108
93
 
109
- Propagiert Dependency-Updates automatisch durch die gesamte Abhaengigkeitskette.
94
+ Propagates dependency updates automatically through the entire dependency chain.
95
+
96
+ **Example:** `lib-core` is updated. Cascade automatically updates all dependent packages in the correct order (topologically sorted, layer by layer).
110
97
 
111
- **Beispiel:** `lib-invoice-interface` wird aktualisiert. Cascade aktualisiert automatisch alle abhaengigen Pakete in der richtigen Reihenfolge (topologisch sortiert, Layer fuer Layer).
98
+ **Workflow:**
112
99
 
113
- **Ablauf:**
100
+ 1. Select source repo (e.g. `lib-core`)
101
+ 2. Tool calculates all affected repos in topological order
102
+ 3. Configure options:
103
+ - **Wait for CI** — wait between layers for CI/CD to publish
104
+ - **Run Tests** — run tests before committing
105
+ - **Commit Prefix** — e.g. `deps: ` or `chore: `
106
+ 4. Review the plan and start
114
107
 
115
- 1. Source-Repo auswaehlen (z.B. `lib-invoice-interface`)
116
- 2. Tool berechnet alle betroffenen Repos in topologischer Reihenfolge
117
- 3. Optionen konfigurieren:
118
- - **Wait for CI** - Wartet zwischen Layern auf CI/CD-Publish
119
- - **Run Tests** - Fuehrt `pnpm test` vor dem Commit aus
120
- - **Commit Prefix** - z.B. `deps: ` oder `chore: `
121
- 4. Plan bestaetigen und starten
108
+ ![Cascade Update](https://raw.githubusercontent.com/aikotools/repo-maintenance/main/docs/screenshots/cascade.png)
122
109
 
123
- **Pro Repo wird ausgefuehrt:**
110
+ **Per repo, the cascade executes:**
124
111
 
125
- 1. `package.json` Dependencies aktualisieren
112
+ 1. Update `package.json` dependencies
126
113
  2. `npm install`
127
- 3. Tests (optional)
114
+ 3. Run tests (optional)
128
115
  4. Commit + Push
129
- 5. Auf CI warten (optional) + publishte Version aufloesen
116
+ 5. Wait for CI (optional) + resolve published version
130
117
 
131
- **Steuerung waehrend der Ausfuehrung:** Pause, Resume, Abort, Skip Failed, manuell Version setzen.
118
+ **Controls during execution:** Pause, Resume, Abort, Skip Failed, manually set version.
132
119
 
133
120
  ### Bulk Operations
134
121
 
135
- Beliebige Shell-Befehle ueber mehrere Repos gleichzeitig ausfuehren:
122
+ Run arbitrary shell commands across multiple repos in parallel:
136
123
 
137
- 1. Repos filtern nach Domain, Typ oder Suchbegriff
138
- 2. Befehl eingeben (z.B. `npm run build`, `git status`, `npm test`)
139
- 3. Parallelitaet waehlen (1-20)
140
- 4. Starten - Live-Output pro Repo mit Exit-Code und Dauer
124
+ 1. Filter repos by domain, type, or search term
125
+ 2. Enter a command (e.g. `npm run build`, `git status`, `npm test`)
126
+ 3. Choose concurrency (120)
127
+ 4. Start live output per repo with exit code and duration
128
+
129
+ ![Bulk Operations](https://raw.githubusercontent.com/aikotools/repo-maintenance/main/docs/screenshots/bulk-operations.png)
141
130
 
142
131
  ### Packages (File-URL Management)
143
132
 
144
- Zeigt Repos mit `file:`-Dependencies in `package.json`. Ermoeglicht Batch-Umschaltung zwischen lokalen `file:`-Pfaden (Entwicklung) und npm-Versionen (Produktion).
133
+ Shows repos with `file:` dependencies in `package.json`. Enables batch switching between local `file:` paths (development) and npm versions (production).
145
134
 
146
135
  ### History
147
136
 
148
- Persistente Historie aller Cascade- und Pull-All-Operationen mit Status, betroffenen Repos und Dauer.
137
+ Persistent history of all Cascade and Pull All operations with status, affected repos, and duration.
138
+
139
+ ## Configuration
140
+
141
+ ### Environment (.env)
142
+
143
+ ```bash
144
+ PORT=3100 # Backend port
145
+ VITE_PORT=3101 # Vite dev server port
146
+ NPM_REGISTRY=https://npm.pkg.github.com # npm registry (for Cascade version resolution)
147
+ ```
148
+
149
+ ### Project Settings
150
+
151
+ Configured via the Settings dialog (gear icon) in the UI. Persisted in `.repoMaintenance/project.json`.
149
152
 
150
- ## Datenablage
153
+ ### Data Storage
151
154
 
152
155
  ```
153
156
  .repoMaintenance/
154
- ├── project.json # Projekt-Konfiguration + Repo-Mapping
155
- ├── cached-repos.json # Repo-Cache (fuer schnellen Start)
156
- ├── cached-graph.json # Dependency-Graph Cache
157
- ├── cascade-history/ # Cascade-Ausfuehrungen
158
- └── pull-history/ # Pull-All Ausfuehrungen
157
+ ├── project.json # Project configuration + repo mapping
158
+ ├── cached-repos.json # Repo cache (for fast startup)
159
+ ├── cached-graph.json # Dependency graph cache
160
+ ├── cascade-history/ # Cascade execution logs
161
+ └── pull-history/ # Pull All execution logs
159
162
  ```
160
163
 
161
- ## Scripts
164
+ ## Development
162
165
 
163
- | Script | Beschreibung |
166
+ For contributors working on RepoHub itself:
167
+
168
+ ```bash
169
+ git clone <repo-url>
170
+ cd repo-maintenance
171
+ pnpm install
172
+ cp .env.example .env # Adjust if needed
173
+ pnpm dev # Backend (3100) + Frontend (3101) concurrently
174
+ ```
175
+
176
+ | Script | Description |
164
177
  |--------|-------------|
165
- | `pnpm dev` | Development (Backend + Frontend) |
166
- | `pnpm build` | TypeScript + Vite Build |
167
- | `pnpm start` | Production Server starten |
168
- | `pnpm test` | Tests mit Coverage |
178
+ | `pnpm dev` | Development (backend + frontend) |
179
+ | `pnpm build` | TypeScript + Vite build |
180
+ | `pnpm start` | Start production server |
181
+ | `pnpm test` | Lint + build + depcheck + tests with coverage |
169
182
  | `pnpm lint` | ESLint |
170
183
  | `pnpm format` | Prettier |
171
- | `pnpm depcheck` | Unused Dependencies pruefen |
172
-
173
- ## Architektur
174
-
175
- ```
176
- src/
177
- ├── server/ # Hono + tRPC Backend (Bun Runtime)
178
- │ ├── index.ts # Server Entry Point
179
- │ ├── services/ # Business Logic
180
- │ │ ├── repo-scanner.ts # Scannt repo/ nach Packages
181
- │ │ ├── dependency-resolver.ts # Baut Dependency-Graph
182
- │ │ ├── cascade-service.ts # Cascade-Update Orchestrierung
183
- │ │ ├── bulk-service.ts # Bulk-Command Ausfuehrung
184
- │ │ ├── git-service.ts # Git-Operationen (simple-git)
185
- │ │ ├── pull-all-service.ts # Pull/Clone aller Repos
186
- │ │ ├── package-service.ts # file: URL Management
187
- │ │ ├── task-queue.ts # Paralleler Task-Executor
188
- │ │ └── config-service.ts # Config + Cache Persistenz
189
- │ └── trpc/ # tRPC Router + Procedures
190
- │ ├── router.ts
191
- │ └── procedures/
192
- │ ├── project.ts # Projekt-Konfiguration
193
- │ ├── repos.ts # Repo-Liste / Refresh
194
- │ ├── git.ts # Git-Operationen
195
- │ ├── cascade.ts # Cascade-Updates
196
- │ ├── bulk.ts # Bulk-Operationen
197
- │ ├── dependencies.ts # Dependency-Graph
198
- │ └── package.ts # Package-Management
199
- ├── client/ # React Frontend
200
- │ ├── main.tsx # App Entry Point
201
- │ ├── App.tsx # Root-Komponente
202
- │ ├── trpc.ts # tRPC Client Setup
203
- │ └── components/
204
- │ ├── layout/ # AppLayout, Sidebar, StatusBar
205
- │ ├── dashboard/ # Dashboard-Ansicht
206
- │ ├── repo-detail/ # Repository-Detail
207
- │ ├── graph/ # Dependency-Graph (React Flow)
208
- │ ├── cascade/ # Cascade Planner & Monitor
209
- │ ├── bulk/ # Bulk-Operationen
210
- │ ├── history/ # History-Ansicht
211
- │ ├── packages/ # File-URL Ansicht
212
- │ ├── settings/ # Settings + Repo-Mapping Dialog
213
- │ └── shared/ # Shared Components
214
- └── shared/ # Shared Types (Server + Client)
215
- └── types.ts
216
- ```
184
+ | `pnpm depcheck` | Check for unused dependencies |
217
185
 
218
186
  ## Tech Stack
219
187
 
220
- | Komponente | Technologie |
221
- |------------|-------------|
222
- | Backend | Bun + Hono + tRPC |
188
+ | Component | Technology |
189
+ |-----------|------------|
190
+ | Backend | Node.js + Hono + tRPC |
223
191
  | Frontend | React 19 + Vite + Tailwind CSS 4 |
224
- | State | TanStack Query (Polling fuer Live-Updates) |
192
+ | State | TanStack Query (polling for live updates) |
225
193
  | Graph | React Flow (@xyflow/react) |
226
194
  | Git | simple-git |
227
195
  | Icons | Lucide React |
196
+
197
+ ## License
198
+
199
+ MIT