Photo of Daniel Allen

Portfolio / Selected Work

Work across full stack, embedded systems and AI-assisted tooling. The first three are the most complete — each carries an automated test suite and continuous integration, and each documents the reasoning behind how it was built. More background →

Lets you use a language model on real email without handing over the contents. It finds email addresses, phone numbers and long account references, replaces each with a random token, and keeps the mapping on your own machine. You paste the scrubbed text into the model, save its reply, and the tool puts the real details back — so the model only ever sees tokens while the finished result still reads correctly.

Written in C++ with a SplashKit review window, because nothing should leave the machine without a person seeing it first. Carries 40 automated tests, including a round-trip test proving that text comes back byte for byte identical after being anonymised and restored. Eight of those tests exist to hold specific defects shut, each one written after the defect was found and fixed.
An Arduino keypad scans three-digit product codes onto a pantry, Node services move those scans into MongoDB, and an Express interface turns them into stock levels and a shopping list. Built as a university IoT project and since brought up to a demonstrable standard: one command starts the whole system in Docker with a seeded pantry, no hardware and no cloud account required.

Covered by 56 automated tests that start the real services as operating system processes and drive them from the outside, rather than reaching into the code — so what is tested is the running system, not a stand-in for it. The repository also refuses to ship if a credential is committed.
The site you are reading. Vue 3 and Vite, compiled to a static build and served from a plain host — no backend and no database.

Audited and rebuilt in July 2026: the build went from 7.5MB to under 250KB after an unused 11MB video and a 7.3MB autoplaying one were removed, and the layout, link handling and heading structure were fixed. It now carries 58 automated tests, run at desktop width and at a real phone viewport, plus a check that fails the build if the page weight creeps back up.
Overview: A full-stack quiz and learning application integrating a large-language-model backend with a multi-user Android client. The system demonstrates secure client–server communication, local data persistence, API design, and LLM integration through the Hugging Face Gemma 3-27B model.

Frontend (Android): Built in Java using Android Studio with XML-based layouts and Retrofit2 for network communication. The client handles user authentication, question retrieval, answer submission, and result tracking through a REST interface exposed by the Flask API. Local storage and state management are implemented with Room Database (DAO architecture), allowing offline caching and session continuity. The UI applies Material Design principles and clean separation between data, adapter, and view layers for maintainability.

Backend (Flask + LLM): Python Flask server exposing REST endpoints for quiz creation, evaluation, and user/session management. The backend connects to Hugging Face via the Gemma 3-27B inference API, transforming user requests into structured prompts and returning generated questions or reasoning feedback. JWT-style authentication, environment-isolated tokens, and CORS-safe responses ensure secure external access. The design mirrors production-grade service layers, demonstrating integration between traditional web APIs and transformer-based inference services.

Connection flow: Android app → Flask API (10.0.2.2:5000 during dev / deployed server in production) → Hugging Face LLM. The architecture separates presentation, logic, and model inference layers for scalability and maintainability.
A full stack news and newsletter application integrating React on the client side with a Node.js and Express backend hosted on Netlify. It combines multiple live APIs and external services, including Mailchimp for audience management, SendGrid for transactional email automation, and Stripe for payment handling. The project demonstrated end-to-end development, from frontend validation and state management to serverless backend logic for subscription and email workflows. It highlighted the importance of asynchronous request handling, environment variable security, and UX design for user-facing systems.
Other Projects
Collabaccino — an ongoing build with a senior developer: Java backend, MongoDB persistence, session and device tracking, access control, and a Svelte + TypeScript client. Real code review and real standards, which is the part that taught me most.

Smart Bin Sensor Project, Moyne Shire Council — technical research, design and vendor analysis for IoT bin sensors, collection optimisation and cost modelling. A community problem rather than a coding exercise. Delivered and funded, September 2025.

TalkSensei — my concept for a classroom memory-assisting and sentiment feedback app: speech-to-text in real time, tone analysis, and a running memory of prior sessions to improve recall and engagement.

IoT prototypes — a pet door and a shopping assistant, built to link physical triggers such as movement, access and usage to useful data and automation logic. Designed, built, programmed and tested.

Other Sites:

Visit My GitHub Repository

Visit My LinkedIn Profile