DavidHDev/rbp-portfolio — dự án mã nguồn mở — đang có 77 sao GitHub. React Bits Pro - free personal portfolio template with smooth animations, project case studies, and a minimal aesthetic.
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
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.
DavidHDev/rbp-portfolio có 77 sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/DavidHDev/rbp-portfolio. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
DavidHDev/rbp-portfolio có phải mã nguồn mở không?
TopGit chưa ghi nhận license cho DavidHDev/rbp-portfolio. Phần lớn repo public trên GitHub là mã nguồn mở, nhưng điều khoản khác nhau từng repo — mở file LICENSE để xác nhận.
DavidHDev/rbp-portfolio còn đang phát triển không?
Commit gần nhất trên DavidHDev/rbp-portfolio là 3 tháng trước (theo timestamp GitHub). Repo có 25 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
DavidHDev/rbp-portfolio là gì?
DavidHDev/rbp-portfolio (DavidHDev/rbp-portfolio) là dự án TypeScript trên GitHub. Theo mô tả gốc: React Bits Pro - free personal portfolio template with smooth animations, project case studies, and a minimal aesthetic.
DavidHDev/rbp-portfolio viết bằng ngôn ngữ gì?
DavidHDev/rbp-portfolio chủ yếu viết bằng TypeScript. Trường "language" của GitHub dựa trên phần lớn byte ở nhánh mặc định.
Đọc thêm về DavidHDev/rbp-portfolio ở đâu?
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/DavidHDev/rbp-portfolio là nguồn chính thức.
Đọc đầy đủ README ở tab phía trên.
Vẫn đang phân vân về rbp-portfolio?
Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về rbp-portfolio.