Skip to content

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

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

feat: Comprehensive UI/UX Overhaul & Premium Design System Refresh#218
dhaanisi wants to merge 2 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

    • Hero section now features smooth animations and social proof indicators
    • Features and process sections include animated card transitions
    • Improved navigation with refined mobile menu organization
  • Style

    • Dark mode palette refreshed with custom color scheme
    • Added gradient text and glowing background effects throughout
    • Enhanced visual polish on buttons and component interactions

Review Change Stack

@netlify
Copy link
Copy Markdown

netlify Bot commented May 11, 2026

Deploy Preview for github-spy ready!

Name Link
🔨 Latest commit e6a301f
🔍 Latest deploy log https://app.netlify.com/projects/github-spy/deploys/6a01c77a00816d00083e1185
😎 Deploy Preview https://deploy-preview-218--github-spy.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 11, 2026

📝 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 Background
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 new background/border classes. Logo restructured with icon container and gradient text. Desktop links refactored to mapped array with pill styling and divider. Mobile header reorganized with theme toggle moved to header row alongside hamburger button. Mobile dropdown reduced to Home/Tracker/Contributors/Login routes.
Hero Section Redesign
src/components/Hero.tsx
Imports updated to include motion, ArrowRight, Sparkles. Section redesigned with animated badge/heading/description using framer-motion whileInView triggers. Primary CTA restructured as gradient-styled Link with ArrowRight icon. New social proof section added with mapped avatar images and "+50" indicator.
Features Section Animation
src/components/Features.tsx
Feature data model expanded with darkBg field. containerVariants and itemVariants added for staggered animations. Section header and paragraph wrapped in motion elements with scroll-triggered animations. Feature cards converted to motion.div with opacity and y-offset transitions; icon styling updated to use new darkBg field.
HowItWorks Section Animation
src/components/HowItWorks.tsx
Steps array refactored from numeric structure to icon-driven structure (Search, LineChart, PieChart). Header and paragraph wrapped in motion elements with whileInView animations. Step cards converted to motion.div with per-step delays and scroll-triggered transitions. Icons rendered inside styled containers; gradient connector lines added between cards on larger screens.
Footer Styling Update
src/components/Footer.tsx
Dark-mode background and border classes updated to dark:bg-dark and dark:border-dark-border.
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 containers updated to use new dark theme classes (dark:bg-dark, dark:bg-dark-lighter, dark:border-dark-border) instead of gray-based dark mode equivalents.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes


Possibly related issues

  • GitMetricsLab/github_tracker#217: Overlaps in intent and implementation—both implement the same UI/UX design refresh targeting Navbar, Hero, Features, and related styling/animations.

Possibly related PRs


Suggested labels

gssoc25, level2


Poem

🐰 A carrot-colored theme now blooms so bright,
With motion that dances through dark and light,
Hero and nav spring alive with cheer,
Features float graceful—design crystal clear!
From Tailwind's palette, fresh magic appears,
This design refresh deserves two ear-cheers! 🌟

🚥 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 describes the main changes: a comprehensive UI/UX overhaul with a premium design system refresh, which aligns with the extensive component updates, animations, theming, and styling changes across the entire codebase.
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.
Description check ✅ Passed The pull request description is comprehensive and well-structured, following the template with all required sections completed.

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

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

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


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

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