No task waits on a Codex review; the redesign tasks are confirmed on the product owner's Z Fold7; TASK-016's leftovers are on hold; no biometric reauthentication. Agent: main (opus) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.8 KiB
Product brief
Purpose
UBGitea gives employees a focused Android experience for the company Gitea instance without attempting to reproduce every web feature.
Its main use is watching what the team is doing: who pushed what where, which pull requests and issues are open, and what is waiting on the person holding the phone. Reading code and changes comes second, and is built for finding the part that matters rather than for reading a file from the top.
MVP outcomes
- Sign in through Gitea OAuth 2.0 with PKCE.
- View the signed-in user and organizations.
- Browse accessible repositories, branches, directories, and files.
- View issues, pull requests, and notifications.
- See team activity and the work waiting on the signed-in account, across repositories.
- Sign out and remove locally stored credentials.
Repository browsing experience
Within the permissions of the signed-in Gitea account, the application must support:
- Listing organizations and repositories with pagination.
- Listing every branch and tag visible to the account.
- Browsing a repository tree at an explicit branch, tag, or commit.
- Viewing text source with the selected ref and path always visible.
- Viewing commit history and per-commit file changes.
- Viewing pull requests, issues, reviews, comments, and notifications.
Binary files, Git LFS pointers, submodules, and files too large for safe mobile rendering require an explicit fallback rather than being decoded as ordinary source text.
The first release is read-oriented. Creating, merging, deleting, or administering resources is out of scope until explicitly approved. The one approved write is starring and un-starring a repository for the favorites list, which is why sign-in requests the write:user and write:repository scopes (see ADR-004 and TASK-033).
UX principles
- Korean-first copy with a structure that permits localization.
- Clear loading, empty, offline, authentication-expired, and server-error states.
- Never obscure which Gitea instance and account are active.
- Require confirmation before any future destructive or irreversible operation.
Non-goals for MVP
- Editing source files
- Git clone/push over SSH
- Repository or account administration
- Gitea Actions runner administration
- Package publishing
- Multiple Gitea instances
- Creating or editing files, pushing commits, merging, deleting branches, or administering repositories
Product decisions
- Android application ID:
com.ubisam.ubgitea(see ADR-001) - Minimum supported version: Android 9, API 28 (see ADR-001)
- Visual identity, icon, and color palette: bright sky blue + white, the blue of the UbiSam wordmark, with the wordmark at the top-left of every tab; the same design in dark mode (see TASK-050, which supersedes TASK-045's palette)
- Navigation: four tabs -- 홈, 저장소, 작업, 알림 -- at the bottom, or down the left edge from 600dp wide (see TASK-050)
- The theme follows the system unless the user chooses light or dark in settings (see TASK-055)
- Home can be narrowed to starred repositories, and remembers the choice (see TASK-055)
- Source highlighting follows Visual Studio's default colors; the code background follows the app theme rather than having a theme of its own (see TASK-053)
- Windows 600dp and wider -- an unfolded Z Fold, a phone on its side -- get two-pane layouts (see TASK-054)
- Repositories are cached for offline browsing at the list level only (branches/files inside a repository are not cached); see TASK-044
- Comparing branches and commits was removed from the history screen in TASK-024
- The team mainly reads C# and C++; source viewing is tuned for those first (see TASK-049, TASK-053, TASK-054)
- No biometric reauthentication; the app relies on the device lock and the OAuth session (decided 2026-09-29)
Open product decisions
- None