Ubisam-MobileGit/docs/product.md
choiminyeong d1a45abc16 TASK-050..054: tabs, Home, Work, code viewer, C++ pairs, fold layouts
Four tabs in an app shell that becomes a rail from 600dp, a brighter sky-blue palette with the real UbiSam logo, a Home tab built on Gitea's activity feeds, a Work tab that searches issues and pull requests across repositories, a full-screen code viewer with search, outline and Visual Studio colors, C/C++ header/source pairing, and two-pane layouts for wide windows.

The five tasks were built and checked together, so they are one commit: MainActivity, the routes and the shared components belong to all of them. 409 unit tests pass, lint reports 0 errors. Verified on an emulator up to the sign-in screen only; no physical device was available.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-28 14:35:00 +09:00

3.5 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

  1. Sign in through Gitea OAuth 2.0 with PKCE.
  2. View the signed-in user and organizations.
  3. Browse accessible repositories, branches, directories, and files.
  4. View issues, pull requests, and notifications.
  5. See team activity and the work waiting on the signed-in account, across repositories.
  6. 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)
  • 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)

Open product decisions

  • Whether biometric reauthentication is required