Projects

lbirchen.com

Portfolio & Resume Platform

A modern Next.js site showcasing projects and an auto-updating resume. The app renders Markdown resume content fetched from GitHub, supports rich formatting, and exposes an API route that serves the latest PDF generated by a GitHub Actions workflow in the resume repository.

Tech stack

  • Framework: Next.js 15 (App Router), React 19
  • Styling/UI: Tailwind CSS 4, CSS modules, Lucide Icons
  • GitHub integration: Resume in markdown on github, Actions workflow builds PDF/HTML in same styling.
  • Content: Fetch resume.md, resume.html and resume.pdf from github, /resume uses react markdown to cleanly render resume.md, Experimental /resume2 page directly renders resume.html.
  • API: Route Handler (`app/api/resume-pdf/route.js`) serving latest PDF

Foodle — Daily Word Puzzle Game

Wordle for Foodies

A React-based daily word game where players guess food-themed words across three rounds (4, 5, and 6 letter words). The app seeds a new deterministic puzzle set each day, validates guesses against an allowed words list, tracks scores, and visualizes player stats and streaks.

Tech stack

  • Frontend: React 19, Vite, React Router 7
  • Backend: Supabase (Auth + Postgres)
  • State Management: React Context API
  • Data fetching: TanStack React Query
  • UI: Tailwind CSS 4, Shadcn UI, Lucide Icons

Yelpcamp

Babies first dynamic website

A full-stack CRUD app where users can create, view, edit, and review campgrounds with image uploads and authentication. Deployed on Render — note there may be a brief cold start delay on the free tier.

Tech stack

  • Backend: Node.js, Express
  • Templates: EJS
  • Middleware: Joi (validation), Passport (authentication)
  • Database: MongoDB (Atlas)
  • Storage: Cloudinary (images)
  • Hosting: Render