Platform

Portfolio Platform

This site itself. A Next.js 16 dashboard with multi-theme system, RBAC navigation, and Clerk auth.

Problem

Most portfolio sites are static HTML pages. Building a fully interactive platform that demonstrates real engineering skill — authentication, protected routes, data persistence, themeing — requires a full-stack approach.

Solution

Forked from next-shadcn-dashboard-starter and reconfigured as a portfolio platform. Features six OKLCH themes, client-side RBAC navigation filtering, parallel dashboard routes, and Supabase backend.

Root LayoutThemeProviderClerkProviderPublic RoutesDashboard (auth)Auth (sign-in)

Tech Stack

Next.js 16shadcn/uiClerkTailwind CSS v4TypeScript

Code

providers.tsx
// Theme-aware Clerk provider
'use client';

import { ClerkProvider } from '@clerk/nextjs';
import { dark } from '@clerk/themes';
import { useTheme } from 'next-themes';

export function Providers({ children }) {
  const { resolvedTheme } = useTheme();
  return (
    <ClerkProvider
      appearance={{
        baseTheme: resolvedTheme === 'dark' ? dark : undefined,
      }}
    >
      {children}
    </ClerkProvider>
  );
}