Files
2026-06-05 00:49:20 -05:00

5.4 KiB

type, updated
type updated
profile 2026-05-28

Profile

Persistent facts about Jason. Append observations as they emerge; promote stable ones to a top-level section.

Role

Jason works at Message Point Media (MPM) — a digital signage company (~2,000-display installed base). He is a developer and builder who runs Claude CoWork skills and plugins for the MPM team. He also runs his own wireless ISP, ALWISP (Alabama mesh networking), and builds a wide range of personal and commercial self-hosted applications.

Communication preferences

Tools and stack

Preferred languages and runtimes

  • Primary: Node.js + TypeScript for application work
  • Secondary: Python for tooling, automation, and AI integrations (FastAPI)
  • Frontend: React 18 + TypeScript + Vite; Tailwind CSS; Svelte (used in pnger)
  • ORM/DB: Prisma + SQLite as default; PostgreSQL for production-grade apps
  • Build/deploy: Single Docker container pattern — nearly every app ships as one container

Infrastructure

  • Runs an Unraid server as his primary self-hosting platform
  • Personal Gitea at git.alwisp.com — personal repos under jason/ user
  • Work Gitea at git.mpm.to — MPM org repos (plugin: git-mpm)
  • TotalMCP unified MCP gateway runs at 10.2.0.35:8811 on Unraid br0
  • Obsidian vault accessible at 10.2.0.2:27124 (self-signed cert, -k always needed)
  • Gitea CI runners used for building Docker images (e.g., stepview)

CoWork plugins and skills

Jason maintains a suite of Claude CoWork plugins at git.mpm.to and git.alwisp.com. Key ones:

  • mpm-brand-voice-plugin — MPM brand voice enforcement
  • odoo-mpm-plugin / odoo-plugin-creation — Odoo ERP access
  • display-catalog-plugin — MP.TV product catalog generation
  • prompt-optimizer — transforms rough requests into polished prompts
  • git-personal — personal Gitea (git.alwisp.com)
  • git-mpm — work Gitea (git.mpm.to)

Personal projects (git.alwisp.com/jason)

Repo What it is
alwisp Dockerized LAMP website for his wireless ISP
breedr Dog breeding genealogy management system
codedump Internal dashboard for tracking AI tools and coding projects
codexium-odoo CODEXIUM MRP platform — Odoo variant
cpas CPAS violation tracker with Puppeteer PDF generation
email Google Workspace email signature manager
fabdash Fabrication project management and scheduling dashboard
family-planner Self-hosted family dashboard (calendars, chores, meals, screensaver)
inven Inventory management with BOMs, orders, invoicing on SQLite
memer Self-hosted meme gallery with Telegram/SMS quick-share
mempalace Server-mode MemPalace fork — shared AI memory palace over LAN
mrp CODEXIUM MRP — manufacturing resource planning platform
mrp-qrcode MRP with QR traveler cards, operator scan flow, in-browser STEP viewer
nyaa-crawler Nyaa.si anime torrent tracker and auto-downloader
pos Full-stack TypeScript point-of-sale (Android + Node + React)
rack-planner RackMapper — network rack visualizer and service dependency mapper
stepview Self-hosted in-browser 3D STEP file viewer (OpenCascade WASM + three.js)
storybid Charity auction platform with PWA offline bidding and Stripe payments
totalmcp Unified MCP gateway for the ALPHA stack (Claude Code, Codex, Antigravity)
ui-tracker Unifi Store stock monitor with Telegram alerts
pnger PNG editor/resizer — TypeScript + Svelte + Sharp
qrknit Commercial QR code generator and URL shortener (own org: qrknit/qrknit)

Notes

  • Gitea file uploads must use Python + temp files for base64 encoding — echo -n | base64 causes corruption
  • Nearly all apps follow the single-container Docker pattern designed for Unraid deployment
  • Jason builds for himself and for MPM — personal projects skew toward home automation, media, and fabrication tooling

Deployment workflow

  • CI/CD: Push to Gitea (git.alwisp.com) → Gitea Actions → Docker build → push to registry.alwisp.com
  • Gitea Actions runner image: catthehacker/ubuntu:act-latest
  • Image tag pattern: registry.alwisp.com/{owner}/{repo}:latest
  • Deployment target: Unraid Docker GUI (manual container creation after image push)
  • Network preference: Always Custom: br0 — dedicated LAN IP per container, subnet 10.2.0.0/24; never bridge; reason: direct app-to-app communication without port mapping
  • Volume root: /mnt/user/appdata/{app-name}/ on Unraid host
  • Privileged containers: OFF by default
  • Tailscale on containers: OFF by default
  • Full deployment reference: unraid-deployment