Graham Digital Media · Sites · Apps · Automation

We build clean, fast websites, apps & tools shipped done.

A hands-on studio working in hand-coded web, Python and data automation. Every project is built and tested before handover, documented so you can run it yourself, and delivered on time. No bloat, no frameworks you didn't ask for.

0 Tested before
every handover
0 Disciplines —
web · python · data
0 Documented —
you own it
On time Clear scope,
clear dates

01 What I do

Three lanes,
one standard.

Clean code, real testing, honest delivery — on every build.

Web Development

Responsive marketing sites, portfolios and storefronts — hand-coded HTML/CSS/JS, or React when it earns its place. Mobile-first, fast-loading, accessible.

Sites from $250 · landing pages, portfolios, storefronts

  • HTML5
  • CSS3
  • JavaScript
  • React
  • Responsive

Python & Apps

Desktop apps, console tools and scripts that do real work — file handling, GUIs, speech, persistence. Clean, commented, and easy to extend.

Tools from $150 · scripts, apps, automations

  • Python 3
  • Tkinter
  • Automation
  • Scripting

Data & Excel Tools

Spreadsheet automation, data cleaning and analysis. Live-formula Excel workbooks, charts and dashboards generated straight from your raw data.

Workbooks & dashboards from $100

  • openpyxl
  • pandas
  • matplotlib
  • Excel

02 Selected work

Shipped products —
not mockups.

A flagship platform we own and run, plus a spread of smaller builds you can click around.

Live in production Flagship · Full-stack platform

RCHeliEvents.com

A complete event-management platform for the RC-helicopter community — built by heli pilots, for heli pilots. Clubs and contest directors create and run events; pilots discover them on a live map, register with tiered pricing and add-ons, and check out through integrated payments.

Visit the site

Real accounts, real roles

Pilots, clubs with owner / manager / member roles, contest directors, and sponsor teams with multi-brand switching, transfer & claim.

Registration that bends to reality

Per-entry-type, date-driven price ladders, quantity-orderable add-ons, and a handoff path for events that register on external storefronts.

Payments & money flow

A marketplace checkout built on Stripe — the full vertical, wired so a club gets paid for its own event.

“Crew Chief” — an in-app AI

A scoped assistant that turns a contest director's notes and files into a fully drafted, ready-to-publish event.

Run it like an operator

A platform-admin console with audit logging and user moderation, a news system, automated backups, and one-click data export / restore.

Built to be found & installed

Map-based discovery (MapLibre), an installable PWA, and a full SEO foundation — sitemaps, Open Graph, JSON-LD.

rchelievents.com ↗
  • Next.js
  • TypeScript
  • Supabase
  • Postgres
  • Stripe
  • Vercel

More builds & demos

Live demo Web · Responsive

Construction Company Website

A polished, fully responsive marketing site in clean hand-coded HTML5/CSS3/JS — editorial hero, filterable project gallery, detail views and smooth scroll animations. No frameworks, no page-builder bloat.

Live demo React · Dashboard

Pulse — Sales Analytics Dashboard

Switch the time range and every KPI, the revenue chart, the category breakdown and the sortable table recompute live. React hooks + a hand-rolled SVG chart — no chart library.

Open live demo ↗React 18 · hooks
Live demo Python · Web Scraping

GSMArena Spec Explorer

A hand-coded Python scraper (Requests + BeautifulSoup) crawls GSMArena brand → model → spec pages and flattens every field to CSV. The live explorer searches, filters by brand and sorts the real scraped dataset.

Open live demo ↗Requests · BeautifulSoup
Live demo Data · Excel Automation

Statistical Analysis Excel Tool

A Python tool (openpyxl + matplotlib) that turns raw numbers into a polished workbook: live AVERAGE / MEDIAN / STDEV formulas, an embedded summary chart, and a guided worksheet. Change the data, Excel recalculates.

Open live demo ↗openpyxl · matplotlib
Python · Desktop Engineering

Claude-Browser — macOS automation app

A native macOS app pairing a persistent Chromium webview with a scripting layer of 19 Chrome-DevTools-backed tools — perceive, click, type, extract — so workflows can be driven end-to-end. Electron + CDP, persistent logins, real browser.

Read case study ↗Electron · CDP · Node
Live demo Python · Desktop GUI

Desktop Chatbot with Speech

A Tkinter chatbot with a clean dark UI, optional speech-to-text and text-to-speech, and a conversation history saved to JSON and reloaded on startup. Voice features degrade gracefully — never crashes without a mic. (Web port linked, with live mic + saved history.)

Open live demo ↗Tkinter · SpeechRecognition · pyttsx3

03 How I work

Predictable, first
message to handover.

  1. 01

    Scope

    We agree exactly what you get, for what price, by what date — in writing.

  2. 02

    Build

    Clean, commented code with progress you can see. No black boxes.

  3. 03

    Test

    I run it before you ever do — edge cases, inputs, devices. It works on handover.

  4. 04

    Handover

    Files, a short README, and a walkthrough so you can run and extend it yourself.

Available for new projects

Let's build
the thing.

Tell me what you need — a website, a tool, an app, an automation. I'll come back with a clear scope, a price and a date. Quick to reply, honest about what's possible.