TopGit tracks DavidHDev/rbp-portfolio on GitHub. The project has 131 stars. React Bits Pro - free personal portfolio template with smooth animations, project case studies, and a minimal aesthetic.
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
A Next.js 16+ personal portfolio template built around a signature WebGL flow shader, a magnetic morphing portrait, Lenis smooth scroll, and a calm black-and-white design system. Designed for individual designers and engineers who want a brand-ready scaffold with a distinctive look on day one.
Features
✅ Next.js 16+ with App Router
✅ TypeScript (strict mode)
✅ Tailwind CSS v4 with token-driven theming
✅ Dark Mode via next-themes (class-based) with view-transition reveal
✅ Motion via motion/react with reduced-motion support
✅ WebGL Flow Shader — aspect-correct circular fade baked into the fragment, theme-aware bg sync
✅ Lenis Smooth Scroll with anchor-link integration
✅ Portrait Morph — hover-driven webp swap with magnetic cursor follow
✅ Polaroid Strip, Skills, Stack, Experience, Education — co-located content sections for an /about route
✅ Projects Grid — dribbble-style mockup cards with hover lift and image zoom
The default siteConfig.url is https://example.com — replace it with your production URL before deploying so OpenGraph and the sitemap emit correct absolute URLs.
2. Replace Brand & Portrait
Swap public/josh.webp and public/josh_wave.webp with your own default + hover portraits. Keep both files the same dimensions and aspect ratio for a clean morph.
Update headline, eyebrow, and subtitle copy in components/hero/hero.tsx.
Update social handles and email in components/contact/contact-card.tsx and components/contact/contact-card-ctas.tsx.
3. Update About Content
All about-page content is co-located in its component file — there is no separate content directory.
components/about/polaroid-strip.tsx — image paths and captions
components/about/skills.tsx — skill list
components/about/stack.tsx — tech logos and physics chips
Edit the project array in components/projects/projects.tsx. Each entry includes a title, description, image (dribbble mockup or your own), and external link.
5. Replace Icons
Replace the following files with your brand assets:
app/icon.svg — Favicon (32x32)
app/apple-icon.svg — Apple touch icon (180x180)
public/og-image.png — Open Graph image (1200x630)
6. Tune the Shader
The flow shader (components/shaders/shader-flow.tsx) is used by both the page backdrop and the contact card. Key knobs (all exposed as props with sensible defaults):
colorLowA, colorHighA — palette stops in linear RGB
flowSpeed — [x, y] flow vector
iterations — domain-warp iteration count (up to 24)
scale — domain scale
brightness — output multiplier
fadeCx, fadeCy, fadeRx, fadeRy — aspect-correct circular fade center and radii. The fade is baked into the fragment shader and reads --background from CSS so theme changes are picked up automatically via a MutationObserver on <html>.
The shader:
Caps DPR at min(devicePixelRatio, 1.25) for ShaderFlow
Sizes to host container via ResizeObserver
Pauses via IntersectionObserver when offscreen and on visibilitychange
Uses highp precision; renders a single opaque draw (no CSS mask layers)
7. Add Routes
// app/contact/page.tsx
import { createMetadata } from "@/lib/metadata";
import type { Metadata } from "next";
export const metadata: Metadata = createMetadata({
title: "Contact",
description: "Get in touch.",
path: "/contact",
});
export default function ContactPage() {
return <main id="main-content">...</main>;
}
Design System
Colors
--background / --foreground — Page background and text
--muted / --muted-foreground — Subtle surfaces and secondary text
--border — Hairline rails and dividers
--ring — Focus rings
--frame — Site-frame color (matches --background)
The palette is strict black and white. No accent or semantic color hues are used.
Typography
Sans: Geist Sans
Mono: Geist Mono
Serif: Fraunces (used selectively for display headlines)
Layout Conventions
Headlines: maximum two lines, no italic, no em-dashes
Site frame: fixed top + left + right rails with two top corner cutouts (desktop only; hidden under 850px)
Card hovers: project cards use a single resting + single hover shadow tier with translate-y lift
No backdrop-blur (except the experience collapsed-fade)
Cursor: pointer on all clickable nav and CTA items
Accessibility
The template includes:
Skip-to-content link
Visible focus rings on all interactive elements
ARIA labels on toggles, social links, and the contact button
prefers-reduced-motion guards on the theme toggle view-transition
Shaders pause when offscreen and on tab hide
Proper heading hierarchy (single <h1> per page)
WCAG 2.1 AA contrast compliance in both themes
Performance
WebGL context cleanup on unmount via WEBGL_lose_context
Single mount-once shader effect; uniforms updated via refs
Shaders pause when offscreen (IntersectionObserver) and on tab hide (visibilitychange)
DPR capped to keep shading cost bounded on retina displays
Page-backdrop fade is baked into the fragment shader (single opaque draw, no mask layers)
Matter.js is dynamic-imported inside the stack section
Lenis smooth scroll runs on a single rAF loop
Edge-compatible runtime
Notes
The next.config.tsimages.remotePatterns allows images.unsplash.com and cdn.dribbble.com for the polaroid and project mockups respectively.
The portfolio uses a single @/ path alias.
The project image cards use a disclaimer comment at the top of components/projects/projects.tsx noting that dribbble mockups are placeholders to be replaced with your own work.
License
This template is free to use in personal and commercial projects. You may not resell or redistribute the template itself.
How active is development on DavidHDev/rbp-portfolio?
The most recent commit recorded on DavidHDev/rbp-portfolio was 5 months ago, based on the GitHub push timestamp. The repository has 53 forks — one of the better signals of community interest.
How many stars does DavidHDev/rbp-portfolio have?
DavidHDev/rbp-portfolio has 131 GitHub stars — refresh the page for the live number, or check github.com/DavidHDev/rbp-portfolio. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is DavidHDev/rbp-portfolio open source?
TopGit's metadata for DavidHDev/rbp-portfolio does not record a license. Most public repositories on GitHub ARE open source, but the exact terms vary — verify by opening the LICENSE file directly.
What is DavidHDev/rbp-portfolio?
DavidHDev/rbp-portfolio (DavidHDev/rbp-portfolio) is a TypeScript project on GitHub. From the project's own README: React Bits Pro - free personal portfolio template with smooth animations, project case studies, and a minimal aesthetic.
What language is DavidHDev/rbp-portfolio written in?
DavidHDev/rbp-portfolio is written primarily in TypeScript. GitHub's language field is based on the largest share of bytes in the default branch.
Where do I read more about DavidHDev/rbp-portfolio?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/DavidHDev/rbp-portfolio is the definitive source.
Read full README in the tab above.
Curious whether rbp-portfolio is right for you?
Let ChatGPT, Claude, or Perplexity look into it — click below and see what AI actually says about rbp-portfolio.