case study · 2019 · 2026

Recipe Box: a 2019 blog rebuilt as a recipe site

A multi-user recipe sharing site built with Node.js, Express and MongoDB. First built in 2019 as a blog, then rebuilt in 2026 as a recipe site with search, photo uploads and safer output.

role
Solo project
timeline
2019, updated 2026
stack
Node.js, Express 5, MongoDB, Edge, Cloudinary
status
Live demo
Screenshot of Recipe Box
01

What it does

  • Accounts with bcrypt-hashed passwords and sessions stored in MongoDB.
  • Structured recipes with ingredients, numbered steps, prep and cook times, servings and a photo.
  • Search by name, description or ingredient, with shareable result URLs.
  • Photo uploads to Cloudinary, or to disk when Cloudinary isn't set up.
  • Server-rendered pages where all user content is escaped, so scripts can't be injected.
02

The 2026 update

  • Replaced free-text blog posts with a structured Recipe model and RESTful routes.
  • Removed a rich-text editor that allowed script injection in favour of plain, escaped fields.
  • Upgraded every dependency to current versions (Express 5, Mongoose 9) and rewrote callbacks as async/await.
  • Fixed bugs from the original: shared creation dates, broken flash messages, crashes on bad URLs, overwritten uploads, and a password printed to the log.
03

Architecture

Each route maps to a small controller, and access rules live in reusable middleware.

  1. Edge views
  2. Controllers + middleware
  3. MongoDB
  4. Cloudinary
next projectRecruitment App