docs: add project manifest and planning docs (batch 0)
This commit is contained in:
parent
8c0a196f69
commit
0f50db1e9c
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Pipeline — Development Log
|
||||||
|
|
||||||
|
## 2026-05-19 — Project Initialized (Ripley)
|
||||||
|
- Created Forgejo repo `null/Pipeline`
|
||||||
|
- Copied Mission Control v0.0.4 codebase as base
|
||||||
|
- Set up dev branch, pushed to origin
|
||||||
|
- Created PROJECT.md, FUTURE.md, HISTORY.md, STRUCTURE.md
|
||||||
|
- Next: Phase 1 — Forgejo API integration backend
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
# Pipeline — Up Next
|
||||||
|
|
||||||
|
## Phase 1: Backend — Forgejo API Integration
|
||||||
|
- [ ] Forgejo API client service (`backend/app/services/forgejo/`)
|
||||||
|
- [ ] DB models: `ForgejoRepo`, `ForgejoIssue`, `ForgejoLabel`
|
||||||
|
- [ ] Alembic migration for new models
|
||||||
|
- [ ] API endpoints: `/api/v1/forgejo/repos`, `/api/v1/forgejo/issues`
|
||||||
|
- [ ] Config: `FORGEJO_URL`, `FORGEJO_TOKEN`, `FORGEJO_REPOS` env vars
|
||||||
|
- [ ] On-demand sync endpoint: `POST /api/v1/forgejo/sync`
|
||||||
|
- [ ] Scheduled sync (background task or cron)
|
||||||
|
|
||||||
|
## Phase 2: Frontend — Issues Panel
|
||||||
|
- [ ] New "Issues" sidebar link and route
|
||||||
|
- [ ] Issue list page with repo/label/priority filters
|
||||||
|
- [ ] Issue detail page
|
||||||
|
- [ ] "Create Task from Issue" button
|
||||||
|
|
||||||
|
## Phase 3: Task Integration
|
||||||
|
- [ ] Link tasks to Forgejo issues (foreign key on task)
|
||||||
|
- [ ] Task detail view shows linked issue info
|
||||||
|
- [ ] Dashboard issue count widgets
|
||||||
|
|
||||||
|
## Phase 4: Polish
|
||||||
|
- [ ] Forgejo webhook for real-time updates
|
||||||
|
- [ ] Issue status sync (open/closed)
|
||||||
|
- [ ] Auto-archive closed issues
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Pipeline — Version History
|
||||||
|
|
||||||
|
## v0.0.1 — 2026-05-19
|
||||||
|
- **Base:** Forked from openclaw-mission-control v0.0.4
|
||||||
|
- **Repo:** Created on Forgejo (`null/Pipeline`)
|
||||||
|
- **Project:** Initialized with Forgejo issue integration plan
|
||||||
|
- **Status:** Codebase copied, not yet modified
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
# Pipeline — Project Manifest
|
||||||
|
|
||||||
|
**What:** Mission Control fork with Forgejo issue integration. Single pane of glass for project management — pull issues from our Forgejo repos, view them alongside MC tasks, and create work from them.
|
||||||
|
|
||||||
|
**Why:** Stop bouncing between Forgejo and MC. Issues live in Forgejo, work lives in MC. Pipeline bridges them.
|
||||||
|
|
||||||
|
**Stack:** Python/FastAPI (backend) + Next.js 15 (frontend) + PostgreSQL 16 + Redis 7 + Docker Compose
|
||||||
|
**Base:** Forked from `abhi1693/openclaw-mission-control` v0.0.4
|
||||||
|
**Remote:** `ssh://forgejo/null/Pipeline.git` | **Branches:** main (stable), dev (working)
|
||||||
|
**Ports:** 3030 (frontend), 8001 (backend), 5433 (postgres), 6379 (redis)
|
||||||
|
**Auth:** Local mode, token in .env
|
||||||
|
|
||||||
|
## Architecture Decisions
|
||||||
|
|
||||||
|
1. **Forgejo issues are read-only in Pipeline** — Forgejo is the source of truth for issue content. Pipeline mirrors them for display and creates MC tasks linked to them. No bidirectional sync.
|
||||||
|
2. **"Create Task from Issue" flow** — User selects a Forgejo issue, Pipeline creates an MC task with a foreign key back to the issue. Task status is managed in Pipeline; issue content stays in Forgejo.
|
||||||
|
3. **No new languages** — Python/FastAPI on backend, TypeScript/Next.js on frontend. Same as base MC.
|
||||||
|
|
||||||
|
## Configured Forgejo Repos
|
||||||
|
|
||||||
|
| Repo | Forgejo URL | Issues |
|
||||||
|
|------|-------------|--------|
|
||||||
|
| BillTracker | `null/BillTracker` | 34 |
|
||||||
|
| Queue-North-Website | `null/Queue-North-Website` | 7 |
|
||||||
|
| Mission-Control | `null/Mission-Control` | 0 |
|
||||||
|
| relationship-app | `null/relationship-app` | 0 |
|
||||||
|
| Pipeline | `null/Pipeline` | 0 |
|
||||||
|
|
||||||
|
## Phase Plan
|
||||||
|
|
||||||
|
### Phase 1: Backend — Forgejo API Integration
|
||||||
|
- Forgejo API client service (fetch repos, issues, labels)
|
||||||
|
- New DB models: `ForgejoRepo`, `ForgejoIssue` (cached mirrors)
|
||||||
|
- API endpoints: `/api/v1/forgejo/repos`, `/api/v1/forgejo/issues`
|
||||||
|
- Config: which repos to track (env vars or DB settings)
|
||||||
|
- Scheduled sync (pull issues on interval or on-demand)
|
||||||
|
|
||||||
|
### Phase 2: Frontend — Issues Panel
|
||||||
|
- New "Issues" page in the dashboard sidebar
|
||||||
|
- Issue list view (filterable by repo, label, priority)
|
||||||
|
- Issue detail view with "Create Task from Issue" button
|
||||||
|
- Link from tasks back to Forgejo issues
|
||||||
|
|
||||||
|
### Phase 3: Task Integration
|
||||||
|
- "Create Task from Issue" creates an MC task linked to the Forgejo issue
|
||||||
|
- Task detail view shows linked Forgejo issue info
|
||||||
|
- Dashboard shows issue counts alongside task counts
|
||||||
|
|
||||||
|
### Phase 4: Polish
|
||||||
|
- Webhook support for real-time Forgejo issue updates
|
||||||
|
- Issue status badges (open/closed) synced
|
||||||
|
- Auto-archive closed issues
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
# Pipeline — Directory Structure
|
||||||
|
|
||||||
|
## Agent Ownership
|
||||||
|
|
||||||
|
| Agent | Owns |
|
||||||
|
|-------|------|
|
||||||
|
| **Neo** | `backend/` — all Python/FastAPI code, models, services, API routes, migrations |
|
||||||
|
| **Scarlett** | `frontend/` — all React/Next.js/TypeScript code, components, pages, styles |
|
||||||
|
| **Private_Hudson** | Security review of all code before merge |
|
||||||
|
| **Bishop** | Build verification, docs, version bumps |
|
||||||
|
|
||||||
|
## Key Directories
|
||||||
|
|
||||||
|
```
|
||||||
|
Pipeline/
|
||||||
|
├── backend/
|
||||||
|
│ ├── app/
|
||||||
|
│ │ ├── api/ # FastAPI route handlers (Neo)
|
||||||
|
│ │ ├── core/ # Config, auth, security (Neo)
|
||||||
|
│ │ ├── db/ # DB session, CRUD, pagination (Neo)
|
||||||
|
│ │ ├── models/ # SQLModel/SQLAlchemy models (Neo)
|
||||||
|
│ │ ├── schemas/ # Pydantic schemas (Neo)
|
||||||
|
│ │ └── services/ # Business logic services (Neo)
|
||||||
|
│ │ └── forgejo/ # NEW — Forgejo API client (Neo)
|
||||||
|
│ └── migrations/ # Alembic migrations (Neo)
|
||||||
|
├── frontend/
|
||||||
|
│ ├── src/
|
||||||
|
│ │ ├── api/ # API client code (auto-generated + manual)
|
||||||
|
│ │ ├── app/ # Next.js App Router pages (Scarlett)
|
||||||
|
│ │ ├── components/ # React components (Scarlett)
|
||||||
|
│ │ └── lib/ # Utilities, hooks (Scarlett)
|
||||||
|
│ └── ...
|
||||||
|
├── compose.yml # Docker Compose (shared)
|
||||||
|
├── PROJECT.md # This project's manifest
|
||||||
|
├── FUTURE.md # What's next
|
||||||
|
├── HISTORY.md # What shipped
|
||||||
|
├── STRUCTURE.md # This file
|
||||||
|
└── DEVELOPMENT_LOG.md # Agent activity log
|
||||||
|
```
|
||||||
|
|
||||||
|
## Cross-Cutting Concerns
|
||||||
|
- **Forgejo API client** — `backend/app/services/forgejo/` handles all Forgejo communication
|
||||||
|
- **Issue-to-Task linking** — Task model gets `forgejo_issue_id` field, backend handles the join
|
||||||
|
- **Frontend issue pages** — New routes under `/issues/` in Next.js App Router
|
||||||
Loading…
Reference in New Issue