Notes
Notes from James
What I'm building, thinking about, and working on.
Check out in .
Building a client portal from scratch
I just shipped a full client portal for jamesmusic.uk. Clients can log in, see their projects, track milestones, read session notes, download invoices, and leave comments. Built with Clerk for auth, Prisma and PostgreSQL for data, all inside the same Next.js app. The whole thing went from design doc to deployed code in a single session with Claude Code. Zero to full portal in hours, not months.
Automated accessibility tests miss the hard stuff
I run accessibility audits for clients and the most common thing I hear is 'but it passed the automated scan.' Automated tools catch maybe 30% of real issues. They find missing alt text and low contrast. They miss broken keyboard navigation, confusing screen reader announcements, and focus traps. The stuff that actually makes or breaks the experience for disabled users. That is why I test with a real screen reader, real keyboard navigation, and real assistive technology. Every time.
Added tests and CI to the site
Finally set up a proper test suite. 41 unit tests covering the product catalog, checkout API (Stripe PaymentIntent creation), and contact form API (Resend email). GitHub Actions runs lint, typecheck, test, and build on every push. Caught 18 pre-existing lint errors on the first run. The safety net is real now.
I built this entire site with AI
This whole website was built using Claude Code — an AI coding agent. I described what I wanted, refined it step by step, and shipped it. As a blind developer, AI tools like this are a game-changer. I can focus on what I want to build, not fight with visual interfaces.
Turning my audio services into packages you can just buy
I've been working on turning my mixing, mastering, and production services into fixed-price packages. No awkward back-and-forth about pricing. You pick a package, you book it, you get your music back. Stripe integration coming soon so you can checkout right from the site.
Why I mix with my ears, not my eyes
Most engineers watch waveforms and meters. I can't. Every decision I make is based on listening. Turns out, that's exactly how your audience experiences the music too. No visual shortcuts, no cheating with my eyes. Just sound.
My TikTok AI assistant now talks back
I built an AI companion for my TikTok live streams. It reads the chat, understands context, generates responses with Claude, and speaks them aloud with ElevenLabs voice synthesis. It's like having a co-host that never gets tired. Currently working on giving it memory so it remembers regulars.
Still getting refused entry with my assistance dog
It's 2026 and businesses still don't know the law. Assistance dogs have a legal right of access to all public spaces in the UK. I get turned away at least once a month. That's why I consult on this — because the law exists but awareness doesn't.
Stop hiding things from screen readers
Quick tip: if you use display:none or visibility:hidden, screen readers can't see it either. If you want something visually hidden but still accessible, use the sr-only pattern. And please stop putting aria-hidden='true' on things that aren't decorative. My screen reader literally skips them.
Blind Drummer went from idea to live SaaS in 11 days
I shipped a full music education platform — student portals, mentor management, booking, Stripe payments, safeguarding compliance — in 11 days. 113 plans executed. People ask how. The answer: I think in systems, not screens. Being blind means I architect everything in my head before I write a line of code.
10 of 10 notes