@minmo/ops lets Ops team members generate and email monthly invoice PDFs.
Members enter only a USD amount and Bitcoin address. See
the invoice MVP specification for setup, defaults,
email delivery, and retry behavior. No invoices or PDFs are stored by the app.
Copy .env.example to .env, then start Ops and its workspace dependencies:
cp apps/ops/.env.example apps/ops/.env
npm run dev:ops
Ops runs on http://localhost:3004. The root Docker Compose flow also starts
it as the ops service and waits for the centralized auth app.
Ops uses the same hosted Minmo Auth PKCE handoff as Console and Mobile. The registered callback origins are:
http://localhost:3004/auth/callbackhttps://ops.dev.minmo.to/auth/callbackhttps://ops.staging.minmo.to/auth/callbackhttps://ops.minmo.to/auth/callbackAuthentication establishes an app-local session cookie. Ops server routes require an
account email and membership in the configured OPS_TEAM_ID before
previewing or emailing an invoice. Set this team ID to the API’s BILLING_PAY_PARTNER_ID and configure a verified Resend
sender in apps/ops/.env before use, plus OPS_INVOICE_SIGNING_SECRET.
In deployed environments, Terraform uses the same billing-team secret for both
services. It also supplies the email key and a dedicated generated signing secret.
The shared API is used only for existing account/session services, not payroll.
Ops is published as minmoto/ops by .github/workflows/publish-ops.yml.
Development, staging, and production deployments pass the immutable image
digest through terraform/services and expose the app through Traefik at:
https://ops.dev.minmo.tohttps://ops.staging.minmo.tohttps://ops.minmo.toContent type
Image
Digest
sha256:3d5a70c99…
Size
83.4 MB
Last updated
about 5 hours ago
docker pull minmoto/ops:production-0.5.15