Full-stack portfolio project

LayerCake

A full-stack website for a custom cake business.

LayerCake combines a customer-facing cake shop with admin tools for products, orders, and reviews. The project uses a Node.js backend API, MongoDB database, and Cloudflare R2 image storage for real product and review photos.

Scroll down

Business value

What this project does for a small business

Cake catalog and product details

Customers browse a responsive product gallery with cake cards, prices, descriptions, ingredients, and size details on any device.

Digital order management

Orders are submitted from the gallery and stored in the backend. The admin panel tracks order status updates and keeps the workflow visible for the business owner.

Reviews and customer trust

Completed orders can trigger a review email with a link to a submission page. Approved reviews are published on the public reviews page after moderation.

Customer experience

Designed for real users

Admin tools

Tools for managing the shop

Product management

The admin area supports creating and editing products, uploading real product photos, and keeping the gallery in sync with the backend.

Order status workflow

Orders can be viewed and updated from the admin workflow. Status changes are saved in MongoDB and stay connected to the customer order flow.

Review moderation and email review flow

Customer reviews can be approved, rejected, or edited before publication. Completed orders can send a review invitation email with a link to the review submission page.

Tech stack

Full-stack implementation

  • HTML
  • CSS
  • JavaScript
  • Node.js
  • Express
  • MongoDB
  • Cloudflare R2
  • REST API
  • Sharp / Multer
  • Git / GitHub

Project status

What is live today and what comes next

Implemented

  • Backend API and MongoDB database are connected.
  • Product images are uploaded and stored through Cloudflare R2.
  • Admin access is protected with login/password.
  • Orders, statuses, emails, and reviews are part of the flow.

Next release step

  • Connect the project to a real domain and prepare it for public deployment.