Client workDispensary cash access - hand-built static site2026
EllaCash ATM
A dispensary cash-access company lifted out of a dated Elementor page builder into a hand-built static site: the Remote ATM flow explained step by step, a two-step fit check, and a compliance section written to be read closely.

Our exact role
Designed and built the replacement site — every page, the fit-check flow, and the demo chat assistant.
The context
EllaCash provides PIN-based Remote ATM cash access at the dispensary point of sale, where the withdrawal and the purchase stay two separate receipted transactions. That separation is the distinction between it and the cashless-ATM models the industry has moved away from. The readers who matter are dispensary operators and the compliance people who review them. Support runs out of Tulsa.
Where it started
An Elementor page-builder site was carrying the whole story: stock imagery, generic section templates, and copy that described the category rather than the product. The compliance material — the part a dispensary's counsel actually reads — was a paragraph near the bottom, not a section.
The constraint
The product's entire defense is a legal distinction most visitors have never heard of. Explaining it takes room, and it has to survive someone reading it adversarially. So the site had to be specific and checkable without collapsing into a wall of legalese nobody finishes.
Decisions made
- 01Rebuilt as hand-written static HTML instead of migrating to another page builder, so the markup is the design rather than a builder's output.
- 02Gave the legal distinction its own step in the flow — request, authorize and record, complete the purchase — instead of a disclaimer at the bottom.
- 03Wrote compliance as four reviewable areas: program structure, merchant onboarding, transaction and data security, and ongoing oversight.
- 04Split the fit check into two steps and ended it on a confirmation offering a calendar link and an .ics download, so the next step is booked rather than promised.
- 05Self-hosted the animation library and subset the webfonts, so the render path does not depend on a third party staying up.
What we built
- A homepage with a rotating-headline hero and a three-step Remote ATM flow.
- How It Works with a side-by-side comparison, plus Solutions, Compliance and Trust, and Results pages.
- A two-step fit-check form with a confirmation state that hands off to Google Calendar or an .ics download.
- A blog with post templates and three homepage previews.
- A demo chat assistant widget scoped to the product's own material.
- Self-hosted subset woff2 fonts and vendor scripts, with versioned cache-busting on CSS and JS.
Before and after


Left is the Elementor page-builder site the rebuild replaced. Right is the current build. These are screenshots of the same business at two points in time — a design comparison, not a performance measurement.
Stack
- Hand-written static HTML
- CSS
- Vanilla JavaScript
- GSAP + ScrollTrigger, self-hosted
- Self-hosted subset woff2 fonts
- nginx
Technical result
- No CMS, framework, or site generator — the shipped HTML is the source, readable in view-source.
- GSAP, ScrollTrigger, and the webfonts are served from the site's own origin, so the render path pulls no third-party scripts or fonts.
- Versioned query strings on CSS and JS give deterministic cache busting on every deploy.
- Replaced an Elementor build; the current site ships no page-builder runtime.
Business result
Live, inspectable build. Measured business outcome pending client approval.