Portfolio
You're looking at it right now! This portfolio is a full-stack site built completely from scratch - no CMS, no template, just a space to showcase my work and experiment with the stack I actually enjoy using.
The Stack
- Framework: Next.js with the React Compiler enabled for automatic memoization.
- Language: TypeScript, strict mode throughout.
- Styling: Tailwind CSS paired with Shadcn UI and Radix primitives for accessible, consistent components.
- Database: PostgreSQL, queried through Prisma ORM.
- Package Manager: Bun, for fast installs and script execution.
- Email: Resend + React Email for the contact form.
- Animations: Framer Motion for subtle scroll-reveal and page transitions.
Auth & Admin
Authentication runs on a custom Discord OAuth2 implementation - no third-party auth library, just handled callbacks, token refresh, and session management written by hand. Logged-in admins and writers get access to a protected dashboard where they can:
- Write and publish blog posts (Markdown-powered, with syntax highlighting and nested comments)
- Manage projects - like this one!
- Manage user roles and permissions
Theming
Light, dark, system, and two Catppuccin variants (Latte and Macchiato), because a portfolio should feel like home.
Why Build It Myself?
Every "boring" feature - auth, comments, theming, forms - became a small excuse to dig into an edge case I hadn't hit before. This site is as much a learning log as it is a portfolio.