Builds

A collection of solo projects.

A handful of projects built end to end: real-time multiplayer servers, minimalist web apps, and a personal productivity tool. Each one is about solving one hard problem properly.

Python Crystal JavaScript React Vue Alpine.js MySQL MongoDB Redis Elasticsearch Encryption Linux/Ubuntu Game AI WebSockets Game Servers

12 years industry experience.

Projects

Landing

Live

A personal markdown notes and task app, with optional end-to-end encrypted private notes and a few games built in for downtime.

Crystal Kemal Alpine.js Markdown notes Tasks E2E encryption Negamax AI PWA

Features

  • Freeform markdown note-taking alongside a simple task list, where each task carries one of three statuses: todo, doing, or done.
  • Any note can optionally be encrypted end-to-end with its own separate password, for anything meant to stay private.
  • A couple of built-in games for downtime, including a full checkers implementation.

⚙ Under the hood

Per-note encryption is built on industry-standard cryptography (AES-256, with the key derived from your chosen password) applied entirely client-side, so the server only ever stores ciphertext and never sees the password or the plaintext note.

The checkers opponent runs a negamax search with alpha-beta pruning, sensible move ordering, and a tuned position evaluation layered on top, strong enough to give a genuinely tough game rather than an easily-beaten scripted AI.

izrite.com/landing →

Bible Reader

Live

A minimalist Bible reading app built on the public-domain Berean Standard Bible, with accounts, notes, and cross-references.

Node.js Express 5 EJS Alpine.js better-sqlite3 express-session PWA

Features

  • Clean chapter-by-chapter reading (/read/GEN/1) preserving poetry line breaks, section headings, Psalm superscriptions, and "words of Jesus" styling.
  • Personal accounts with notes attached to specific passages.
  • Automatic linking of Bible references mentioned inside your own notes.
  • Rate-limited, session-based auth with no third-party accounts required.

⚙ Under the hood

The Bible text is imported from the official BSB USJ export straight into SQLite via an idempotent, safely re-runnable import script. Translator footnotes are deliberately dropped; everything structural is kept.

Sessions run through a hand-written SQLite-backed express-session store rather than a third-party one, written specifically to avoid pulling a GPL-licensed dependency into a project chosen from the ground up to be free of licensing entanglements.

izrite.com/bible →
🦆

Club Duck

v1

A Club Penguin-style social MMO with free-movement plazas, a player economy, and a room full of minigames, built with no framework and no sprite art.

Node.js ws Express 5 EJS bcrypt Canvas 2D Binary protocol

Features

  • Persistent world: Plaza, Harbour, Town Hall, a Games Room, and an instanced home per player, with a day/night cycle tinted client-side off real time.
  • Five solo minigames (memory, minesweeper, sliding-tile, flood-fill, and match-clearing variants) that earn gold, plus fishing and a daily harbour crate.
  • A competitive Hearthstone-style card game with deck building and custom cards.
  • A full customization economy: clothes, hats, dye colors, pets, and floor/wall furniture, with saveable named outfits.

⚙ Under the hood

The server runs one authoritative 120ms tick, so nothing happens the instant a message arrives; it just queues. Updates go out as a single binary buffer per player per tick, split into zone broadcasts (everyone in the room) and private messages (just you); a tick with nothing to report sends nothing at all.

Every duck, pet, and piece of furniture is depth-sorted by its real floor position. Rather than hand-tuning where each sprite's "feet" are, the server renders each one once to an offscreen canvas and measures its true lowest opaque pixel automatically, so a duck can correctly walk behind a bookshelf without anyone manually tuning an offset.

izrite.com/quack →
⚔️

The First Light

In progress

An isometric tile-based skilling MMO, merging a tick-based tile world with Club Duck's avatars and architecture.

Node.js ws Express EJS bcrypt Binary protocol

Features

  • Six distinct zones (Town, Forest, Mine, River, Swamp, Workshop), each with its own resource nodes, shops, or mobs.
  • Woodcutting, Mining, and Fishing as gathering skills, plus Leatherworking as a real buy-process-sell chain, and Combat against mobs on independent attack timers.
  • Smithing and Cooking round out the skill list, each with its own buy-process-sell loop and dedicated station.
  • Player avatars carried over from Club Duck, duck bodies with a waddle animation and trailing pets, rendered on an isometric grid.

⚙ Under the hood

The whole world still runs on one authoritative 280ms tick, nothing happens until the tick fires, using the same zone-broadcast / private / single-binary-buffer wire scheme as Club Duck.

A random asset id is generated on every server restart and injected into the client; the client echoes it back on join as its protocol version, so a stale client that hasn't refreshed since the last restart gets rejected outright instead of quietly desyncing.

Every interactable, a resource node, a shop, a portal, an NPC, a mob, resolves the same way: click a tile, walk to it, and whatever's standing there fires automatically. There's no separate gather, talk, or attack command. Shop buy/sell prices also keep a fixed, genuine gap in both directions, so the only ways to actually profit are gathering or the Leatherworking processing chain, never arbitrage against a shop's own prices.

izrite.com/tfl →

Board Games

Live

A collection of multiplayer board games, each paired with its own AI opponent. There's no shared engine; each game gets whichever technique actually suits it.

Multiplayer Minimax / Alpha-Beta Monte Carlo Tree Search Per-game AI

Features

  • Play online against other people, or against a built-in AI, on the same board.
  • Every game has its own dedicated opponent rather than one generic engine bolted on everywhere.

⚙ Under the hood

Rather than reusing one general-purpose engine across every board, each game's AI is built around whatever technique actually fits its structure: search-based opponents for games with small branching factors, sampling-based ones for games where deep search doesn't scale as well. The difficulty and play style end up tuned per game, not a one-size-fits-all bot.

izrite.com/boardgames →

Other projects

🧩

Puzzle Games

A set of local, self-contained browser puzzle games, quick to pick up, no accounts needed.

izrite.com/games →
🔲

Picross

50 active players

A nonogram-style picture logic puzzle, picked up by a small steady player base.

izrite.com/picross →