Back to home

Colcheco

Indie refill shop, Colchester

The brief

Colcheco is Colchester's indie refill shop, selling unpackaged dried foods, herbs and spices, coffee, tea, beauty products, and household essentials. They already used Square for their in-store POS, but the online shop ran on Shopify: a separate system, with monthly platform fees, that did not talk to the till. Stock, products, and orders lived in two disconnected worlds, and every change had to be entered twice. This project replaced Shopify end to end with a custom site that plugs directly into their existing Square account. One platform for in-store and online, no monthly platform fees, and no double data entry. Scope covers the full stack: storefront, checkout, payments, inventory sync, order management, email notifications, and back-in-stock alerts.

Feature-complete, launching after final owner review

691

Products synced from Square

£300

Saved per year on Shopify

20

Product categories

30

Automated browser tests

How it looks

Colcheco Homepage

Homepage

Colcheco Product catalogue

Product catalogue

Colcheco Product page

Product page

Colcheco Mobile view

Mobile view

What I built

Full e-commerce storefront

691 products across 20 categories with search, cart, and checkout. Fully synced with Square so the shop owner manages everything from one place.

End-to-end Square payments

Secure online payments via Square. Each payment links to the order in Square Dashboard, so the shop owner sees one clear record per transaction.

Orders appear in the Square Dashboard

Online orders show up in the same Square Dashboard and app as in-store POS sales. No new tool to learn, no separate inbox to check, everything stays where the shop already manages tills and customers.

Two-way Square integration

Catalogue, prices, and stock levels flow in from Square automatically. Orders, payments, and stock changes flow back out. The website listens for changes in Square and updates itself the moment anything changes at the till, so customers never see stale stock.

Click-and-collect with real opening hours

Customers pick a date from a swipeable strip of the next two weeks, then a time slot. Slots match the shop's actual opening hours, which differ each weekday, and closed days drop off the strip. 24 hours' notice enforced. Order confirmation emails go out automatically.

Back-in-stock notifications, stored in Square

Customers leave their name and email on out-of-stock products. Each subscriber becomes a Square Customer in a per-product group, so the shop owner sees who is waiting for what in their own Square Dashboard. As soon as the shop restocks the item in Square, personalised emails go out automatically.

Forgiving search that handles typos

Customers still find the product when they type 'tumeric' instead of 'turmeric', or 'choclate' instead of 'chocolate'. No lost sales to a misspelling.

Built for phones first

Most customers browse on their phones, so the shop was designed for a phone screen first and scaled up from there. Large tap targets, fast loading, nothing cramped.

Automatic order and reminder emails

Order confirmations, collection reminders, and back-in-stock alerts all send themselves. Rachel never has to write a follow-up email by hand.

Tuned to run on Vercel's free tier

When Rachel's site was on track to blow past Vercel's monthly hosting budget, I rewired things so Square only refreshes the pages that actually changed (not all 21 category pages on every stock update), and paced scheduled refreshes from every 5 minutes to every 15. Result: plenty of headroom under the free-tier limit, no surprise hosting bills.

Catches bugs before customers do

Every change runs through a suite of automated browser tests before it ships: searching, adding to cart, checking out, choosing a collection slot, and notify-me signup. Each one runs on both desktop and mobile. If something breaks, it breaks in development, not in front of a paying customer.

Tech stack

Next.js (App Router)TypeScriptTailwind CSSSquare SDK (payments, orders, catalogue, inventory, customers)Resend (transactional emails)Vercel (UK hosting)Cloudflare (DNS)Playwright (end-to-end testing)

The approach

The core principle: the shop owner should not have to learn new tools. Rachel already uses Square for everything in-store, so the website plugs directly into her existing Square account. Products, prices, stock levels, and orders all flow through one system.

Payments go through Square, and each payment links to its order in the Square Dashboard. When a customer completes checkout, the stock count in Square goes down automatically. No manual stock adjustments, no risk of overselling.

The click-and-collect system was designed around how the shop actually works. Customers browse at home, add items to a cart, choose a collection date, and pay online. The shop receives the order and has it ready when the customer arrives.

Back-in-stock sign-ups are stored directly inside Square as customer records, grouped by the product each person is waiting for. Rachel can see the list in her own Square Dashboard without logging into anything new. The moment she marks a product as restocked, the site picks it up and emails everyone who asked.

Every change goes through a suite of automated browser tests that act like a real customer: searching, adding to cart, checking out, picking a collection slot. Each one runs on both desktop and mobile. Rachel also sees a private preview of any change before it goes live, so nothing reaches the public site without her sign-off.

Want something similar for your business?

I build custom websites and online shops for small businesses. Modern, fast, and built to turn visitors into paying customers.

Book a free chat