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 — Watch it build

Four builds, one continuous scroll.

An editor drives everything on the right — theming, i18n, a 3D-tilted layout, and a live payment-gateway swap. Keep scrolling; nothing here snaps, it all just tracks your scrollbar.

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

02 — Past highlights

Two builds worth a closer look.

eu-co.co.uk

Est. 1968

Edinburgh University
Chamber Orchestra

Autumn season now on sale

View concerts

Edinburgh University Chamber Orchestra

Full website rebuild from Create React App to Next.js 15, with ISR data fetching, Docker deployment, and a custom concert page.

Rebuilt information architecture, live ticket-sales integration, editorial concert pages.

Next.jsDockernginx
dioramaconsulting.co.uk

AI Advisory

Strategy that survives contact with your stack.

Diorama Consulting

Book a call

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

03 — How it runs

Four stages, start to finish.

01

Discover

A short call to understand what the site actually needs to do — and, just as importantly, what it doesn't.

02

Design

A distinct visual direction grounded in the subject, not a generic template with a new logo dropped in.

03

Build

Typed, componentised, and version-controlled from the first commit — built to be handed off or extended later.

04

Launch & support

Deployed with CI/CD behind me, and available afterwards for the inevitable content tweak or feature request.

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.