Projects

Selected work

MSc dissertation · Royal Holloway, University of London

Hybrid visual–forensic deepfake detectionMSc dissertation

A two-stream deepfake image detector that fuses an EfficientNet-B4 network with 406 hand-crafted forensic features through a learned attention gate, evaluated for robustness to JPEG re-compression and on an unseen dataset. On the identity-disjoint FaceForensics++ test set the hybrid reached 0.981 AUC, ahead of either stream on its own.

PythonPyTorchEfficientNet-B4timmOpenCVscikit-learnGradio
Personal project · runs on my home server

Keel: a self-hosted, Supabase-compatible backendInfrastructure

A backend platform for my home server that speaks Supabase's APIs: Postgres, REST, auth, file storage, realtime and edge functions, with one isolated database per app and a web dashboard to run it all. Apps use the standard supabase-js client unchanged, and this website's content is served from it.

TypeScriptPostgreSQLPostgRESTDocker ComposeReactDenoSelf-hosting
Personal project · self-hosted on ZimaOS

ZimaControl: monitoring and control panel for my NASSelf-hosting

A single-container control panel for my ZimaOS home server: live hardware, drive and container monitoring with alerts, safe Docker Compose updates with automatic rollback, and one table that drives private Tailscale access to every app.

TypeScriptFastifyReactSQLiteDockerTailscaleSelf-hosting
Personal project · Android app and PWA

povseDnev: everyday tracker for habits, tasks and notesMobile app

An offline-first, English and Russian life organiser that puts habits, tasks, reminders, notes, a journal and money tracking in one calm app. It runs as an installable web app and as a native Android app with home-screen widgets, and keeps every byte of data on the device.

TypeScriptReactCapacitorAndroidPWAOffline-firsti18n
Personal project · web app (PWA)

UniCalendar: timetable, deadlines and grades in one placeWeb app

A calendar and study planner for university students that works offline. It imports the official timetable from an .ics feed and adds what students track themselves: attendance, coursework deadlines, grades and the mark needed on the next assignment, with optional encrypted sync to the user's own Google Drive.

ReactViteZustandPWAGoogle Drive APIWeb CryptoiCalendar
Personal project · Android app and web dashboard

CatGuard: on-device cat recognition on a spare phoneComputer vision

An Android app that turns an old phone into an always-on camera which recognises my own cat on the device and sends a Telegram photo alert when an unknown cat comes in, with a web dashboard for the event history. It's tuned to run all day on a low-end Android 8 phone.

KotlinJetpack ComposeTensorFlow LiteCameraXFirebaseComputer vision
Programming coursework · Durham University

SmartCase: full-stack online shopFull-stack

A phone, case and charger shop built from scratch: an Express REST API over JSON data stores, a customer front end with cascading product filters and a cart, and an admin panel for adding and removing stock. Delivered with API documentation, automated tests and a demo video.

Node.jsExpressREST APIJavaScriptBootstrapMochaChai
COMP2271 Data Science · Durham University

Laptop market data cleaning & recommendationsData science

Cleaned a messy scrape of 4,445 Amazon laptop listings down to 2,294 analysis-ready rows, then used the clean data to recommend five laptops under $1,500 for each of two customer profiles.

PythonpandasseabornData cleaningEDA
Networks coursework · Durham University

Multi-client chat & file server over TCPNetworking

A multi-threaded client–server application built on raw TCP sockets: clients connect with a username, message the server, send private messages to each other, and use a command protocol for listing online users and downloading shared files.

PythonSocketsTCPMultithreading
Computational Thinking (Logic) · Durham University

Building a SAT solver: from brute force to DPLLFirst year

First-year logic coursework: a DIMACS CNF parser and a progression of satisfiability solvers in Python (exhaustive search, recursive branching, unit propagation and a DPLL-style solver), exercised on classic encodings such as 8-queens, the pigeonhole principle and the zebra puzzle.

PythonPropositional logicSATDIMACSAlgorithms
Programming coursework · Durham University

Kaversky: my first websiteFirst website

A single-page landing site for a fictional antivirus product, built for my first web programming coursework: a responsive Bootstrap layout, an interactive D3 line chart driven by a CSV dataset, pricing tiers, a pre-order form and a particle snow effect, hosted on GitHub Pages.

HTMLCSSJavaScriptBootstrapD3.jsGitHub Pages