Update — PATCH /{prID} edits title and/or body, validates title non-empty, returns prWithReviewers
Reopen — POST /{prID}/reopen transitions closed → open, fires webhook
Close now returns prWithReviewers and fires a webhook
Merge already existed; no changes needed
Frontend — PRDetailPage.tsx full rewrite:
Inline title editing — pencil icon (visible to author/admin when open), Enter to save, Esc to cancel
Inline body editing — same pattern in the description panel
Merge sidebar — radio buttons for allowed strategies (fetched from repo's merge strategy settings), "Merge pull request" button in Bitbucket purple, "Close without merging" below it
Status banner — merged (purple) or closed (grey) with the date, shown below the description
File list — scrollable +N −N table above the diff viewer showing all changed files with addition/deletion counts
Reopen button — appears in the sidebar when the PR is closed
Reviewers panel — lists assigned reviewers with avatars/initials
Details panel — from/into branches, opened date, last updated
Quick links — back to all PRs, open new PR
PRsPage.tsx — now shows real data:
Two tabs: "My pull requests" and "Awaiting my review" (with live counts from dashboard)
Per-repo quick links at the bottom showing open PR count badges
ForgeBucket 🛡️🪣
Sovereign Federation meets Enterprise Design.
ForgeBucket is a production-ready, federated git collaboration platform. It combines the high-performance, lightweight Go engine of Forgejo with the sophisticated, high-density UI/UX of Bitbucket, optimized for a "Responsive-First, Access Anywhere" experience.
🚀 The Vision
ForgeBucket aims to provide developers with a world-class code review and project management experience without sacrificing data sovereignty. It bridges the gap between community-driven open-source software and enterprise-grade usability.
- Engine: Built on the Forgejo/Gitea ecosystem.
- Interface: Powered by Atlassian Design System (ADS) principles.
- Connectivity: Full ActivityPub (ForgeFed) integration for a decentralized git world.
🛠️ Tech Stack
Backend & Core
- Language: Go (Golang) 1.21+
- Database: PostgreSQL with XORM
- Git Engine: Native System Git Binary execution
- CI/CD: Forgejo Actions (gRPC protocol)
Frontend & UX
- Framework: React 18+ (Embedded in Go binary)
- Styling: Tailwind CSS + Atlassian Design Tokens
- Components: Custom implementation of Atlaskit primitives
- Real-time: WebSockets for live logs and notifications
✨ Key Features
- Responsive Navigation: A triple-state sidebar (Expanded, Collapsed, Mobile Bottom-Bar) that adheres to an 8px grid system.
- Advanced Diff Viewer: Side-by-side and unified views with "Bottom Sheet" comment overlays for mobile code reviews.
- Federated Pull Requests: Interaction across different ForgeBucket/Forgejo instances via ActivityPub.
- AGit "Quick Edit": Web-based file editing with automatic
refs/for/branch creation for instant PRs. - Skeleton Loading: Optimized "Perceived Performance" using pulsate loading states for metadata.
🔒 Security & Compliance
- OWASP Top 10 Compliance: Strict protection against XSS, CSRF, and SQLi.
- Command Sanitization: Hardened wrapper for all Git binary executions.
- Identity: OIDC and OAuth2 support with Row-Level Security (RLS) mentalities.
- Auditability: Full logging of all administrative and git-over-HTTP actions.
🏁 Getting Started
Prerequisites
- Go 1.21 or higher
- Node.js 18+ (for frontend development)
- PostgreSQL 14+
- System Git 2.20+
Installation
- Clone the repository:
git clone [https://github.com/your-repo/forgebucket.git](https://github.com/your-repo/forgebucket.git)
cd forgebucket
- Setup Frontend:
cd frontend
npm install
npm run build
- Build the Binary:
cd ..
go build -o forgebucket main.go
- Run:
./forgebucket web
🤝 Contributing
We follow the "Responsive-First" contribution model. Please ensure all UI changes are tested on both Desktop (1440px) and Mobile (375px) breakpoints.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details. Portions of the code are derived from Forgejo (GPLv3).