Los Mochis, Sinaloa · México

Miguel Cabañas Galaviz

Full-Stack Developer

Six years on the same B2B SaaS — Clixie.ai, an interactive video platform used across the US, Mexico and Brazil. I work on the authoring tool: rebuilding the Markers system, moving the UI from Material UI to Tailwind, tuning Redis and Sidekiq in production, and chasing down race conditions.

Off the clock I build things that keep working when the network stops.

Things you can open

loteria

The traditional Mexican Lotería, called out loud by your browser.

A caller, not a game board: it shuffles the deck, shows the card and speaks its name through the Web Speech API. All 108 cards are precached by the service worker, so it deals in airplane mode. It holds a screen wake lock while you play, because a phone that sleeps mid-game is useless.

  • React
  • Tailwind
  • PWA
  • Web Speech API
loteria screenshot

DSBlive

A no-code data platform: design your own fields, forms and dashboards.

The schema is data, not migrations — fields, form types and records are rows, so a user invents a form at runtime and the charts follow. Reads are open by design; every write is gated at the database by row-level security, which is why the demo account below is read-only by policy rather than by hidden buttons.

  • React 19
  • Vite
  • Supabase
  • PostgreSQL
  • Recharts
DSBlive screenshot

isan

Notes that are encrypted before they ever leave your device.

A random 256-bit key encrypts each note with AES-GCM. That key is never uploaded raw: it is wrapped twice, once with a key derived from your password and once from a BIP39 recovery phrase, both through PBKDF2-HMAC-SHA256 at 150,000 iterations. The server only ever holds ciphertext — losing the phrase means losing the notes, and that is the point.

  • Flutter
  • Dart
  • Drift
  • Supabase
  • AES-GCM
isan screenshot

Arcanum XVI

A roguelike about climbing a tower that never ends.

Procedural floors, fog of war and a 7×5 tactical grid where every swing is a d20 roll resolved out loud in the combat log. No classes — six stats and twenty-two tarot blessings decide what a run becomes, and death keeps your level but takes the gear and the gold. Playable in the browser, no download.

  • Godot 4
  • GDScript
  • HTML5
  • Pixel art
Arcanum XVI screenshot

hey-watch-out

Take breaks. Look away. Breathe.

Every twenty minutes it takes over every monitor at once, counts twenty seconds down and gets out of the way. Interval, wording, colours, background and the skip button are all yours to set. Built because the app I liked kept its nicest animation behind a subscription.

  • Electron
  • Node
  • macOS + Windows
  • MIT
hey-watch-out screenshot

Private work

These repositories are closed — the Lotería ones ship a card deck I do not hold the rights to distribute. Happy to walk through any of them in a call.

Ruedo Master

A hundred sets of Lotería boards, none of them a repeat.

It builds ruedos by partition instead of by chance, so the constraints hold by construction rather than by retrying until they do. Every set carries a SHA256 fingerprint of its sorted cards and is compared against the library through PostgreSQL GIN indexes, and unique indexes make the database — not the application — the final authority on whether a set repeats. Then it prints: a vector PDF measured in real millimetres, with cut guides, so what leaves the printer is a playable board.

  • Rails 8
  • PostgreSQL
  • React 19
  • Docker
Ruedo Master screenshot

Ruedo Player

Your printed boards, replicated on the phone.

Someone else calls the cards out loud in the room — the app only holds your five tablas and marks them, offline, because the game happens where the signal does not. A winning pattern is a 25-bit mask over the 5×5 grid, so "cuadrito donde sea" is not a special case in the code: it is one mask slid into each of the sixteen positions it fits, and the picker draws every one of them.

  • React 19
  • Vite
  • Supabase
  • PWA
Ruedo Player screenshot

Stack

Frontend
React 19 · Redux · JavaScript · Tailwind CSS 4 · Vite · PWA
Backend
Ruby on Rails 8 · PostgreSQL · MySQL · Redis · Sidekiq · Supabase
Also
Flutter · Godot 4 · Docker · Linux CLI