My personal portfolio site. Built to showcase my work in offensive security, certifications, and experience without overcomplicating things.
I wanted a portfolio that actually reflected the kind of work I do. Most templates felt too generic, so I decided to build something from scratch with a terminal-inspired aesthetic that fits the offensive security space. The goal was to keep it clean, fast, and easy to maintain, just a static site that I can update when I need to.
I used Claude as a coding assistant throughout the process to speed up development, handle boilerplate, and iterate on the UI faster than I would have solo. The content, design decisions, and structure are mine, Claude helped me ship it quicker.
- Next.js (App Router): React framework, mostly using it for the component model and static export
- Tailwind CSS: utility-first styling
- Framer Motion: animations and transitions
- Cloudflare Pages: hosting and deployment
npm install
npm run devThen open http://localhost:3000.
This is deployed on Cloudflare Pages. The setup is straightforward:
- Connect your GitHub repo to Cloudflare Pages
- Set the build command to
npx next build - Set the output directory to
.next - Cloudflare handles the rest
Alternatively, you can export it as a fully static site if needed.
Nothing fancy here, standard Next.js project layout:
src/
├── app/ # Next.js app router pages
├── components/ # All UI components (Hero, About, Experience, etc.)
└── data/ # Static data files for experience, projects, certs, blog
public/
├── logos/ # Company and university logos
├── certs/ # Certification badge images
└── blog/ # Blog post thumbnails