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.
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 packagesShowHideLumber packages
- @infinitetoken/lumber
Node.js SDK in TypeScript, with an async queue and zero dependencies.
- lumber-cloud
Python client, with a logging handler.
- lumber-go
Go client, with a log/slog handler.
- infinitetoken/lumber
PHP client, with a PSR-3 logger, a Monolog handler, and a Laravel log channel.
- InfiniteToken.Lumber
.NET client, with an ILogger provider and a Serilog sink.
- @infinitetoken/lumber-cli
The lumber command: your logs in the terminal and for AI agents over MCP, decrypted on your machine.
- @infinitetoken/lumber-kit
Shared TypeScript types and the wire format contract every client is tested against.
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 packagesExpo and React Native utilities used across all of my apps.
Start Here
A production-ready Expo app template with Redux, Paper theming, and OTA updates, with these packages wired in and live demos to try them.
Try its web build right here. Haptics, hitSlop, and OTA updates need a real device.
Open Full PageShowHide@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 packagesThe game engine behind my games, many of which are built for local multiplayer on one shared screen.
ShowHide@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 packagesA few of my command-line tools and terminal libraries.
ShowHideNode.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.
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.
6502 Cartridges
2 gamesROM cartridges in 6502 assembly for A.C. Wright's 6502 computer, playable in the browser in its emulator.
ShowHide6502 cartridges
- 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
