86 lines
5.4 KiB
Markdown
86 lines
5.4 KiB
Markdown
---
|
|
type: profile
|
|
updated: 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]]
|