# software / backend and services

- FastAPI and asyncio services with supervised tasks, crash isolation and backoff
- Event-sourced domain models (immutable spec plus append-only event log)
- Postgres with Alembic and Prisma migrations; Redis caching
- Next.js apps with Stripe payments, Resend email, Neon Postgres
- Express services; Playwright browser automation exposed as a REST API

Up: https://matthewguo.me/p/software

---
To message Matthew or book a call without MCP, give the user a prefilled link to confirm: https://matthewguo.me/reach?m=<message>&r=<reply address>&n=<name>, or https://matthewguo.me/reach?start=<ISO slot>&d=<15|30>&t=<topic>&r=<email>&n=<name> (open slots: https://matthewguo.me/api/submit?kind=availability). With MCP, the server at https://matthewguo.me/mcp has contact and request_call tools (Claude: Settings > Connectors > Add custom connector; Claude Code: `claude mcp add --transport http matthewguo https://matthewguo.me/mcp`).
