Build portfolio site with Next.js, Tailwind CSS, and dark mode

- Add CLAUDE.md with project conventions and architecture notes
- Create Navbar (sticky, backdrop blur, mobile menu) and Footer
- Build homepage sections: Hero, FeaturedProjects, Skills, CurrentWork, CallToAction
- Add /projects, /about, and /contact pages
- Create reusable ProjectCard and Badge components
- Centralise project data in content/projects.json with featured flag
- Add class-based dark mode toggle (default dark, persisted to localStorage)
- Refactor globals.css: remove conflicting prefers-color-scheme media query
- Fix two-instance ThemeToggle sync bug in Navbar
- Fix key={index} anti-pattern in timeline, stale closure in setOpen

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-26 22:02:30 +01:00
parent 4fa9f280e6
commit 6b698c5f58
18 changed files with 628 additions and 82 deletions
+40
View File
@@ -0,0 +1,40 @@
[
{
"title": "Portfolio Site",
"description": "This site — a personal portfolio built with Next.js and Tailwind CSS. Focused on clean design and fast load times.",
"stack": ["Next.js", "TypeScript", "Tailwind CSS"],
"href": "#",
"featured": true
},
{
"title": "Deploy CLI",
"description": "An open-source command-line tool written in Go for automating local environment setup and deployments.",
"stack": ["Go", "Docker", "CI/CD"],
"href": "#",
"featured": true
},
{
"title": "Metrics Dashboard",
"description": "A real-time dashboard for monitoring system health and performance metrics across distributed services.",
"stack": ["React", "Node.js", "WebSockets", "Redis"],
"href": "#",
"featured": true
},
{
"title": "Auth Service",
"description": "A standalone authentication service supporting OAuth2, magic links, and session management.",
"stack": ["TypeScript", "PostgreSQL", "REST"]
},
{
"title": "Component Library",
"description": "An internal design system and component library exploring composability and accessibility patterns.",
"stack": ["React", "TypeScript", "Storybook"],
"href": "#"
},
{
"title": "RSS Reader",
"description": "A minimal feed reader with a clean reading mode, keyboard navigation, and offline support via service workers.",
"stack": ["Next.js", "SQLite", "PWA"],
"href": "#"
}
]