City Roots VT

Editorial site and ordering app for a farm-to-table service

Visit site

A farm-to-table food service in Vermont: an editorial presentation site plus a dedicated ordering app. Order ahead by Sunday, pick up Wednesday, all season long.

Client
City Roots VT
Year
2025
Industry
Food · Farm-to-table
City Roots VT

The Challenge

One brand, two surfaces, two audiences. The presentation site had to feel editorial (story, producer features, a clear “how it works”) and stay editable by the City Roots team with no developer dependency. The ordering app had to be lightweight and trustworthy on mobile: a single-page flow where a customer can land, pick dishes and check out in under a minute, even on flaky rural connections. Both had to share a tightly controlled brand system, so users never feel like they've left for somewhere else.

How I Built It

Two codebases, one visual language. The presentation site is WordPress, with a custom build on Elementor + ACF, its own CPT for the weekly menu and LiteSpeed caching, so it's fast from the first byte. The ordering app is React: installable as a PWA, dark/light-theme aware, tuned for the rural 4G case with route-split chunks and a cart that survives a tab close. Both surfaces share the same design tokens (Lexend + Work Sans, the City Roots green, the paper-cream tone), so brand unity never breaks at the jump from .com to order.*.

Editorial site on WordPress

A custom Elementor + ACF build with its own post type for the weekly menu and LiteSpeed caching, fast from the first byte and editable by the team.

Ordering app in React

Installable as a PWA, dark and light theme aware, route-split for rural 4G, with a cart that persists across sessions.

One brand system

Shared design tokens, Lexend + Work Sans, the City Roots green and the paper-cream tone, so nothing breaks at the jump from .com to order.

Results That Matter

Two surfaces that feel like one brand. The City Roots team edits the presentation site and the weekly menu without a developer, and customers land in the ordering app, pick dishes and check out in under a minute on rural 4G, with a cart that survives a closed tab.

What I Delivered

  • WordPress presentation site with Elementor + ACF
  • Custom post type for the weekly menu
  • React ordering app installable as a PWA
  • Route-split chunks and a cart that survives a tab close
  • Shared design tokens across both surfaces
  • LiteSpeed caching, fast from the first byte