Liam McDonald — home

Case Study:
The King Street Emporium

I completed 164 internship hours delivering a searchable online catalog and custom CMS for King Street Emporium. This professional client project combined requirements gathering, stakeholder communication, and technical decisions grounded in staff workflows.

Completed Professional Client Work · 164 internship hours

The CMS uses a Neon database. This case study retains the technical documentation and screenshots from the original internship delivery.

The Client Needed:

An appealing online presence

I Delivered:

Brand-aligned user interface mimicking the lounge interior

The Client Needed:

A way to showcase the vast selection of products

I Delivered:

Next.js static catalog with full-text search, filtering, & pagination

The Client Needed:

A way to keep selection up-to-date without touching code

I Delivered:

Custom Neon database-backed CMS

Solo Developer · Delivered in 10 weeks

Requirements & Stakeholder Collaboration

I worked with the client to understand how the lounge presents its products and keeps catalog information current. The requirements connected a public catalog with a staff editing workflow, rather than treating the website as a static brochure.

The original technical decisions followed those needs: structured JSON supported catalog generation; schema validation guided editing; Git history recorded changes; and automated deployment published approved content. A custom CMS gives staff an interface for maintaining product information without editing the underlying data files.

Visit the client website · View the project source

Public Catalog

Knowing the Audience

Most regulars are 35+ cigar and pipe enthusiasts who value straightforward interfaces.

The site therefore leans on large, high-contrast typography, predictable navigation, and full keyboard access. Alt text, semantic headings, and ARIA patterns support accessibility.

The Problem

With no live catalog, the lounge's surprisingly wide selection of premium cigars was completely invisible to search engines.

Staff fielded many availability calls, and prospective customers had no sense of the lounge’s vast selection.

The Solution

A Next.js-powered static site reads a structured JSON catalog at build time and renders product pages with full-text search.

JSON
[
  {
    "Brand": "Arturo Fuente",
    "Cigar Name": "Cazadores",
    "Wrapper": "Ecuadorian Habano",
    "Binder": "...",
    ...
    "Sizes": [
      ...
    ],
    "slug": "arturo-fuente-cazadores"
  },
  ...
]
Catalog
Cazad|
Filters:Habano
Arturo FuenteCazadores
Wrapper:Ecuadorian Habano
Binder:...
...
Sizes ...
......
Wrapper:...
Binder:...
...
Sizes ...

For a cohesive brand experience, the site's color palette mimics the interior of the lounge:

Amber
Cream
Cocoa

In addition, the site features a live embedded Facebook feed for real-time specials and events, eliminating the need for the staff to manually post updates on both the site and social media.

Key Features

  • Live catalog with multi-facet filters and search
  • Mobile-first, accessible layout (large type, high contrast)
  • Embedded Facebook feed for real-time specials & events
  • Product detail pages generated from slug-based directories with SEO-optimized meta tags
  • Automated version control: every catalog change is a Git commit

Outcome

  • Product discovery outside business hours; fewer availability calls reported in the original project feedback
  • An owner-reported increase in foot traffic within the first month (qualitative feedback)
  • Search visibility recorded at project completion for queries like "Arturo Fuente Cazadores near me"

From the Client

It looks really good, it's easy to navigate [and] find what I'm looking for, and it puts into perspective the huge range of products we have.

King Street Emporium: Homepage
Homepage
King Street Emporium: New Arrivals
New Arrivals
King Street Emporium: Brands
Brands
King Street Emporium: Catalog
Catalog
King Street Emporium: Cigar Info
Cigar Info

Custom CMS

The Problem

Updating the JSON catalog required emailing spreadsheets to me; I ran scripts, deduped entries, and pushed to GitHub, which was all a very painful bottleneck.

The Solution

The custom CMS is now backed by a Neon database. The original internship delivery included:

  • Visual editor for adding/editing SKUs with schema validation
  • Image uploads via Vercel Blob Storage
  • Batch price updates and “undo” history via Git commits
  • Auth-protected admin area; deploy previews on every PR

Outcome

  • Staff can manage the catalog in-house and publish updates through the deployment workflow
  • Every change is tracked, reversible, and automatically triggers a rebuild

From the Client

This makes it so much easier to keep track of cigars. Everything makes sense, and it only takes a minute to update our prices, whereas before it would take an hour!

King Street Emporium: Login
Login
King Street Emporium: Dashboard
Dashboard
King Street Emporium: Manage Changes
Manage Changes
King Street Emporium: Editing a Cigar
Editing a Cigar

Operational Costs

The project uses Vercel for hosting, Vercel Blob for image storage, and Neon for the CMS database. Recurring costs depend on the client’s account plans and usage.

Reflection

Completing this internship taught me to connect technical architecture with client communication. A searchable catalog helps visitors understand the selection, while the CMS addresses the staff workflow that keeps that catalog useful. The experience reinforced the importance of gathering requirements, explaining technical tradeoffs, and making maintenance part of delivery.

If I were to expand it further, I'd consider:

  • Using Tailwind for styling. This was an early substantial client project, and my design practice has developed since then.
  • Role-based access control for the admin area
  • Content-editable landing banners so staff can highlight events in seconds

Need a custom CMS or catalog for your business? Let’s work together