I'm Aryan. I build whole products, often late.
A web developer in the UK. I build solo in TypeScript, from the database to the iOS build, and I'm now teaching myself to build AI: RAG and agents.
- Role
- Web developer, solo
- Based
- UK
- Learning now
- RAG and AI agents
- Final-year project
- University of Birmingham
Sources for these facts
- Role: git shortlog across my repos
- Based: Aryan
- Learning now: Aryan, October 2026
- Final-year project: Project-RPG; git.cs.bham.ac.uk projects-2024-25
Who I am
Much of what I build is the unglamorous part: HMRC tax rules and clock changes on Shyft, and on EstateLink, a database transaction that stops a tenant ending up half moved in.
I work in TypeScript and I write in British English. I also don't invent numbers. If a figure is on this site, the file or command it came from is written underneath it, and if I don't know something, I leave it out.
My first web-dev client was a BMW and MINI workshop in Brierley Hill. My first LLM call was in my final-year project at the University of Birmingham. Now I'm learning RAG and agents, from the beginning.
AI learning
What I'm learning now
Building AI, not just using it. I'm at the very start: nothing shipped yet, and I'd rather say that plainly.
Now
RAG
Getting a model to answer from my own documents instead of from memory: find the right passages first, then let the model answer from those, with its sources.
Source: Aryan, October 2026Now
AI agents
Models that work through a task in steps and use tools along the way, rather than replying once. Also at the start.
Source: Aryan, October 20262024 to 2025
Mythos, my first LLM call
My final-year project. Type a chore and an OpenAI model turns it into a fantasy quest with XP. The bit I'd keep: it checks the model's JSON and clamps the XP between 10 and 150 before anything reaches the screen.
Source: Project-RPG backend/controllers/questController.js, lines 51 to 70
About the map on the home page: it's a keyword toy. It scores words, not meaning, and it says so under the search box. Try the toy
Source: this site, src/scripts/retrieve.tsMy busiest hour is 23:00.My quietest is 09:00.
I commit late. Across five repos and 990 commits, the bars climb through the evening and peak at 23:00, with 113. Another 261 landed between midnight and 5am.
Monday is my busiest day, with 231 commits. Saturday and Sunday come second and third.
All 24 hours
- 00:00
- 109
- 01:00
- 69
- 02:00
- 44
- 03:00
- 25
- 04:00
- 14
- 05:00
- 4
- 06:00
- 3
- 07:00
- 5
- 08:00
- 5
- 09:00
- 1
- 10:00
- 24
- 11:00
- 24
- 12:00
- 33
- 13:00
- 45
- 14:00
- 51
- 15:00
- 57
- 16:00
- 46
- 17:00
- 37
- 18:00
- 40
- 19:00
- 39
- 20:00
- 51
- 21:00
- 55
- 22:00
- 96
- 23:00
- 113
- Commits
- 990
- Peak hour
- 23:00, 113
- Midnight to 5am
- 261
- Busiest day
- Monday, 231
A real commit message from the 1am hour, on Shyft:
fix(legal): keep the employer's records when a worker deletes their account (#367)
What I've built so far
Four projects, with honest labels. Each page has the full story and its sources.
Shyft
My product, live on the web
Shift tracking and real take-home pay for UK workers. The iOS app is in App Store review.
CODEMYBM UK
Client work, my first web-dev client
A full rebuild for a BMW and MINI coding workshop in Brierley Hill.
EstateLink
My product
Property management for UK landlords: properties, tenants, leases and a live dashboard.
Mythos
Final-year project
A to-do app where an LLM turns chores into quests with XP.
Tools I build with
- TypeScript
- Every front end here, in strict mode on Shyft and CODEMYBM UK
- React
- Shyft, EstateLink, Mythos, and CODEMYBM UK through Next.js
- Vite
- Shyft, EstateLink, Mythos
- Next.js
- CODEMYBM UK
- Supabase
- Shyft: the database, auth and edge functions
- Postgres
- Shyft, through Supabase, with row-level security
- MongoDB
- EstateLink, Mythos
- Capacitor
- Shyft's iOS app, from the same codebase as the web
How I work
I check my maths against the source.
Shyft's tax engine is tested against all 1,000 entries of HMRC's Table A, plus a 2,000-case property test that checks nothing goes negative and take-home never beats gross pay.
Source: Shift-Tracker client/src/lib/__tests__/hmrcTableA.test.ts; client/docs/payroll-engine.mdI write decisions down.
Shyft's payroll engine has a doc of its decisions of record: what it deliberately doesn't do, and how it rounds. One test is set to fail from 6 April 2027 until I re-check the tax constants for the new year.
Source: Shift-Tracker client/docs/payroll-engine.md; client/src/lib/taxCalculator.ts, line 104Every figure has a source.
Including on this page. If a number appears, where it came from is written under it. If I can't source something, it stays off the page.
That's me, so far.
If something here is useful to you, or you're learning RAG too, get in touch.