Skip to main content

svc-infra

Production-ready FastAPI infrastructure in one import.

PyPI CI Python License

Overview

Stop rebuilding auth, billing, webhooks, and background jobs for every project.

Key Features

  • Auth - JWT, sessions, OAuth/OIDC, MFA, API keys
  • Connect - Third-party OAuth, MCP server discovery, token management
  • Billing - Usage tracking, subscriptions, invoices, Stripe sync
  • Database - PostgreSQL + MongoDB, migrations, inbox/outbox
  • Jobs - Background tasks, scheduling, retries, DLQ
  • Webhooks - Subscriptions, HMAC signing, delivery retries
  • Observability - Prometheus, Grafana dashboards, OTEL

Why svc-infra?

Every FastAPI project needs the same things: authentication, database setup, background jobs, caching, webhooks, billing... You've written this code before. Multiple times.

svc-infra packages battle-tested infrastructure used in production, so you can focus on your actual product:

from svc_infra.api.fastapi.ease import easy_service_app

app = easy_service_app(name="MyAPI", release="1.0.0")
# Health checks, CORS, security headers, structured logging
# Prometheus metrics, OpenTelemetry tracing
# Request IDs, idempotency middleware
# That's it. Ship it.

Quick Install

pip install svc-infra

What's Included

Feature What You Get One-liner
Auth JWT, sessions, OAuth/OIDC, MFA, API keys add_auth_users(app)
Connect Third-party OAuth, MCP server discovery, token management add_connect(app)
Billing Usage tracking, subscriptions, invoices, Stripe sync add_billing(app)
Database PostgreSQL + MongoDB, migrations, inbox/outbox add_sql_db(app)
Jobs Background tasks, scheduling, retries, DLQ easy_jobs()
Webhooks Subscriptions, HMAC signing, delivery retries add_webhooks(app)
Cache Redis/memory, decorators, namespacing init_cache()
Observability Prometheus, Grafana dashboards, OTEL Built-in
Storage S3, local, memory backends add_storage(app)
Multi-tenancy Tenant isolation, scoped queries Built-in
Rate Limiting Per-user, per-endpoint, headers Built-in

30-Second Example

Build a complete SaaS backend:

from fastapi import Depends
from svc_infra.api.fastapi.ease import easy_service_app
from svc_infra.api.fastapi.db.sql.add import add_sql_db
from svc_infra.api.fastapi.auth import add_auth_users, current_active_user
from svc_infra.jobs.easy import easy_jobs
from svc_infra.webhooks.fastapi import require_signature

# Create app with batteries included
app = easy_service_app(name="MySaaS", release="1.0.0")

# Add infrastructure
add_sql_db(app)                    # PostgreSQL with migrations
add_auth_users(app)                # Full auth system
queue, scheduler = easy_jobs()     # Background jobs

# Your actual business logic
@app.post("/api/process")
async def process_data(user=Depends(current_active_user)):
    job = queue.enqueue("heavy_task", {"user_id": user.id})
    return {"job_id": job.id, "status": "queued"}

# Webhook endpoint with signature verification
@app.post("/webhooks/stripe")
async def stripe_webhook(payload=Depends(require_signature(lambda: ["whsec_..."]))):
    queue.enqueue("process_payment", payload)
    return {"received": True}

That's a production-ready API with auth, database, background jobs, and webhook handling.

Feature Highlights

Authentication & Security

Full auth system with zero boilerplate:

from svc_infra.api.fastapi.auth import add_auth_users, current_active_user

add_auth_users(app)  # Registers /auth/* routes automatically

@app.get("/me")
async def get_profile(user=Depends(current_active_user)):
    return {"email": user.email, "mfa_enabled": user.mfa_enabled}

Includes: JWT tokens, session cookies, OAuth/OIDC (Google, GitHub, etc.), MFA/TOTP, password policies, account lockout, key rotation.

Usage-Based Billing

Track usage and generate invoices:

from svc_infra.billing import BillingService

billing = BillingService(session=db, tenant_id="tenant_123")

# Record API usage (idempotent)
billing.record_usage(metric="api_calls", amount=1, idempotency_key="req_abc")

# Generate monthly invoice
invoice = billing.generate_monthly_invoice(
    period_start=datetime(2025, 1, 1),
    period_end=datetime(2025, 2, 1),
)

Includes: Usage events, aggregation, plans & entitlements, subscriptions, invoices, Stripe sync hooks.

Background Jobs

Redis-backed job queue with retries:

from svc_infra.jobs.easy import easy_jobs

queue, scheduler = easy_jobs()  # Auto-detects Redis or uses memory

# Enqueue work
queue.enqueue("send_email", {"to": "user@example.com", "template": "welcome"})

# Schedule recurring tasks
scheduler.add("cleanup", interval_seconds=3600, target="myapp.tasks:cleanup")
scheduler.add("weekday-digest", cron="0 9 * * mon-fri", target="myapp.tasks:digest")
scheduler.add_job("daily-email", cron="0 9 * * *", job_queue=queue, job_name="send_email")

# In Redis mode, scheduler leadership is coordinated automatically
# so multiple replicas can run safely in the cloud.
# Run the worker with a registry from your app
JOBS_REGISTRY_TARGET=myapp.jobs:registry svc-infra jobs run

Includes: Visibility timeout, exponential backoff, dead letter queue, interval and cron scheduling, durable scheduled job emission, Redis-backed scheduler leadership, CLI worker.

Webhooks

Send and receive webhooks with proper security:

from svc_infra.webhooks import add_webhooks, WebhookService

add_webhooks(app)  # Adds subscription management routes

# Publish events
webhook_service.publish("invoice.paid", {"invoice_id": "inv_123"})

# Verify incoming webhooks
@app.post("/webhooks/external")
async def receive(payload=Depends(require_signature(lambda: ["secret1", "secret2"]))):
    return {"ok": True}

Includes: Subscription store, HMAC-SHA256 signing, delivery retries, idempotent processing.

Observability

Production monitoring out of the box:

app = easy_service_app(name="MyAPI", release="1.0.0")
# Prometheus metrics at /metrics
# Health checks at /healthz, /readyz, /startupz
# Request tracing with OpenTelemetry
# Generate Grafana dashboards
svc-infra obs dashboard --service myapi --output ./dashboards/

Includes: Prometheus metrics, Grafana dashboard generator, OTEL integration, SLO helpers.

Configuration

Everything is configurable via environment variables:

# Database
SQL_URL=postgresql://user:pass@localhost/mydb
MONGO_URL=mongodb://localhost:27017

# Auth
AUTH_JWT__SECRET=your-secret-key
AUTH_SMTP_HOST=smtp.sendgrid.net

# Jobs
JOBS_DRIVER=redis
REDIS_URL=redis://localhost:6379

# Storage
STORAGE_BACKEND=s3
STORAGE_S3_BUCKET=my-uploads

# Observability
ENABLE_OBS=true
METRICS_PATH=/metrics

See the Environment Reference for all options.

Documentation

Module Description Guide
API FastAPI bootstrap, middleware, versioning docs/api.md
Auth Sessions, OAuth/OIDC, MFA, API keys docs/auth.md
Billing Usage tracking, subscriptions, invoices docs/billing.md
Database SQL + MongoDB, migrations, patterns docs/database.md
Jobs Background tasks, scheduling docs/jobs.md
Webhooks Publishing, signing, verification docs/webhooks.md
Cache Redis/memory caching, TTL helpers docs/cache.md
Storage S3, local, memory file storage docs/storage.md
Observability Metrics, tracing, dashboards docs/observability.md
Security Password policy, headers, MFA docs/security.md
Tenancy Multi-tenant isolation docs/tenancy.md
CLI Command-line tools docs/cli.md

Running the Example

See all features working together:

git clone https://github.com/nfraxlab/svc-infra.git
cd svc-infra

# Setup and run
make setup-template    # Creates DB, runs migrations
make run-template      # Starts at http://localhost:8001

Visit http://localhost:8001/docs to explore the API.

Related Packages

svc-infra is part of the nfrax infrastructure suite:

Package Purpose
svc-infra Backend infrastructure (auth, billing, jobs, webhooks)
ai-infra AI/LLM infrastructure (agents, tools, RAG, MCP)
fin-infra Financial infrastructure (banking, portfolio, insights)

License

MIT License - use it for anything.


Metadata

Release files for svc-infra 1.22.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for svc-infra 1.22.2
File Size Uploaded Provenance
svc_infra-1.22.2.tar.gz 446.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for svc-infra 1.22.2
File Interpreter ABI Platform
svc_infra-1.22.2-py3-none-any.whl Python 3 none any Details

Total release size: 1.1 MB

Release files / svc_infra-1.22.2.tar.gz

Download URL svc_infra-1.22.2.tar.gz
Size 446.2 kB
Tags Source
SHA-256 checksum
How to use checksums
da152e45433c7853d98e55c51c327eac5176ba94a185ba88d43e5575579991ad
BLAKE2b-256 checksum
How to use checksums
587d2b4ffc033016cb09c2b825486a69c3cf4b77e44ce437bcddc6718e151c58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / svc_infra-1.22.2-py3-none-any.whl

Download URL svc_infra-1.22.2-py3-none-any.whl
Size 628.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5ec2efb7f92e2fb6ee9655c77549bf19256039aeed84843f397d718cacf47374
BLAKE2b-256 checksum
How to use checksums
8940f8ee1b34f63e8fb0e86858ec845b9ac44fe596766c9a8de9de991c4e05b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Security for svc-infra 1.22.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.22.2 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page