Skip to content

feat: Comprehensive UI/UX Overhaul & Premium Design System Refresh#218

Open
dhaanisi wants to merge 3 commits into
GitMetricsLab:mainfrom
dhaanisi:feat/ui-design-refresh
Open

feat: Comprehensive UI/UX Overhaul & Premium Design System Refresh#218
dhaanisi wants to merge 3 commits into
GitMetricsLab:mainfrom
dhaanisi:feat/ui-design-refresh

Conversation

@dhaanisi
Copy link
Copy Markdown

@dhaanisi dhaanisi commented May 11, 2026

Related Issue

  • Closes: #<217>

Description

This PR implements a comprehensive UI/UX overhaul of the GitHub Tracker landing page. The goal was to transition the current interface into a premium, high-quality design system using modern frontend practices.

Key Improvements:

  • Design Foundation: Implemented a unified dark theme (#0B0F1A) and a custom Tailwind primary palette.
  • Visual Depth: Added glassmorphism effects to the Navbar (backdrop-blur) and animated radial glows to the Hero section.
  • Interactive Elements: Created smooth, pill-shaped hover states for navigation and a dynamic, glowing CTA button with sliding icon transitions.
  • Social Proof: Integrated a new "Developer Trust" section with user avatars and usage statistics.
  • Animations: Leveraged framer-motion for staggered, scroll-triggered entry animations across all major sections.
  • Consistency: Refactored App.tsx, About.tsx and Contributors.tsx to ensure color and spacing consistency across the entire app.

How Has This Been Tested?

[x] Local Environment: Verified all animations and layout changes on a local development server.
[x] Responsiveness: Tested across multiple breakpoints (Mobile, Tablet, Desktop) using Chrome DevTools.
[x] Syntax: Fixed a pre-existing syntax error in the Navbar component that was causing layout shifts.
[x] Performance: Ensured background animations do not cause frame drops.

Screenshots (if applicable)

Screenshot 2026-05-11 at 5 42 34 PM Screenshot 2026-05-11 at 5 42 57 PM

Type of Change

  • Bug fix
  • New feature
  • Code style update
  • Breaking change

Summary by CodeRabbit

  • New Features

    • Animated hero with entrance effects, new CTA and social-proof display
    • Animated Features and How It Works sections with scroll-triggered card transitions
    • Navbar and mobile menu refined for clearer navigation and theme toggle placement
  • Style

    • Refreshed dark palette and background treatments across pages
    • New gradient text and soft glow background accents
    • Toast and footer dark-mode styling updated for improved contrast

Review Change Stack

@netlify
Copy link
Copy Markdown

netlify Bot commented May 11, 2026

Deploy Preview for github-spy failed.

Name Link
🔨 Latest commit 16f6e92
🔍 Latest deploy log https://app.netlify.com/projects/github-spy/deploys/6a0ef3f70d308d00082a828d

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 11, 2026

Caution

Review failed

Failed to post review comments

📝 Walkthrough

Walkthrough

This PR implements a comprehensive design refresh by introducing a custom dark color palette in Tailwind configuration, adding animation utilities and CSS helper classes, redesigning core components with framer-motion animations, and updating styling across the application to use the new theme system consistently.

Changes

Design Refresh with Custom Dark Theme and Animations

Layer / File(s) Summary
Tailwind Theme Configuration
tailwind.config.js
Custom color palettes (primary, dark), animation utilities (pulse-slow, float), and keyframes definitions added to theme.extend.
CSS Utility Classes
src/index.css
.text-gradient class applies blue→indigo gradient with dark-mode variants; .bg-glow class creates blurred background glow with opacity adjustments.
Main Layout & Toast Styling
src/App.tsx
Main container uses bg-white dark:bg-dark; toast notifications use dark:bg-dark-lighter in dark mode.
Navigation Component Redesign
src/components/Navbar.tsx
Nav container updated with translucent backgrounds, backdrop blur, and border transitions; logo restructured with icon container and gradient text; desktop links rendered from a mapped list with pill styling and divider; mobile header/hamburger and menu items reorganized.
Hero Section Redesign
src/components/Hero.tsx
Adds framer-motion and Lucide icons; replaces top hero visuals with animated badge/heading/description, gradient CTA Link with Search/ArrowRight icons, and a social-proof avatar block.
Features Section Animation
src/components/Features.tsx
Feature data model expanded with darkBg; containerVariants and itemVariants added; header, paragraph, and cards rendered as motion elements with staggered entrance animations.
HowItWorks Section Animation
src/components/HowItWorks.tsx
Steps refactored to icon-driven entries; header and steps use motion elements with staggered reveals; decorative gradient connector added between step cards on larger screens.
Footer Styling Update
src/components/Footer.tsx
Footer root and wrapper classes updated to use dark:bg-dark and dark:border-dark-border with adjusted spacing.
Page Background Styling Updates
src/pages/About/About.tsx, src/pages/Contributors/Contributors.tsx, src/pages/ContributorProfile/ContributorProfile.tsx
Mission/Features sections, feature cards, and page wrappers updated to use dark:bg-dark, dark:bg-dark-lighter, and dark:border-dark-border instead of gray-based dark classes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes


Possibly related issues


Possibly related PRs


Suggested labels

type:feature, level:advanced, type:accessibility


Poem

🐰 A bright new palette blooms in dark and light,
Motion makes the hero sparkle into sight,
Nav and features glide with gentle cheer,
Gradients hum and avatars appear,
Tailwind tunes the night — a rabbit clap! 🥕✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately reflects the main change: a comprehensive UI/UX overhaul introducing a premium design system with animations, themed colors, and visual enhancements across the landing page.
Description check ✅ Passed The description follows the template structure and includes all required sections: Related Issue, comprehensive Description explaining key improvements, testing methodology, type of change, and supporting screenshots.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉 Thank you @dhaanisi for your contribution. Please make sure your PR follows https://github.com/GitMetricsLab/github_tracker/blob/main/CONTRIBUTING.md#-pull-request-guidelines

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
src/components/Footer.tsx (1)

6-25: ⚡ Quick win

Complete the dark-border token migration in Footer.

The inner divider still uses dark:border-gray-800; switching it to dark:border-dark-border keeps the footer visually consistent with the refreshed design system.

Proposed patch
-        <div className="p-2 border-t border-gray-200 dark:border-gray-800 text-center text-gray-600 dark:text-gray-400">
+        <div className="p-2 border-t border-gray-200 dark:border-dark-border text-center text-gray-600 dark:text-gray-400">
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/Footer.tsx` around lines 6 - 25, The inner divider in the
Footer component still uses the old token dark:border-gray-800; update the
divider div (the element with class "p-2 border-t border-gray-200
dark:border-gray-800 text-center ...") to use dark:border-dark-border so it
matches the refreshed design system; modify that class string inside the Footer
component (Footer or default export in src/components/Footer.tsx) to replace
dark:border-gray-800 with dark:border-dark-border.
src/components/Hero.tsx (1)

68-75: ⚡ Quick win

Consider using local placeholder images instead of external service.

The pravatar.cc service introduces an external dependency that could impact reliability and privacy. For production, consider using local placeholder images or a self-hosted avatar service.

Alternative approach

You could:

  1. Add placeholder avatar images to your /public folder
  2. Use a pattern like src={/avatars/placeholder-${i}.jpg}
  3. Or use a single placeholder with different CSS transformations

This eliminates the external dependency and improves load reliability.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/Hero.tsx` around lines 68 - 75, Replace the external
pravatar.cc avatars in the map rendering inside the Hero component with local
placeholders: stop using src={`https://i.pravatar.cc/100?u=${i + 10}`} in the
<img> elements and point src to files in your public assets (e.g.,
`/avatars/placeholder-${i}.jpg` or a single `/avatars/placeholder.jpg`) and
update any alt/title text as needed; ensure the files are added to the public
folder and the <img> rendering logic in the map callback (the anonymous function
mapping [1,2,3,4]) references the chosen local path or CSS-based variant so the
component no longer depends on the external pravatar service.
src/components/HowItWorks.tsx (1)

62-64: 💤 Low value

Consider using CSS variables for the connector line calculations.

The connector line uses magic numbers (60px, 120px) that are tightly coupled to the icon size (w-20/h-20). If the icon dimensions change, the line positioning will break. Consider extracting these as CSS custom properties or using a more maintainable approach.

♻️ Suggested approach with CSS variables

You could define the icon size as a custom property and derive the connector positions from it, making the relationship explicit and easier to maintain.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/HowItWorks.tsx` around lines 62 - 64, The connector line uses
hard-coded offsets (left: calc(50% + 60px), width: calc(100% - 120px)) tied to
the icon size; change this to derive values from a CSS custom property by
introducing an icon-size variable (e.g., --icon-size) applied to the icon
container (currently using w-20 h-20) and then update the connector div (the
conditional div rendered when index < steps.length - 1) to use calc()
expressions with var(--icon-size) (for example calc(50% + var(--icon-size) / 2)
and calc(100% - var(--icon-size))) so the connector stays correct if the icon
dimensions change.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/components/Hero.tsx`:
- Around line 8-10: The two decorative background glow divs in the Hero
component (the elements with className "bg-glow top-[-10%]..." and "bg-glow
bottom-[-10%]...") should be hidden from assistive tech; add aria-hidden="true"
to both of those <div> elements (you may also add role="presentation" if
desired) so screen readers ignore these purely decorative elements.

In `@src/components/Navbar.tsx`:
- Around line 69-78: In the Navbar component, update the hamburger <button> (the
one using setIsOpen and reading isOpen) to include accessible attributes: add
aria-expanded={isOpen} and an appropriate aria-label that reflects action/state
(e.g., aria-label={isOpen ? "Close navigation menu" : "Open navigation menu"});
if the mobile menu has an id, also add aria-controls="your-mobile-menu-id" to
the same button so screen readers can map the control to the menu.
- Around line 63-68: The mobile theme toggle button (the element with
onClick={toggleTheme} that renders Sun/Moon based on mode) is missing an
aria-label; add aria-label="Toggle theme" to that button to match the desktop
toggle and ensure consistent accessibility for assistive technologies.

---

Nitpick comments:
In `@src/components/Footer.tsx`:
- Around line 6-25: The inner divider in the Footer component still uses the old
token dark:border-gray-800; update the divider div (the element with class "p-2
border-t border-gray-200 dark:border-gray-800 text-center ...") to use
dark:border-dark-border so it matches the refreshed design system; modify that
class string inside the Footer component (Footer or default export in
src/components/Footer.tsx) to replace dark:border-gray-800 with
dark:border-dark-border.

In `@src/components/Hero.tsx`:
- Around line 68-75: Replace the external pravatar.cc avatars in the map
rendering inside the Hero component with local placeholders: stop using
src={`https://i.pravatar.cc/100?u=${i + 10}`} in the <img> elements and point
src to files in your public assets (e.g., `/avatars/placeholder-${i}.jpg` or a
single `/avatars/placeholder.jpg`) and update any alt/title text as needed;
ensure the files are added to the public folder and the <img> rendering logic in
the map callback (the anonymous function mapping [1,2,3,4]) references the
chosen local path or CSS-based variant so the component no longer depends on the
external pravatar service.

In `@src/components/HowItWorks.tsx`:
- Around line 62-64: The connector line uses hard-coded offsets (left: calc(50%
+ 60px), width: calc(100% - 120px)) tied to the icon size; change this to derive
values from a CSS custom property by introducing an icon-size variable (e.g.,
--icon-size) applied to the icon container (currently using w-20 h-20) and then
update the connector div (the conditional div rendered when index < steps.length
- 1) to use calc() expressions with var(--icon-size) (for example calc(50% +
var(--icon-size) / 2) and calc(100% - var(--icon-size))) so the connector stays
correct if the icon dimensions change.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e04b3e8d-5e60-4ddd-b612-59b74c66fbc7

📥 Commits

Reviewing files that changed from the base of the PR and between 932e5ab and 29f8946.

📒 Files selected for processing (11)
  • src/App.tsx
  • src/components/Features.tsx
  • src/components/Footer.tsx
  • src/components/Hero.tsx
  • src/components/HowItWorks.tsx
  • src/components/Navbar.tsx
  • src/index.css
  • src/pages/About/About.tsx
  • src/pages/ContributorProfile/ContributorProfile.tsx
  • src/pages/Contributors/Contributors.tsx
  • tailwind.config.js

Comment thread src/components/Hero.tsx Outdated
Comment thread src/components/Navbar.tsx
Comment thread src/components/Navbar.tsx
@dhaanisi
Copy link
Copy Markdown
Author

Hey!
I have addressed accessibility feedback from CodeRabbit review. The UI is now accessible and responsive.

@mehul-m-prajapati
Copy link
Copy Markdown
Collaborator

mehul-m-prajapati commented May 17, 2026

@dhaanisi - navbar color on dark mode looks too light, make it dark
Capture

@mehul-m-prajapati
Copy link
Copy Markdown
Collaborator

@dhaanisi : resolve conflicts

@dhaanisi
Copy link
Copy Markdown
Author

Hey @mehul-m-prajapati! I have resolved the merge conflicts

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants