Build With Moenu buildwithmoenu.com
Case Study

Kaffa Espresso Bar

Live client project

Freelance project for a Jersey City coffee shop - handled the full lifecycle from client meetings through deployment. Single-page site with full-bleed photography, menu, and Instagram integration. Set up custom domain, HTTPS via certbot, and SEO. The site is the shop's primary online presence and live at kaffaespressobar.com.

Last curated refresh: 2026-05-11 12:39 PM EDT
Project FramingProblem / ContextRole and OwnershipConstraintsArchitectureKey DecisionsIterations and StrugglesLearningsOutcomesNext Improvements
Case Study Map

Project framing

Kaffa is a smaller software system than Balkan, but it is still serious work because it became a real shop’s public front door. The project combines brand translation, static-site craft, and the operational details needed to make a small-business site feel reliable.

Problem / Context

The café needed a web presence that actually matched the space: clear visual identity, mobile-friendly information, discoverability, and a deployment path that would not become a maintenance burden.

Role and Ownership

I handled the brand translation, site build, domain migration, HTTPS setup, deployment automation, and the production handoff for a real local business.

Why now

This was a good forcing function for learning how to treat a 'simple site' like production software. Domain migration, HTTPS, SEO, release safety, and rollback behavior matter even more when the site is small because the margin for operational mess is tiny.

Topline

Constraints

  • The client needed a polished web presence without ongoing platform complexity.
  • Domain and hosting ownership were split across different systems.
  • Deployment needed rollback safety because the site was the shop's public front door.

Outcomes

  • A live coffee-shop site on a custom domain with HTTPS, redirects, and git-driven releases.
  • A repeatable small-business deployment workflow I can reuse with future clients.

What changed because of the project

A live coffee-shop site on a custom domain with HTTPS, redirects, and git-driven releases.

Architecture

What Kaffa does

It gives a real café a reliable public front door: customers get the information they need fast, and the business gets a safe release path when the site changes.

01
Discover

A customer lands on the site to decide whether to visit

The site needs to answer the practical questions first: brand, menu, hours, and location.

02
Decide

The customer gets enough clarity to choose the café quickly on mobile

The interface is intentionally simple because the product goal is confidence, not novelty.

03
Update

New site changes are prepared as safe releases instead of risky live edits

Deployment is part of the product because the business depends on the site staying up and current.

04
Deliver

Nginx, HTTPS, and atomic cutover keep the live domain stable

The user sees a small site; the business gets a dependable public surface.

OutcomeA small-business website that is easy to use, easy to trust, and safer to maintain than an ad hoc static site.

Architecture narrative

Kaffa is intentionally simple at the application layer: static frontend assets, custom CSS and JavaScript, and a content structure built for discovery and mobile use. The interesting architecture lives in deployment: a git-driven release workflow on a DigitalOcean droplet, Nginx routing, Certbot HTTPS, and a safe cutover from legacy domains to the final primary domain.

System diagram

This is the secondary view: the system shape behind the flow above. It exists to explain the moving parts, not to substitute for the product story.

Static Site with Production Release Flow

The product is lightweight, but the deployment path is engineered to be safe for a real business.

Build

Git repo

HTML, CSS, JS, assets

Deploy scripts

bootstrap, release, rollback

Server

Release directories

timestamped deploys

Atomic symlink cutover

instant switch

Delivery

Nginx

domain routing + redirects

Certbot HTTPS

webroot ACME flow

kaffaespressobar.com

live business site

Release safety

Versioned releases and symlink cutovers make rollback fast and low-risk.

Small-business fit

The system avoids platform sprawl while still handling domains, HTTPS, and redirects cleanly.

Key Decisions
1 / 3
Static-first product shape

Keep the application layer simple and invest effort in brand fidelity and deploy reliability.

The business needed clarity, speed, and maintainability more than a CMS or a heavy stack.

Less dynamic tooling, but a tighter and more dependable end result.
Release-based deployment

Use release directories and atomic cutover instead of ad hoc file replacement.

That made it safer to update a live customer-facing site.

More scripting up front, much better operational confidence later.
Webroot ACME flow

Use webroot-based Certbot renewal and domain cutover handling.

It reduces downtime risk and plays better with a live site on the server.

Slightly more setup complexity for a cleaner long-term path.
Build Journey
Initial static build

Started as a clean brand-forward site focused on menu, location, and atmosphere.

Deployment tooling

The product matured when deployment and rollback became first-class parts of the system.

Primary domain cutover

Finishing the migration to the final domain turned it into a proper live client delivery.

Struggles

The application itself was simple, but domain, HTTPS, and redirect work were not.

I treated deployment as part of the product, scripted it, and designed for rollback.

A small site can still break a business’s online presence if release handling is sloppy.

I used release directories, smoke checks, and explicit cutover logic instead of one-shot deploys.
Learnings
Small-business web work is product work when the site is the brand’s main digital surface.
Simple stacks still deserve release safety, HTTPS hygiene, and intentional operational design.
A polished static site can be a stronger choice than a more complicated stack when the business need is clear.
Latest Work

Latest evolution

Feb 11, 2026

Initial Static Site

Commit 1: Initial commit — Kaffa Espresso Bar static website - Date: Feb 11, 10:25 AM EST - Files: index.html (278 lines), styles.css (624 lines), README.md (164 lines) - Scope: C…

Feb 11, 2026
Mar 2-9, 2026

Production Deployment System

Commit 4: Add git-driven droplet deployment workflow for kaffa - Date: Mar 2, 09:23 AM EST - Major shift: From static AWS S3 to automated Droplet deployment - Files added: - scrip…

Mar 2-9, 2026
Mar 8-9, 2026

Domain Migration

Commit 9: Prepare Kaffa migration to kaffaespressobar.com - Date: Mar 8, 09:30 AM EDT (clock change to EDT) - Context: Legacy domain was kaffa.thisisrikisart.com (Riki's art portf…

Mar 8-9, 2026
Next Improvements
  • Keep refining performance, discoverability, and content tooling without bloating the stack.
  • Package the deploy workflow into a reusable template for future small-business work.
  • Continue improving visual storytelling while preserving operational simplicity.
Evidence Appendix
Curated narrative summary

Freelance web project for Kaffa Espresso Bar in Jersey City. Managed the entire lifecycle: client meetings to understand their brand, design, development, domain setup, HTTPS via certbot, SEO configuration, and deployment. The site serves as the shop's primary online presence. What this demonstrates: I can work directly with non-technica…

Repo history executive summary

A modern, responsive static website for Kaffa Espresso Bar in Jersey City, NJ. Built with vanilla HTML/CSS/JavaScript, designed for small business discoverability with hero sections, gallery, menu, hours, and contact in…

Domain Migration

Commit 9: Prepare Kaffa migration to kaffaespressobar.com - Date: Mar 8, 09:30 AM EDT (clock change to EDT) - Context: Legacy domain was kaffa.thisisrikisart.com (Riki's art portfolio) - Prep: Documentation and scripts…

Technical stack evidence

HTML5, CSS3 (Grid, Flexbox, custom properties), Vanilla JavaScript, Custom CSS variables, parallax effects, responsive breakpoints

Demo