Projects
Six technical projects, from self-hosted infrastructure to web applications and desktop tools.
Self-Hosted Network Infrastructure
2026, ongoing
Problem
Running a private server with no public exposure, with all outbound traffic forced through one controlled gateway.
What I built
A two-node private network, designed and deployed from scratch. The gateway node runs a WireGuard VPN with an iptables kill-switch, a Tor transparent proxy and NAT routing. The server node runs under LUKS full-disk encryption, unlocked over SSH through Dropbear in the initramfs; it has zero public exposure and routes all egress through the gateway.
On top of this sits an asynchronous Python service, using aiogram and the SQLAlchemy async ORM, with PostgreSQL 16 and Redis 7 running in Docker and managed under systemd. A separate alerting service subscribes to Redis pub/sub.
Technologies
- WireGuard
- iptables
- Tor
- NAT routing
- LUKS
- Dropbear
- Python (async)
- aiogram
- SQLAlchemy async ORM
- PostgreSQL 16
- Redis 7
- Docker
- systemd
Kind Organisation — AI-Assisted Consultation & Quoting Platform
2026, in development
Problem
Turning a client consultation form into tailored organising recommendations and an itemised quote, using live product data.
What I built
A full-stack web application for a home-organising consultancy, built on Next.js and Node.js and deployed to Vercel as serverless functions. It uses the Claude API to generate tailored organising recommendations from a client consultation form, pulls live product data from a Google Sheets backend via service-account authentication, and produces itemised client quotes.
Supporting work includes a caching service layer, a CSV import pipeline with schema validation and fuzzy column matching, and a product catalogue of 44 SKUs mapped across suppliers, materials and dimensions. The application is architected with separated UI, API and data layers.
Technologies
- Next.js
- Node.js
- Vercel serverless functions
- Claude API
- Google Sheets API (service account)
- CSV import
Scalewise — Pricing & Margin Desktop Widget
2026
Problem
Turning one wholesale unit cost into a resale price for every sale size, and re-pricing the whole range when supplier costs change.
What I built
A native KDE Plasma 6 widget. A tolerant unit parser handles mixed fractions and multiple measurement systems, with validation and rollback on input it cannot parse. Price and margin can each be calculated from the other, across two pricing modes, fixed-price and target-margin, with lossless conversion between them.
Rounding is configurable, and the widget reports the margin actually realised rather than the margin requested. It is packaged as a distributable plasmoid with a unit test suite and a versioned build pipeline.
Technologies
- KDE Plasma 6
- QML
- Qt 6.8
- Unit testing
Budget Gauge — KDE Plasma 6 Desktop Widget
2026
Problem
Forecasting available budget from UK payday and BACS credit dates, across different payment cycles.
What I built
A native desktop widget for KDE Plasma 6 that models UK payday and BACS credit dates to forecast available budget. It handles monthly, weekly and four-weekly payment cycles, with date-boundary logic for payment-day edge cases.
Technologies
- KDE Plasma 6
Linux System Management Toolkit
2025–2026
Problem
Keeping changes to a Debian 13 workstation staged and reversible, rather than relying on ad-hoc configuration.
What I built
A structured script repository for managing a Debian 13 workstation, in which system changes are made in stages and can be reversed.
Technologies
- Debian 13