Available for new projects

Websites built like software, not like templates.

I design and build full-stack web projects — from marketing sites to content-managed platforms — with the same rigour I'd bring to a research codebase: typed, version-controlled, and built to be maintained.

paolo.ts
const developer = {
  name: "Paolo Minhas",
 stack: ["Next.js", "TypeScript",
          "Docker"],
 basedIn: "Edinburgh, UK",
 also: ["physicist", "musician"],
};

01 — How we work

A website should earn its keep.

It has never been easier to put up a site through a builder or a subscription service. The difference is what happens next — here's what actually goes into making one stand out.

Start with the goal

Before any design work happens, we find the number that actually matters — more people finding you for “concerts near me”, more tickets sold, more sign-ups. Everything on the site channels toward that number, and we set up the analytics to prove it's moving.

“concerts near me”“charity shops in Glasgow”“translations of Homer”

Built to be managed

The build itself moves quickly, and once it's live, running the site is just as easy. Swap a photo, add a concert date, update a price — through a simple editor, no code and no previous experience required.

Efficient by design

Every site is kept as lightweight as possible, which pays off twice: pages load fast, and they use less energy doing it. You can see this page's live score in the footer below — we're also happy to point you toward greener hosting. None of that comes at the cost of accessibility.

Found however people search

We optimise for Google the traditional way, and for the newer generation of AI answer engines — so whether someone types a query into a search bar or asks an AI assistant to find a concert near them, your site is what comes back.

02 — Watch it build

Four builds, one continuous scroll.

Changing your site is as easy as clicking a box to change a colour or typing out a new title. Behind the scenes software works to change words in the source code, as you can see happen to this site live here.

live edits — web/showcase01 · theme

autonomous theme loop

paolominhas@portfolio ~/web $ code theme.config.ts

theme.config.ts
1export const theme = {
2 typography: { family: "Inter", weight: 700 },
3 radius: "12px",
4 palette: {
5 background: "",
6 accent: "",
7 },
8};

scroll-linked translation

paolominhas@portfolio ~/web $ code i18n/localize.ts

i18n/localize.ts
1import { translateNode } from "@/lib/i18n";
2
3export async function localizeRecipe(doc: RecipeDoc) {
4 const source = "en-GB";
5
6 return translateNode(doc, { target: "" });
7}
8// re-render triggers a full-tree locale swap

✓ 14 nodes retranslated → it-IT

direct DOM manipulation

paolominhas@portfolio ~/web $ code Mockup.tsx

Mockup.tsx
1const mockupRef = useRef<HTMLDivElement>(null);
2
3useEffect(() => {
4 const el = mockupRef.current;
5 if (!el) return;
6
7 el.style.transform = `rotateX(8.0deg) rotateY(-22.0deg)`;
8
9 return () => { el.style.transform = ""; };
10}, [x, y]);

swapping payment gateway

paolominhas@portfolio ~/web $ code package.json

package.json
1{
2 "name": "euco-checkout",
3 "dependencies": {
4 "next": "16.1.6",
5 "react": "19.2.3",
6
7 "typescript": "^5"
8 }
9}

✓ added 1 package · stripe-react-js@3.x

✓ added 1 package · worldpay-react-sdk@2.x

Live theme engine

Design tokens,
applied in real time.

#101585#FFDD44
shortbread-recipes.app
The Bake Book
Recipe · Baking · 45 minClassic Buttery ShortbreadThree ingredients, one perfect crumb.Ingredients
  • •250g unsalted butter, softened
  • •125g caster sugar
  • •375g plain flour
  • •A pinch of salt
MethodCream the butter and sugar until pale, work in the flour and salt, press into a tin, prick all over, and bake low and slow until barely golden.
Save recipe
Checkout Powered by Stripe

£48.00

Order #EU-2026-0417

4242 4242 4242 4242
12 / 29
•••
Pay £48.00

03 — Past highlights

Two builds worth a closer look.

Real screenshots — click through either one for a couple more views.

www.eu-co.co.uk
Edinburgh University Chamber Orchestra — screenshot 1 of 3
1/3
Next view

Edinburgh University Chamber Orchestra

Full website rebuild from Create React App to Next.js 15, plus a Stripe ticketing platform with QR check-in and a companion React Native scanning app, replacing a fully manual box office.

Rebuilt information architecture, live Stripe ticket sales with QR check-in, editorial concert pages.

Next.jsStripeReact NativeDocker
dioramaconsulting.co.uk
Diorama Consulting — screenshot 1 of 3
1/3
Next view

Diorama Consulting

A streamlined, dockerised rebuild for an AI advisory firm — migrated from WordPress to Astro with a headless CMS.

Custom design system, CMS-managed case studies, containerised deploy.

AstroDockerKeystatic CMS

04 — How it runs

Four stages, start to finish.

Tap a stage for what it actually involves — including the design tooling behind “Design” and the payment integrations behind “Build”.

Have a project in mind?

Tell me a bit about what you need and I'll reply within a couple of days with next steps.