Portrait of Jay Deaton

Jay Deaton

Senior Full-Stack Engineer · Lincoln, NE

I build and run production software end to end: inventory and point-of-sale apps, APIs, databases, and integrations with Shopify, eBay, Stripe, and AWS. For 10+ years I've been a core engineer behind a buy-sell-trade commerce business, on a small team where I build my projects solo, start to finish, and integrate them with everyone else's. I'm quick to pick up new platforms, from native iOS to AI. On the side, I maintain 30+ open-source packages, most of them for React Native, and design my own app and game icons. I'm drawn to hard things on and off the keyboard: rock climbing, skateboarding, juggling, Arduino projects, 3D design and printing, plus plenty of hiking and camping.

Open to senior full-stack roles: remote, hybrid, or on-site.

Experience

Infinite Token · Full-Stack Engineer & Co-Founder

2016 - Present
  • Core engineer on a 3-6 person team building our commerce platform: 6 apps including POS, inventory, and data sync, plus a central API and databases serving 3 retail locations, 25 staff, and tens of thousands of customers.
  • Built REST APIs and auth in Node.js/Express, plus business apps in React, React Native, and Electron.
  • Integrated Shopify, eBay, Google, AWS, and POS hardware into one system, and implemented Stripe payments online and in store, including Stripe Terminal card readers.
  • Wrote native Swift modules connecting Bluetooth and Zebra label printers to React Native apps.
  • Planned and ran schema and data migrations on live production databases with no downtime or data loss.
  • Solo-built and launched Lumber, an end-to-end encrypted logging service for iOS and macOS (Android, Windows, and Linux coming), with SDKs for several languages and an MCP CLI for AI agents.
  • Led the migration to TypeScript and introduced Jest unit testing and org-wide linting standards.

Gameroom · Operations Manager

2013 - 2016
  • Ran daily operations for a ~30-person buy-sell-trade retailer across sales, e-commerce, and repair, including hiring, coaching, and cash-handling controls.
  • Built VBA automation that cut payroll processing from 4 hours to 20 minutes, and eBay inventory tooling that saved ~20 hours a week and cut listing time ~75%.

Skills

Languages
TypeScript, JavaScript, Swift, Python, SQL, HTML/CSS
Frameworks
React, Next.js, React Native, Expo, Node.js/Express, Electron, Vue/Nuxt
Platforms
iOS, Android, macOS, Linux, Expo EAS, Xcode
Cloud & Data
AWS (Lambda, S3, Elastic Beanstalk, ECR), Supabase, Firebase, PostgreSQL, MongoDB, Redis, SQLite, Docker, GitHub Actions, Vercel, Heroku
Integrations
Git, Jest, REST, GraphQL, WebSocket, Bluetooth, Shopify, eBay, Stripe, POS hardware, Google APIs (Gmail, Gemini, Merchant Center, Ads)
Design
Affinity: app and game icons, logos

Live Web Tools

MapFolio

Build custom maps: drop pins, draw routes, add captions, then print to PDF or share the whole map in a link.

TrimBox

Gmail inbox cleaner: finds bulk senders, with one-click unsubscribe and bulk archive or trash.

SnaPDF

Save ChatGPT and Claude conversations as searchable PDF or plain text, virtual scrolling and all.

GraPDF

Merge every PDF linked from a webpage into one downloadable booklet.

Pixelated

Pixelate images with retro palettes, block shapes, and dithering, in the browser or from the CLI.

Private Projects

Lumber

End-to-end encrypted cloud logging, on the App Store for iPhone, iPad, and Mac. SDKs for Node.js, Python, Go, PHP, and .NET encrypt each log with AES-256-GCM before it leaves the server, so the Express API, socket.io server, and workers on PostgreSQL (Supabase) only ever hold ciphertext. Each app key is wrapped per user with X25519, and new devices and teammates are confirmed with short codes over CPace. Clients: an Expo app, its Electron build for the Mac, and a CLI that hands decrypted logs to AI agents over MCP.

Open Source

7 packages
ShowLumber packages

CashierFu

Point-of-sale system for small retailers: a Nuxt web app, native iOS and macOS apps in Swift, a WebSocket server, and an Express API with sales and inventory analytics, built on a TypeScript ORM package. Each shop connects its own Stripe account to take cards on Stripe Terminal readers, and tracks stock across storefronts and containers.

CashierFu-Utility

CashierFu's mobile companion, in React Native and Expo: shop staff turn products into trackable units, move and audit stock across containers, photograph units for the storefront, and print labels on Zebra Bluetooth printers through native modules. The same codebase also builds against MediaEncyclopedia's API, each backend from its own EAS profile.

Most of this code is private, but I'm happy to walk through the architecture.

Open Source

@rific

15 packages

Expo and React Native utilities used across all of my apps.

Start Here

Expo Starter

A production-ready Expo app template with Redux, Paper theming, and OTA updates, with these packages wired in and live demos to try them.

Haptics, hitSlop, and OTA updates need a real device.

Open Full Page
Show@rific packages
  • @rific/core

    Shared foundation: live, patchable settings in Context or Redux, plus optional peer-module injection.

  • @rific/auto-paper

    React Native Paper theming from a single seed color, with system, light, and dark modes.

  • @rific/drawer

    Spring-animated left and right drawers with edge-swipe gestures.

  • @rific/feedback-press

    Haptic and sound feedback for Paper and built-in pressables.

  • @rific/focus-chain

    Moves focus through form inputs in order, on native or web.

  • @rific/gestures

    Swipe-to-dismiss with flicks, and pinch-to-zoom about the point between the fingers, both measured in the view's own coordinates.

  • @rific/heatmap

    GitHub-style activity heatmap rendered in SVG.

  • @rific/resizable-input

    Auto-growing, drag-resizable text input that wraps any input component.

  • @rific/scanner

    Full-screen barcode scanner with pinch zoom, a timeout ring, and scan tracking.

  • @rific/scroll-view

    Blurred floating headers and footers, keyboard awareness, and scroll-away chrome.

  • @rific/splash-gate

    Holds the splash screen until fonts, theme, auth, and other startup conditions are ready.

  • @rific/sync

    SQLite sync engine for Expo: schema management, upserts, deletes, and cursor state.

  • @rific/timer

    Animated SVG progress-ring timer.

  • @rific/toaster

    Stacking, animated toasts with history and swipe-to-dismiss.

  • @rific/updater

    Over-the-air Expo updates: silent background fetch, plus a manual check with confirmation.

@tastic

12 packages

The game engine behind my games, many of which are built for local multiplayer on one shared screen.

Show@tastic packages
  • @tastic/core

    Shared foundation: 2D vector math, a frame-clamped game loop hook, and touch or keyboard detection.

  • @tastic/achievements

    Tiered achievements and stats per player profile, with win and day streaks.

  • @tastic/cards

    Playing-card faces, backs, court figures, and suit pips, plus a shared card model.

  • @tastic/edge-guard

    Expo config plugin and hook that block iOS edge gestures over in-game controls.

  • @tastic/grid

    Tile and board math: bounds, cell and pixel conversion, adjacency, and flood-fill reachability.

  • @tastic/hud

    Popovers, pickers, gauges, ready buttons, and dialogs that stay on each player's side of a shared screen.

  • @tastic/input

    Worklet-safe input: swipe directions, keyboard schemes, drag aiming, and flick velocity.

  • @tastic/physics

    2D arcade physics: collision, reflection, friction, gravity wells, and springs.

  • @tastic/profile

    Saved player names, colors, and tags, with a per-seat picker and a roster editor.

  • @tastic/shell

    The app around a pack of games: Home, loadouts, stats, profiles, and settings, with one persisted Redux store and the root providers, driven by a single pack definition.

  • @tastic/split-screen

    Two-player screen splitting, face to face or side by side, based on device orientation.

  • @tastic/sprites

    Skia and Reanimated effects: fireworks, particle swirls, board shapes, and rink markings.

Node.js

4 packages

A few of my command-line tools and terminal libraries.

ShowNode.js packages
  • cosmetic

    Chainable ANSI colors and styles for the terminal, up to 24-bit true color.

  • deplace

    Save and jump to directory shortcuts, open groups of them in new windows or tabs, and run scripts on open. macOS, Linux, and Windows.

  • reunite

    Snaps app windows back into a saved grid layout for each display, with one command. macOS and Linux.

  • termkit

    CLI framework, maintained since 2018: fluent commands with nested subcommands, middleware, and typed options, plus prompts, tables, charts, and progress bars, backed by 600+ tests.

Games

Games for iOS, Android, and web, many of them pass-and-play or split-screen, built with Expo and Skia on my @tastic packages, with a native Swift module that suppresses iOS edge gestures during play. BoxHockey and Swirlio are the first on the App Store, with more games and Google Play on the way. Play the web versions at games.infinitetoken.com.

BoxHockey

Turn-based tabletop hockey with flick, slingshot, and push shots, and a CPU that picks its shots by simulating them through the physics engine.

Solitaire

11 solitaire games, from Klondike and FreeCell to Pyramid and Aces Up, on a shared TypeScript card engine.

LightCycles

Leave a trail and outlast your rival, head to head on one phone or against a flood-fill CPU, with six powerups and five arenas.

Hangman

19k+ puzzles across 50+ packs, hand-drawn art styles, and Pass & Play.

Snake

Classic Snake for one shared phone: solo, against a CPU at three difficulties, or head to head, with portal arenas and powerups that freeze or cut your rival.

Swirlio

A kaleidoscope toy you push, pinch, twist, and tilt, drawn in Skia with up to 12 mirrored copies, 150 colliding beads simulated on the UI thread, and a mic-driven audio-reactive mode.

Also: Pong AirHockey

6502 Cartridges

2 games

ROM cartridges in 6502 assembly for A.C. Wright's 6502 computer, playable in the browser in its emulator.

Show6502 cartridges
  • Snake

    Grow by eating the food, and stay clear of the walls and your own tail. The title screen remembers your high score.

    Source
  • LightCycles

    A light-cycle duel for one or two players. Turn sharply, stay off every trail, and be the last one riding.

    Source

Contact

Let's build something.

Open to senior full-stack roles: remote, hybrid, or on-site. The fastest way to reach me is email.

jayrdeaton@gmail.com