OpenCodeHub — Self-Hosted GitHub UI Overhaul Plan (UIPLAN.md)
Objective: Completely refactor and elevate OpenCodeHub into an authentic, pixel-perfect self-hosted GitHub platform inspired by the minimalist, high-contrast, black-and-white monochrome aesthetic of Ryoku and the exact GitHub profile layout provided in the reference screenshot.
1. System Vision & Landing Page Paradigm
┌─────────────────────────────────────────────────────────────────────────────┐
│ GLOBAL HEADER & SERVER NAVIGATION │
│ [Logo] [User/Org Switcher] [Search: Type / to search] [+] [PRs] [🔔] [Avatar]│
├─────────────────────────────────────────────────────────────────────────────┤
│ [Overview] [Repositories 87] [Projects] [Packages] [Stars 50] │
├───────────────────────────────┬─────────────────────────────────────────────┤
│ LEFT SIDEBAR (PROFILE) │ RIGHT MAIN CONTENT COLUMN │
│ │ │
│ ┌─────────────────────────┐ │ ┌───────────────────────────────────────┐ │
│ │ Big Avatar (Circle) │ │ │ swadhinbiswas / readme.md │ │
│ │ + Status Badge (💭) │ │ │ │ │
│ └─────────────────────────┘ │ │ [Rich Rendered Markdown Profile] │ │
│ Name: Swadhin Biswas │ │ - Role badges │ │
│ User: swadhinbiswas · he/him │ │ - Project showcase table │ │
│ [Follow/Edit] [💖 Sponsor] │ │ - Social contact pills │ │
│ Bio: MLOps & Data Engineer.. │ └───────────────────────────────────────┘ │
│ 👥 94 followers · 116 following│ │
│ │ ┌───────────────────────────────────────┐ │
│ 🏢 @TheOpenCodeHub │ │ Pinned Repositories (2-Column Grid) │ │
│ 📍 Dhaka, Bangladesh │ │ ┌─────────────────┐ ┌───────────────┐ │ │
│ 🕒 16:55 (Local Time) │ │ │ opengrammar │ │ FAANG-Playbook│ │ │
│ ✉️ [email protected]│ │ │ TypeScript ★115│ │ Astro ★36 │ │ │
│ 🔗 https://swadhin.cv │ │ └─────────────────┘ └───────────────┘ │ │
│ Socials: X, LinkedIn, HF... │ └───────────────────────────────────────┘ │
│ │ │
│ 🏆 Achievements Badges │ ┌───────────────────────────────────────┐ │
│ ⭐ Highlights (PRO) │ │ 365-Day Contribution Calendar Heatmap │ │
│ 🏛️ Organizations Grid │ │ 6,870 contributions in 2026 │ │
│ │ │ [52 Weeks x 7 Days Grid] [Years Tabs] │ │
│ [Block or report user] │ └───────────────────────────────────────┘ │
└───────────────────────────────┴─────────────────────────────────────────────┘
1.1 Self-Hosted Landing Page Philosophy
On a self-hosted Git platform, visitors and users should not see a generic SaaS marketing page. Instead:
- Root URL (
/): Directly renders the Primary Server User Profile (or primary organization / logged-in user dashboard), complete with:- Profile Header & Tabs (
Overview,Repositories,Projects,Packages,Stars) - Left Profile Dossier (Avatar, bio, followers, metadata, achievements, orgs)
- Profile README (
{username}/README.mdfrom{username}/{username}repo) - Pinned Repositories grid
- 365-Day Contribution Heatmap & activity timeline
- Server User & Organization Directory Bar: Quick discovery and switcher for all users and organizations hosted on this server instance.
- Profile Header & Tabs (
- User Profile URL (
/[owner]): Renders the exact same GitHub-authentic profile for any user or organization on the server. - Repository Workspace (
/[owner]/[repo]): Clean GitHub-style sub-nav (Code,Issues,Pull Requests,Actions,Merge Queue,Wiki,Security,Settings) with Ryoku-styled monochrome file browser, commit history, and Markdown view.
2. Design Tokens & Visual Hierarchy (Ryoku Monochrome)
2.1 CSS Color Tokens (src/styles/globals.css)
/* Ryoku High-Contrast Monochrome */
:root {
--background: 0 0% 100%;
--foreground: 0 0% 9%;
--card: 0 0% 98%;
--card-foreground: 0 0% 9%;
--border: 0 0% 89%;
--input: 0 0% 89%;
--ring: 0 0% 9%;
--radius: 0.375rem;
}
.dark {
--background: 0 0% 3.5%; /* #09090b - Obsidian void */
--foreground: 0 0% 98%; /* #fafafa - Crisp white text */
--card: 0 0% 5.5%; /* #0e0e11 - Elevated container */
--card-foreground: 0 0% 98%;
--popover: 0 0% 5.5%;
--popover-foreground: 0 0% 98%;
--primary: 0 0% 98%; /* Pure white primary button/accent */
--primary-foreground: 0 0% 9%; /* Dark text on white */
--secondary: 0 0% 10%; /* #1a1a1e - Subtle background */
--secondary-foreground: 0 0% 98%;
--muted: 0 0% 10%;
--muted-foreground: 0 0% 60%; /* #999999 - Subdued metadata */
--accent: 0 0% 12%;
--accent-foreground: 0 0% 98%;
--border: 0 0% 14%; /* 1px precision hairline border */
--input: 0 0% 14%;
--ring: 0 0% 98%;
--radius: 0.375rem;
}
3. Component Architecture & Modular Breakdown
3.1 Global Header (src/components/layout/Header.astro)
- Sleek sticky glass navbar (
backdrop-blur-md bg-background/90 border-b border-border). - Left: GitHub / OpenCodeHub mark + Server instance badge (
Self-Hosted) + Quick User/Org switcher dropdown. - Center/Right: Search bar (
Type / to searchwith⌘Ktrigger),+create dropdown (New repo, new org), Issues icon, Pull Requests icon, Notifications inbox icon with unread badge, and User Avatar menu.
3.2 User Profile Component (src/components/profile/UserProfileView.astro)
A unified, highly reusable component powering both / (landing page) and /[owner] (profile page):
Sub-Navigation Tabs:
Overview(active indicator)Repositories(with live count badge)ProjectsPackagesStars(with live star count badge)
Left Profile Sidebar (Dossier):
- Avatar Frame:
296x296pxround avatar with status indicator badge (💭). - Identity: Large display name (
text-2xl font-bold), username (text-xl text-muted-foreground font-light), pronouns (he/him). - Actions:
Edit profile(if logged in owner) or dual buttonsFollow/Unfollow+💖 Sponsor. - Bio: Full markdown/text bio with auto-linking.
- Follower Counter:
👥 94 followers · 116 following. - Metadata Details:
- Organization / Company link (
@TheOpenCodeHub) - Location pin (
Dhaka, Bangladesh) - Local time calculator based on timezone / offset
- Verified email mailto link
- Portfolio / Website URL
- Social links list (X / Twitter, LinkedIn, Hugging Face, ORCID, GitHub)
- Organization / Company link (
- Achievements Shelf: Interactive badges (
Pull Shark,Quickdraw,YOLO,Galaxy Brain,Starstruck). - Highlights Shelf:
PROmember badge. - Organizations Shelf: Grid of organization avatar icons with tooltips.
- Footer Action: "Block or report user".
- Avatar Frame:
Right Main Column:
- Profile README (
{username} / readme.md):- Header ribbon with file icon and repository source link.
- Rich GitHub-flavored markdown renderer with HTML tables, badge shields, social contact buttons, images, and code blocks.
- Pinned Repositories (2-Column Grid):
- Header:
Pinned+ "Customize your pins" link for owner. - Pinned cards: Repo icon, Name,
Publicbadge pill, Description, Language color indicator, Star count, Fork count.
- Header:
- 365-Day Contribution Calendar Heatmap:
- Annual contributions summary banner (
6,870 contributions in 2026). - 52-week x 7-day grid with month headers, day labels, high-contrast monochrome/emerald cells, and hover tooltip.
- Multi-year switcher tabs on the right (
2026,2025,2024, etc.). - Contribution activity timeline below the calendar.
- Annual contributions summary banner (
- Profile README (
4. Implementation Steps
| Step | Action Item | Target Files |
|---|---|---|
| 1. Theming & Tokens | Update global CSS variables for Ryoku monochrome aesthetic | src/styles/globals.css, tailwind.config.mjs |
| 2. Core Profile Components | Create dedicated GitHub profile components | src/components/profile/UserProfileView.astrosrc/components/profile/ProfileReadme.astrosrc/components/profile/PinnedRepos.astrosrc/components/profile/ContributionCalendar.astro |
| 3. Landing Page Transformation | Wire root / to display the primary server user profile with instance switcher |
src/pages/index.astro |
| 4. User Profile Page Polish | Wire /[owner]/index.astro to use the unified UserProfileView |
src/pages/[owner]/index.astro |
| 5. Header & Shell Refactor | Update top navbar with GitHub layout, search, and user dropdown | src/components/layout/Header.astro, src/layouts/BaseLayout.astro |
| 6. Verification & Test Suite | Run typecheck, unit tests, and layout responsiveness checks | npm run typecheck, npm test |
Plan updated and ready to execute.