Sign inSign up

minmoto/ops

By minmoto

•Updated about 5 hours ago

Image
0

8.6K

minmoto/ops repository overview

⁠Minmo Ops

@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.

⁠Development

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.

⁠Authentication

Ops uses the same hosted Minmo Auth PKCE handoff as Console and Mobile. The registered callback origins are:

  • http://localhost:3004/auth/callback
  • https://ops.dev.minmo.to/auth/callback
  • https://ops.staging.minmo.to/auth/callback
  • https://ops.minmo.to/auth/callback

Authentication 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.

⁠Deployment

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.to
  • https://ops.staging.minmo.to
  • https://ops.minmo.to

Tag summary

Content type

Image

Digest

sha256:3d5a70c99…

Size

83.4 MB

Last updated

about 5 hours ago

docker pull minmoto/ops:production-0.5.15