Senior full-stack engineer: TypeScript, React, React Native / Expo, Node.js. 10+ years building and running the software behind a production buy-sell-trade commerce business.
Open to senior full-stack roles (remote, hybrid, or on-site) and freelance work. Based in Lincoln, NE.
jaydeaton.com · LinkedIn · jayrdeaton@gmail.com · npm (55+ packages) · infinitetoken.com
Full-stack engineer and co-founder at Infinite Token since 2016. That code is private, so here's the summary:
- Core engineer on a 3-6 person team: 6 internal apps (React, React Native, Electron), a central Node/Express API, and databases serving 3 retail locations, 25 staff, and tens of thousands of customers
- Integrated Shopify, eBay, Google, AWS, and POS hardware into one system
- Migrated hundreds of thousands of records across databases with zero data loss
- Led the move to TypeScript, plus Jest testing and org-wide linting standards
- Currently building MediaEncyclopedia, a graded collectible-media storefront on Next.js and Supabase, with AI product enrichment on Gemini and Claude
The code is private, but I'm happy to walk through the architecture.
- MediaEncyclopedia: storefront for collectible Blu-ray, 4K, DVD, and games, with every unit graded and photographed. Next.js and Supabase, an in-house grading and cataloging tool, eBay-based pricing, AI enrichment routed between Gemini and Claude, and Stripe checkout
- MediaEncyclopedia-Utility: MediaEncyclopedia's React Native / Expo companion app: 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
- Lumber: end-to-end encrypted cloud logging. An HTTP API, a WebSocket server for live log streaming, background workers, and PostgreSQL on Supabase, plus a mobile and web app and SDKs for Node, Python, and Swift. Logs are encrypted before they leave the device, and all decryption and search happen on the client, so the server never sees plaintext
- CashierFu: point-of-sale 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. Each shop connects its own Stripe account to take cards on Stripe Terminal readers
- CashierFu-Utility: CashierFu's companion app for shop staff, the same React Native codebase as MediaEncyclopedia-Utility built against CashierFu's own API from its own EAS profile
Modular game-engine packages (game loop, physics, input, HUD, sprites, grid, cards, profiles, achievements, split-screen pass-and-play) that power my Expo games. 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.
- React-Native-Game-Core (
@tastic/core): frame-rate-independent game loop, vector math, orientation handling, background pause - BoxHockey (play, App Store): turn-based tabletop hockey with flick, slingshot, and push shots; reaction-race face-offs; and a CPU that picks shots by simulating them through the physics engine
- Solitaire (play): ad-free, offline suite of 11 solitaire games for iOS, Android, and web on a shared TypeScript card engine
- LightCycles (play) · Snake (play) · Hangman (play)
- Swirlio (play, App Store): kaleidoscope toy drawn in Skia with up to 12 mirrored copies, 150 colliding beads simulated on the UI thread, and a mic-driven audio-reactive mode
- In development: AirHockey, real-time air hockey with sub-stepped puck physics, a CPU that predicts the puck's path, and two-player on one device, face to face or side by side · Pong
| Project | Live | Description |
|---|---|---|
| MapFolio | mapfolio.infinitetoken.com | Interactive map builder: pins, routes, captions, print-to-PDF, and share links that encode the whole map in the URL |
| TrimBox | trimbox.infinitetoken.com | Gmail inbox cleaner: scans up to 10,000 messages, surfaces bulk senders, one-click unsubscribe and bulk archive |
| SnaPDF-Web | snapdf.infinitetoken.com | Snap ChatGPT and Claude conversations to searchable PDF or text |
| Pixelated-Web | pixelated.infinitetoken.com | Browser-based image pixelation with palettes and dithering |
| GraPDF-Web | grapdf.infinitetoken.com | Scrape PDFs from a webpage and merge them into one booklet |
@rific: Expo / React Native utilities
| Package | Description |
|---|---|
@rific/updater |
OTA update hook for Expo plus the build and update release CLI |
@rific/sync |
SQLite sync engine for Expo: schema management, upserts, deletions, cursor tracking |
@rific/scanner |
Camera barcode scanner with customizable overlays |
@rific/auto-paper |
Adaptive triadic theming for react-native-paper |
@rific/toaster |
Animated toast notifications |
@rific/heatmap |
GitHub-style activity heatmap |
@rific/timer |
Animated timer ring |
@rific/resizable-input |
Resizable multiline input |
@rific/focus-chain |
Auto-incrementing focus chain hook for form inputs |
@rific/feedback-press |
Haptic pressables |
@rific/scroll-view |
ScrollView, FlatList, and SectionList with blurred floating headers and pull-to-search |
@rific/drawer |
Spring-animated drawers and sheets that slide in from any screen edge |
@rific/gestures |
Swipe-to-dismiss with flicks, and pinch-to-zoom about the fingers, measured in the view's own coordinates |
@rific/splash-gate |
Holds the splash screen until named async conditions are ready |
@rific/core |
Settings Context and Redux slice factories shared by the other packages |
| Expo-Starter | Production-ready Expo starter with Redux, Paper theming, OTA updates, and @rific pre-wired |
@tastic: React Native game engine
| Package | Description |
|---|---|
@tastic/core |
Vec2 math, frame-clamped game loop, orientation handling, background pause |
@tastic/physics |
2D arcade physics: circle and rect collisions, bounces, friction, gravity wells, springs |
@tastic/input |
Worklet-safe input: swipe and keyboard direction, drag aiming, flick velocity |
@tastic/hud |
Non-modal UI kit for local multiplayer: popovers, pickers, gauges, and dialogs per player zone |
@tastic/split-screen |
Face-to-face or side-by-side two-player layouts based on how the device is held |
@tastic/grid |
Grid math for tile games: bounds, cell/pixel conversion, adjacency, BFS reachability |
@tastic/sprites |
Shared Skia and SVG effects: fireworks, gravity wells, pucks, rink markings |
@tastic/cards |
Playing-card rendering: faces, backs, court figures, suit pips |
@tastic/profile |
Per-seat player profiles with picker and roster screens |
@tastic/achievements |
Headless achievement and stats engine: tiers, per-profile unlocks, streaks |
@tastic/edge-guard |
Config plugin and hook that keep iOS edge swipes from firing over game controls |
Node.js / CLI
| Package | Description |
|---|---|
termkit |
Fluent CLI framework: nested subcommands, middleware, type coercion |
cosmetic |
Chainable ANSI color and style library for terminals |
snapdf |
CLI + ESM/CJS package behind SnaPDF, handling virtual scrolling |
grapdf |
CLI + ESM/CJS package behind GraPDF |
pixelated |
CLI + library: 40+ retro palettes, 20+ block shapes, dithering, ANSI output |
reunite · deplace |
Small macOS terminal utilities |
- Languages: TypeScript, JavaScript, Python, Swift, Ruby, HTML/CSS
- Frameworks: React, React Native, Expo, Node.js/Express, Electron, Vue/Nuxt
- Data: PostgreSQL, MongoDB, SQLite, Supabase, offline-first sync
- Platforms: AWS, Docker, Vercel, Heroku, GitHub Actions, npm publishing
- Integrations: REST, GraphQL, WebSocket, Bluetooth, Shopify, eBay, POS hardware, Google & Anthropic APIs
- Testing: Jest, unit and integration
Arduino projects, Fusion 360 macros, 3D printing, and 6502 assembly games (Snake, LightCycles), playable in the browser at games.infinitetoken.com.


