PillPharm
Online pharmacy platform
Built as a web developer on the in-house team at The ST Groups.
Visit the live site
Context
PillPharm is a UK online pharmacy. I built its storefront as a web developer on the in-house team at The ST Groups, which runs the pharmacy, so this is employer work rather than a client project. Prescription medicines cannot be sold like ordinary products: a patient has to answer a set of medical questions first, and a prescriber reviews the answers before anything is dispensed.
The problem
A UK online pharmacy needed a storefront where patients could find a treatment, answer the medical questions a prescriber needs, and order, all in one place.
What I built
Built the Next.js frontend with structured treatment categories, product detail pages, a five-step consultation form, and a responsive ordering flow.
The consultation flow
The consultation is a five-step form with a progress bar, so a patient always knows how far through they are. Some answers rule a treatment out. When that happens the form stops and shows a clear 'no suitable treatment' outcome instead of letting the patient carry on to checkout, which protects both the patient and the pharmacy. Completed answers lead to a results page with the treatments the patient can go on to order.
Catalogue and cart
Treatments are organised into categories and sub-categories, each with its own product pages. The cart, wishlist and compare list live in a Redux Toolkit store that is saved in the browser, so a patient who refreshes the page or comes back later still finds their cart where they left it. Orders and consultation answers go through an API to the pharmacy's own order and assessment back office, where the clinical team reviews them.
The hard part
Keeping a content-heavy healthcare catalogue readable and quick to navigate without a heavy client bundle.
Result
Live storefront with a consistent component system and fast page transitions.
Built with
- Next.js
- Renders pages on the server, so content is in the HTML for crawlers and the first paint does not wait on JavaScript.
- React
- Component model for interfaces with state, so shared UI is written once and reused across pages.
- Redux Toolkit
- Holds shared client state such as the cart in one store, so every page reads the same values.
- Bootstrap
- Responsive grid and base components, so layouts hold up across screen sizes without custom breakpoints for everything.
Hiring from the United States? What working together looks like →

