Own product

Spectrum Online

Classic ZX Spectrum sports games, to play 1 vs 1 online from the browser. Free and nothing to install.

When I was 7 or 8, my brother and I had a ZX Spectrum 48K. I learned to program BASIC on it through trial and error, and that became the foundation for my work years later. I was very good at Match Day, and I always wished I could play against more people.

One day I thought: how cool would it have been to play Match Day online? And why not try building it? Once the online play system was in place, I decided to add more games. That’s how Spectrum Online was born: the original games, in the browser, against a friend in their own home.

All the code was written with Claude, Anthropic’s AI. I didn’t write a single line: I kept telling it what I wanted and Claude programmed it. As a kid I learned on the Spectrum through trial and error; the process now is similar, but my part is knowing what to ask for.

For now there are four: Match Day and Match Day II (Ocean), Match Point (Psion / Sinclair) and Fernando Martín Basket Master (Dinamic). The catalogue will keep growing, and users can suggest games.

Tech stack

  • Built with Claude (Anthropic's AI)
  • HTML + JavaScript, no frameworks
  • Vite (build)
  • JSSpeccy 3 (WebAssembly emulator)
  • WebRTC (game video to the guest)
  • PeerJS (data channel for the keyboard)
  • Multi-page site with JSON-LD (VideoGame, FAQPage, Person)
  • Games loaded from Internet Archive

The technical challenge

Spectrum games were made for two players sitting at the same keyboard. The challenge is letting two people play from different homes without touching the original game and without running a game server of my own.

The solution: the emulator only runs in the browser of whoever creates the match. The game image is sent to the guest as video over WebRTC, and their keystrokes travel back over a data channel (PeerJS) and are translated into player 2's keys. The guest joins with a 5-letter code, watches the match live and plays with their own keyboard.

Then there are the details of each game. Match Day ships with player 1 set up for a joystick the emulator doesn't have. Claude found where in the Spectrum's memory the game stores its controls, and the site rewrites them on load.

Process and decisions

The project is built entirely with Claude. My role was that of the person commissioning it: the idea, which games to include and how I wanted a match to work. Claude proposed how to do it and wrote the code.

HTML and JavaScript with no frameworks, built with Vite. It's a multi-page site designed for SEO, with structured data (VideoGame, FAQPage, Person). For what it does, a framework would only add weight.

The emulator is JSSpeccy 3, compiled to WebAssembly, which runs the original games inside the browser. The games aren't hosted on the site: they're loaded from Internet Archive's ZX Spectrum collection.

The menus in these games are from another era, so a "Get the match ready" button goes through them on its own until kick-off. Each game has its own automation so nobody has to fight with them. You can also play alone against the computer.

Traction

4Games
5 lettersMatch code
NoSign-up
NoneAds
NoneData stored
NoneOwn game server

What does this mean for your project?

Above all, it shows how far AI-driven development goes today. A project with emulation, real-time video and online play, built entirely with Claude from what I kept asking for, with no team behind it. If you have an idea and want to know whether it can be built this way, this is the example.

Also, if your project needs to connect two users in real time (seeing the same thing at once, sharing a screen, sending actions from one to the other), this project shows it can be built with WebRTC directly between browsers, with no server of your own in the middle and no per-use cost.

It's also an example of heavy software running inside the browser with WebAssembly: here it's a whole 1980s computer, but the same pattern works for tools that today require installing something.

And if you need someone to dig into the guts of a system you don't control (an old program, a closed format, something undocumented) to make it work differently, rewriting Match Day's controls in the Spectrum's memory is exactly that.

Want something similar?

Tell me what you have in mind and I'll tell you what I can do.