Skip to content

feat(ui): add minimalistic footer & consistent navbar across pages (#24)#33

Open
MohdShayan wants to merge 3 commits intoAnmol-TheDev:mainfrom
MohdShayan:footer-navbar-consistency
Open

feat(ui): add minimalistic footer & consistent navbar across pages (#24)#33
MohdShayan wants to merge 3 commits intoAnmol-TheDev:mainfrom
MohdShayan:footer-navbar-consistency

Conversation

@MohdShayan
Copy link
Contributor

@MohdShayan MohdShayan commented Oct 3, 2025

Changes Made

  • Implemented a minimalistic, professional footer that includes:
  • GitHub repository link
  • LinkedIn / profile link
  • Contact information / email
  • Quick project resources / documentation links
  • Footer styled with clean design + sticky positioning for better accessibility.
  • Configured the Navbar to display consistently across all pages, ensuring uniform layout and navigation.
  • Added lazy loading for heavy pages:
    Features page
    Docs page
    This reduces the initial bundle size and improves load performance.

Benefits

  • Improved navigation & accessibility across all pages
  • Better connectivity for contributors and users
  • Professional and polished UI

Screenshots

Before (No Footer / Navbar consistency):

image

After (Footer Added & Navbar Consistent):

image image image image

Summary by CodeRabbit

  • New Features

    • None
  • Refactor

    • Major pages now load lazily with a loading indicator to speed initial load and reduce perceived wait.
    • App boot sequence simplified to a standard router-based render for more consistent behavior.
  • Style

    • Global refinements to layout, spacing, and vertical rhythm across primary pages and hero sections.
    • Improved heading responsiveness and layered visual depth with updated gradients and backgrounds.
  • Bug Fixes

    • Footer stacking adjusted to avoid overlap with other content.

@vercel
Copy link

vercel bot commented Oct 3, 2025

@MohdShayan is attempting to deploy a commit to the matrixaj27's projects Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai
Copy link

coderabbitai bot commented Oct 3, 2025

Walkthrough

The app bootstrap is replaced with a direct React 18 render using BrowserRouter. App now lazily loads Features and Docs via React.lazy and wraps routes in Suspense with a Loading fallback. Multiple components receive presentational/layout tweaks (spacing, typography, backgrounds), the Footer gains z-50, and main.jsx removes the exported createRoot. No public API signatures changed.

Changes

Cohort / File(s) Summary of changes
Bootstrap & routing render
src/main.jsx
Removed ViteReactSSG flow and the exported createRoot. Now uses ReactDOM.createRoot(...).render with StrictMode and BrowserRouter.
Lazy-loading routes
src/App.jsx
Switched Features and Docs imports to React.lazy with dynamic import(); wrapped routes in Suspense using a Loading fallback; minor container class adjustment (main uses flex-grow).
Presentational/layout updates
src/components/Docs.jsx, src/components/Features.jsx, src/components/ParticleApp.jsx
Visual and spacing adjustments: removed full-height wrappers, changed paddings/margins, updated responsive text sizes and decorative gradient/blur layers, tuned vertical rhythm and gaps. No behavioral logic changes.
Footer layering
src/components/ui/Footer.jsx
Added z-50 to the footer root element to change stacking order only.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant Browser
  participant ReactDOM
  participant Router as BrowserRouter
  participant App

  User->>Browser: Load /
  Browser->>ReactDOM: Execute main.jsx
  ReactDOM->>Router: createRoot().render(<StrictMode><BrowserRouter><App/></BrowserRouter></StrictMode>)
  Router->>App: Initialize app tree
  App-->>User: Initial UI rendered
Loading
sequenceDiagram
  autonumber
  actor User
  participant Router
  participant App
  participant Loader as React.lazy(Features/Docs)
  participant Net as Network

  User->>Router: Navigate to /features or /docs
  Router->>App: Match route
  App->>Loader: Render lazy component inside Suspense
  Loader->>Net: dynamic import() request
  Net-->>Loader: Chunk JS
  Loader-->>App: Component module
  App-->>User: Render route component
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related issues

Poem

A rabbit taps deploy with glee,
Routes now load when called to be.
Gradients bloom and spacing sings,
Footer hops above all things.
Roots planted new, the UI leaps—🥕✨

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Title Check ⚠️ Warning The title claims to add a minimalistic footer and consistent navbar, but the bulk of the changes implement lazy loading, layout and styling tweaks, and a React 18 bootstrap update, with only a z-index tweak in the footer and no navbar modifications. Rename the title to accurately reflect the primary changes such as implementing lazy loading for page components, updating the app bootstrap to React 18, and applying various layout and styling adjustments, or adjust the changeset to include the footer and navbar updates described.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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

Copy link

@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: 1

📜 Review details

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between bbbc2d4 and 19cbd99.

⛔ Files ignored due to path filters (1)
  • package.json is excluded by none and included by none
📒 Files selected for processing (6)
  • src/App.jsx (1 hunks)
  • src/components/Docs.jsx (2 hunks)
  • src/components/Features.jsx (5 hunks)
  • src/components/ParticleApp.jsx (8 hunks)
  • src/components/ui/Footer.jsx (1 hunks)
  • src/main.jsx (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
src/main.jsx (1)
src/App.jsx (1)
  • App (9-24)
src/App.jsx (2)
src/components/Features.jsx (1)
  • Features (21-573)
src/components/Docs.jsx (1)
  • Docs (39-855)
🔇 Additional comments (15)
src/components/ui/Footer.jsx (1)

39-39: LGTM!

The z-50 addition appropriately ensures the footer stays above decorative and background elements introduced across the layout changes in this PR. This is a sensible layering fix with no functional side effects.

src/App.jsx (1)

13-13: Verify the flex-grow vs flex-1 change.

The main element now uses flex-grow instead of flex-1. Note that:

  • flex-grow applies only flex-grow: 1 (element will grow but not shrink or reset flex-basis).
  • flex-1 is shorthand for flex: 1 1 0% (grow, shrink, and zero basis), which is the typical pattern for filling available space in a flex container.

If the intent is to have main fill the remaining vertical space between Navbar and Footer, flex-1 is generally preferred. The current flex-grow class may not behave as expected if content overflows.

If this change was intentional, please confirm the expected behavior. Otherwise, consider reverting to flex-1:

-  <main className="flex-grow">
+  <main className="flex-1">
src/components/Docs.jsx (3)

180-181: LGTM!

Removing min-h-screen from the outer wrapper and reducing padding from py-16 to py-14 aligns with the broader layout simplifications across the PR. These changes improve the vertical rhythm and are consistent with similar adjustments in Features.jsx and ParticleApp.jsx.


198-198: LGTM!

Adding the lg:text-8xl breakpoint improves responsive typography by progressively scaling the heading size across screen sizes (5xl → 6xl → 8xl). This enhances visual hierarchy on larger displays.


204-204: Verify the m-10 margin class.

The intro text container now uses m-10 (margin on all sides) instead of mb-8 (bottom margin only). Since this element already uses mx-auto for horizontal centering, applying horizontal margins via m-10 may conflict with the centering behavior.

If vertical spacing was the intent, consider using my-10 (vertical margins) or mb-10 (bottom margin) instead:

-          <div className="max-w-4xl mx-auto m-10">
+          <div className="max-w-4xl mx-auto my-10">

Or, if only bottom margin is needed:

-          <div className="max-w-4xl mx-auto m-10">
+          <div className="max-w-4xl mx-auto mb-10">
src/main.jsx (1)

1-13: LGTM!

The transition from ViteReactSSG to a standard React 18 createRoot render with BrowserRouter is correctly implemented. This is a clean, conventional client-side rendering setup that aligns with the lazy-loading strategy introduced in App.jsx.

Note: Ensure the critical Suspense boundary issue flagged in App.jsx is addressed to prevent runtime errors with lazy-loaded routes.

src/components/Features.jsx (4)

135-136: LGTM!

The layout adjustments (removing min-h-screen, reducing padding to py-14, increasing hero bottom margin to mb-20, and adjusting section spacing) are consistent with the broader layout simplifications across the PR. These changes improve vertical rhythm and align with similar refinements in Docs.jsx and ParticleApp.jsx.

Also applies to: 142-142, 154-154


167-167: LGTM!

Adding lg:text-8xl to the hero title improves responsive typography, and increasing the decorative gradient blur to blur-2xl enhances visual depth. Both changes are aligned with the overall UI polish in this PR.

Also applies to: 172-172


179-179: Verify the m-10 and m-15 margin classes.

Both the subheading container (line 179) and the CTA button group (line 190) now use all-sides margins (m-10 and m-15) instead of vertical-only margins. Since these elements use mx-auto or justify-center for horizontal centering, applying horizontal margins via m-* classes may conflict with the centering behavior.

Consider using vertical margins instead:

-            className="text-xl md:text-2xl text-muted-foreground max-w-4xl mx-auto m-10 leading-relaxed"
+            className="text-xl md:text-2xl text-muted-foreground max-w-4xl mx-auto my-10 leading-relaxed"
-            className="flex flex-wrap justify-center gap-6 m-15"
+            className="flex flex-wrap justify-center gap-6 my-15"

Or if only bottom margin is needed, use mb-10 and mb-15 respectively.

Also applies to: 190-190


224-224: LGTM!

Adding mt-40 to the main features section creates intentional vertical spacing, and increasing the blur to blur-2xl on the card decorative gradient enhances visual depth. Both changes are appropriate presentational refinements.

Also applies to: 241-241

src/components/ParticleApp.jsx (5)

150-151: LGTM!

The wrapper and container adjustments align with the layout simplifications across the PR. The hero animation change (initial y: 20 instead of y: -20) provides a different entry direction, and the simplified transition duration maintains consistency. These are appropriate presentational refinements.

Also applies to: 154-157


265-265: LGTM!

The hero content spacing adjustments (consolidating to mb-8, adjusting title margin to mb-5, adding a gradient background layer behind the title, and adding mb-5 to the subtitle) refine the vertical rhythm and enhance visual depth. These changes are consistent with the overall UI polish in the PR.

Also applies to: 273-273, 336-336, 340-340, 349-349


360-360: LGTM!

Reducing the top margin from mt-8 to mt-4 tightens the spacing between the description and preceding content, aligning with the tightened vertical rhythm across the PR.


390-390: Verify the m-7 margin class.

The CTA container now uses m-7 (margin on all sides) instead of vertical-only margin. Since this element uses justify-center for horizontal centering, applying horizontal margins via m-7 may conflict with the centering behavior or cause unexpected spacing.

Consider using vertical margin instead:

-              className="flex flex-wrap items-center justify-center gap-4 max-w-4xl mx-auto m-7"
+              className="flex flex-wrap items-center justify-center gap-4 max-w-4xl mx-auto my-7"

Or if only bottom margin is needed:

-              className="flex flex-wrap items-center justify-center gap-4 max-w-4xl mx-auto m-7"
+              className="flex flex-wrap items-center justify-center gap-4 max-w-4xl mx-auto mb-7"

498-498: LGTM!

The canvas grid spacing increase (gap-8, mt-16) and the installation section margin reduction (mt-12) are intentional spacing adjustments that align with the overall vertical rhythm refinements across the PR.

Also applies to: 696-696

Copy link

@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: 0

🧹 Nitpick comments (1)
src/App.jsx (1)

14-20: Suspense boundary correctly implemented.

The Suspense wrapper around Routes properly handles the loading state for lazy-loaded components, preventing the runtime errors that would have occurred without it. The fallback UI is functional.

Optional enhancement: Consider replacing the simple text fallback with a spinner or skeleton component for a more polished loading experience:

-        <Suspense fallback={<div className="text-center py-10">Loading...</div>}>
+        <Suspense fallback={
+          <div className="flex items-center justify-center min-h-screen">
+            <div className="animate-spin rounded-full h-12 w-12 border-b-2 border-primary"></div>
+          </div>
+        }>
📜 Review details

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 19cbd99 and 19d66bb.

📒 Files selected for processing (1)
  • src/App.jsx (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
src/App.jsx (4)
src/components/Features.jsx (1)
  • Features (21-573)
src/components/Docs.jsx (1)
  • Docs (39-855)
src/components/ui/Navbar.jsx (1)
  • Navbar (8-161)
src/components/ParticleApp.jsx (1)
  • ParticleApp (24-841)
🔇 Additional comments (3)
src/App.jsx (3)

5-7: Lazy loading implemented correctly.

The imports and lazy component declarations are properly structured. This change, combined with the Suspense boundary added on lines 14-20, addresses the critical issue flagged in the previous review about missing Suspense wrapping.


11-11: Layout structure is well-designed.

The flex flex-col min-h-screen container combined with flex-grow on the main element (line 13) creates a proper sticky footer layout that ensures the footer stays at the bottom even on short pages.


1-25: Well-structured routing and lazy loading strategy.

The decision to lazy-load only the Features and Docs pages while keeping the ParticleApp (home page) immediately available is a sensible performance optimization. This ensures fast initial page load while reducing the bundle size for secondary pages.

@MohdShayan
Copy link
Contributor Author

Hi @Anmol-TheDev ,
I noticed my PR hasn’t been merged yet , just wanted to check in
Is there anything else I can help with or any changes you’d like me to make before it’s ready to merge?
Happy to update or refine anything you need!

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant