LIVE
IDLEAwaiting updates…
LexCorp

GappHub

LexCorp portfolio launcher — phone-style app grid with boot splash and app-store-style detail drawers linking out to portfolio products

ShippedLexCorp
Key metrics

Metrics being defined

Competitive Intel

0 entries

No competitive intel entries for this product yet.

Research Hub

0 types

No research documents for this product yet.

Roadmap

176 items
Planned50
"No apps found" shows for empty search results
`/` plays the selected boot screen animation sequence as specified
`/gtm` - create `research/gtm.md` because it is missing; after `/positioning` and `/journey-map`.
`/landing-copy` - create `research/landing-copy.md` because it is missing; after `/positioning` and `/journey-map`. Relevant: the site itself is the landing experience.
`/metrics` - create `research/metrics.md` because it is missing; after `/journey-map`.
`/monetization` - create `research/monetization.md` because it is missing; after `/icp` and `/competitive-analysis`. Note: GappHub is a portfolio launcher, not a revenue product — this may be minimal or N/A.
All text/background combinations pass WCAG AA contrast (4.5:1)
Animations feel smooth at 60fps with no visible jank
App deploys to Vercel successfully
App gracefully falls back to `products.json` when fetch fails (no error visible to user)
Arrow keys navigate between pages
Arrow keys navigate the icon grid spatially
Badge legend renders below the phone with all four states + deprecated example
Badges render in correct colors with white letter, positioned at icon top-right with white border
Clicking an icon opens the product URL in a new tab
Comparison variants were evaluated before selection
Data fetches from configured URL when available
Deprecated icons are visually grayed out and dimmed
Deprecated products render at the end of the sort order
Dock renders with frosted glass effect and 4 pinned app icons
Dock stays fixed across page swipes
Escape or tap-outside dismisses search
Grid renders 24 icons correctly inside the phone frame with proper spacing
Home indicator renders at the bottom of the screen area
Icons display placeholder artwork, product name, and truncate long names with ellipsis
Icons scale up on hover and press-in on click with smooth transitions
Keyboard focus shows visible blue outline ring
Legend badges show tooltip descriptions on hover
Lexcorp placeholder logo and tagline are visible above the phone
Mobile uses simplified frame without realistic bezel details
Next.js app builds and runs locally with `npm run dev`
Obsolete comparison routes are removed
Page background is the specified silver-to-white gradient
Page dots render correctly, highlighting the active page
Phone frame renders at correct proportions (~375×812 screen area) with visible Dynamic Island, bezel, and 3D shadow
Phone frame renders correctly at desktop, tablet, mobile, and wide desktop breakpoints
Products sort according to the priority layout rules
Pull-down gesture reveals search bar
Reduced motion disables all animations and transitions
Reduced motion preference disables all animations, replacing with a quick opacity fade
Screen reader announces icon names, states, and "opens in new tab"
Status bar displays current real-world time on the left
Swiping horizontally navigates between icon pages with smooth transition
Tab key navigates through all interactive elements in logical order
The selected route ends at the identical final state (fully rendered phone with icons)
Tooltips appear on hover after 400ms delay with product description text
Touch targets meet 44×44px minimum on mobile viewports
Typing in search filters icons in real-time by name, badge, and tags
Visual output matches spec across all breakpoints
Wallpaper gradient is visible behind the (empty) screen area
Done126
"No apps found" shows for empty search results
"Open" CTA button in the drawer header opens the product URL in a new tab
[src/app/globals.css:109-124] — Reduced motion CSS selectors target `a` elements but icons are `<button>` since Phase 7. Changed `a` → `button` in all rule blocks. Updated test assertions. (2026-05-28)
[src/components/AppIcon.tsx + AppStoreDrawer.tsx] — Extracted shared constants and helpers into `src/lib/icon-utils.ts`. (2026-05-28)
[src/components/AppIcon.tsx:6, src/components/AppStoreDrawer.tsx:7] — Replaced `import * as icons` barrel import with explicit map of 34 used icons in `src/lib/icon-utils.ts`. (2026-05-28)
[src/lib/products.ts:52-58] — `sortProducts` omits `byBadge("N")`. Added `...byBadge("N")` between `byBadge("B")` and `byBadge("C")`. (2026-05-28)
**#1 War Room** (`war-room`) — longDescription added
**#10 gBlockParty** (`gblockparty`) — longDescription added
**#11 PulseBoard** (`pulseboard`) — longDescription added
**#12 Metternich Engine** (`metternich-engine`) — longDescription added
**#13 WarranIT** (`warranit`) — longDescription added
**#14 FormForge** (`formforge`) — longDescription added
**#15 SnipVault** (`snipvault`) — longDescription added
**#16 DriftLog** (`driftlog`) — longDescription added
**#17 Poketo** (`poketo`) — longDescription added
**#18 Poke CRM** (`poke-crm`) — longDescription added
**#19 Poke Growth** (`poke-growth`) — longDescription added
**#2 GSkillPacks** (`gskillpacks`) — longDescription added
**#20 CheckGres** (`checkgres`) — longDescription added
**#21 GIGACHADD** (`gigachadd`) — longDescription added
**#22 Spellbook OS** (`spellbook-os`) — longDescription added
**#23 Moltke** (`moltke`) — longDescription added
**#24 SpaceNext** (`spacenext`) — longDescription added
**#25 B4** (`b4`) — longDescription added
**#26 Boston Founder Radio** (`boston-founder-radio`) — longDescription added
**#27 PMF Hunt** (`pmfhunt`) — longDescription added
**#28 Loadoutworks** (`loadoutworks`) — longDescription added
**#29 Sanctum** (`spellbook-sanctum`) — longDescription added
**#3 Pitwall** (`pitwall`) — longDescription added
**#30 Foresight** (`spellbook-foresight`) — longDescription added
**#31 Prism** (`spellbook-prism`) — longDescription added
**#32 Ritual** (`spellbook-ritual`) — longDescription added
**#33 Portals** (`spellbook-portals`) — longDescription added
**#34 Scry** (`spellbook-scry`) — longDescription added
**#35 Compile** — All longDescription values applied to `public/data/products.json`
**#4 Bismarck AI** (`bismarck-ai`) — longDescription added
**#5 Draft Stonk** (`draft-stonk`) — longDescription added
**#6 calcLLM** (`calc-llm`) — longDescription added
**#7 Next Level Startup** (`next-level-startup`) — longDescription added
**#8 VectorFit** (`vectorfit`) — longDescription added
**#9 JIT Life OS** (`jit-life-os`) — longDescription added
`/` plays the selected boot screen animation sequence as specified
`/competitive-analysis` - `research/competitive-analysis.md` exists; shipped alignment summary page at `alignment/icp.html` (2026-05-21).
`/icp` - `research/icp.md` exists; shipped alignment summary page at `alignment/icp.html` (2026-05-21).
`/journey-map` - create `research/journey-map.md` because it is missing; after `/icp`. Completed 2026-05-22.
`/positioning` - create `research/positioning.md` because it is missing; after `/icp` and `/competitive-analysis`. Completed 2026-05-22.
`/reconcile-dev-docs fix tasks` - reconcile task docs because `tasks/manual-todo.md` header still says "All 6 implementation phases complete (2026-05-15)" but Phase 7 is now complete; also verify phase archive completeness (no `tasks/phases/phase-7.md`). Completed 2026-05-20.
`/research-roadmap` - documentation scan completed (2026-05-19).
`/spec-drift fix all` - update `specs/drift-report.md` because it was last updated 2026-05-18 09:59 but 7 source commits landed after that date (Phase 7 App Store Drawer implementation + Dynamic Island flicker fix). Completed 2026-05-19.
`$investigate` / `$ship` - align and implement single paged grid search model so search filters the same horizontal app grid while preserving page dots and swipes (2026-05-22).
All acceptance criteria above checked
All existing tests pass (no regressions)
All phase tests pass
All phase tests pass
All phase tests pass
All phase tests pass
All phase tests pass
All phase tests pass
All phase tests pass
All text/background combinations pass WCAG AA contrast (4.5:1)
Animations feel smooth at 60fps with no visible jank
App deploys to Vercel successfully
App gracefully falls back to `products.json` when fetch fails (no error visible to user)
Arrow keys navigate between pages
Arrow keys navigate the icon grid spatially
Badge legend renders below the phone with all four states + deprecated example
BadgeLegend deprecated icon — replaced black square SVG with grayscale squircle matching grid icon style.
Badges render in correct colors with white letter, positioned at icon top-right with white border
Clicking an icon opens the product URL in a new tab
Comparison variants were evaluated before selection
Data fetches from configured URL when available
Dead animation variants — removed SlidePhoneContent, AssemblePhoneContent, related types/state/effects. Simplified Variant type to `"none" | "boot"`.
Deprecated icons are visually grayed out and dimmed
Deprecated products render at the end of the sort order
Dock renders with frosted glass effect and 4 pinned app icons
Dock stays fixed across page swipes
Drawer animates smoothly (Framer Motion slide-up, ~300ms)
Drawer displays app icon (72px), name with badge dot, and description
Drawer has `role="dialog"` and `aria-modal="true"`
Escape key closes the drawer and returns focus to the triggering icon
Escape or tap-outside dismisses search
Focus is trapped within the drawer while open
Grid renders 24 icons correctly inside the phone frame with proper spacing
Home indicator renders at the bottom of the screen area
Icons display placeholder artwork, product name, and truncate long names with ellipsis
Icons scale up on hover and press-in on click with smooth transitions
Keyboard focus shows visible blue outline ring
Legend badges show tooltip descriptions on hover
Lexcorp placeholder logo and tagline are visible above the phone
Mobile uses simplified frame without realistic bezel details
Next.js app builds and runs locally with `npm run dev`
No regressions in previous phase tests
No regressions in previous phase tests
No regressions in previous phase tests
No regressions in previous phase tests
No regressions in previous phase tests
No regressions in previous phase tests
No regressions in previous phase tests
Obsolete comparison routes are removed
Page background is the specified silver-to-white gradient
Page dots render correctly, highlighting the active page
Phone frame renders at correct proportions (~375×812 screen area) with visible Dynamic Island, bezel, and 3D shadow
Phone frame renders correctly at desktop, tablet, mobile, and wide desktop breakpoints
Products sort according to the priority layout rules
Pull-down gesture reveals search bar
Reduced motion disables all animations and transitions
Reduced motion preference disables all animations, replacing with a quick opacity fade
Screen reader announces icon names, states, and "opens in new tab"
Screenshots carousel renders when `screenshots` array is populated, hidden when empty
SearchOverlay backdrop — replaced `aria-hidden` with `role="presentation"`.
Status bar displays current real-world time on the left
StatusBar hydration mismatch — initialize time as empty string, set in useEffect, added suppressHydrationWarning.
Swipe-down dismisses the drawer
Swiping horizontally navigates between icon pages with smooth transition
Tab key navigates through all interactive elements in logical order
Tap on backdrop dismisses the drawer
Tapping any dock icon opens the bottom-sheet drawer
Tapping any grid icon opens the bottom-sheet drawer instead of navigating directly
Testimonials render when `testimonials` array is populated, hidden when empty
The selected route ends at the identical final state (fully rendered phone with icons)
Tooltips appear on hover after 400ms delay with product description text
Touch targets meet 44×44px minimum on mobile viewports
Typing in search filters icons in real-time by name, badge, and tags
Unused `useIsMobile` hook — deleted `src/hooks/useIsMobile.ts` and stale test mock.
Visual output matches spec across all breakpoints
Wallpaper gradient is visible behind the (empty) screen area

Timeline

20 events
June 2026
docs
docs(tasks): record drag selection fix session history
Jun 11static-
fix
fix(ui): icon grid layout and page bounds fixes
Jun 11static-
fix
fix(ui): improve Vittles widget dismiss and hover styling
Jun 11static-
fix
fix(ui): prevent text selection during mouse drag-to-swipe
Jun 11static-
fix
fix(ui): make Vittles expanded card tappable to collapse
Jun 8static-
feature
feat(ui): add Operation Vittles widget and boot splash sequence
Jun 8static-
fix
fix(ui): center search bar within header zone on swipe-down
Jun 8static-
May 2026
chore
chore: remove unused vi import from Accessibility test
May 28static-
fix
fix(ui): rise sheen wipe from bottom instead of popping in
May 28static-
chore
chore: remove dead animation variants and unused hook
May 28static-
fix
fix: resolve critical and medium expert review findings
May 28static-
refactor
refactor: extract shared icon utilities and replace barrel import
May 28static-
fix
fix(ui): clip shimmer effect to text letterforms via background-clip
May 27static-
chore
chore(sync): add post-sync actions
May 27static-
docs
docs(tasks): record shimmer text session history
May 26static-
feature
feat(ui): add shimmer effects to boot splash text and screen wipe
May 26static-
feature
feat(ui): add one-shot shimmer effect on app icons after boot splash
May 26static-
docs
docs(research): add journey map
May 22static-
docs
docs(positioning): define GappHub market frame
May 22static-
docs
docs: add expert review alignment page
May 22static-