PDF-accessibility-saas/backend/pyproject.toml
Vadym Samoilenko fc6f4a12e6 Phase 2+3: FastAPI backend + multi-tenancy schema
Backend (replaces PHP api.php + auth.php):
- FastAPI app with routers: jobs, auth, billing
- Supabase JWT authentication in deps.py
- Celery + Redis job queue (process_pdf_task)
- MinIO S3-compatible storage service
- PDF checker wrapper (delegates to enterprise_pdf_checker.py)
- Stripe billing: checkout, portal, webhook handler

Multi-tenancy (Phase 3):
- Alembic migration 001: workspaces, workspace_members, jobs, usage_events
- Row-Level Security on all tenant tables via app.workspace_id session var
- Monthly quota enforcement per workspace (402 on exceeded)
- Plan tiers: free(5) / pro(100) / business(unlimited)

Config:
- pydantic-settings based config.py (no hardcoded values)
- docker-compose.yml rewritten: postgres, redis, minio, api, celery

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 14:46:05 +01:00

47 lines
1 KiB
TOML

[project]
name = "pdf-accessibility-saas"
version = "0.1.0"
requires-python = ">=3.12"
dependencies = [
"fastapi>=0.115.0",
"uvicorn[standard]>=0.32.0",
"gunicorn>=23.0.0",
"pydantic>=2.9.0",
"pydantic-settings>=2.6.0",
"asyncpg>=0.30.0",
"sqlalchemy[asyncio]>=2.0.36",
"alembic>=1.14.0",
"celery[redis]>=5.4.0",
"redis>=5.2.0",
"httpx>=0.27.2",
"structlog>=24.4.0",
"python-multipart>=0.0.18",
"boto3>=1.35.0",
"stripe>=11.3.0",
"PyJWT>=2.10.0",
"cryptography>=43.0.0",
# PDF processing (from original requirements.txt)
"pypdf>=5.0.0",
"pdfplumber>=0.11.0",
"anthropic>=0.40.0",
"google-cloud-vision>=3.9.0",
"weasyprint>=62.0",
"textblob>=0.18.0",
"Pillow>=11.0.0",
]
[project.optional-dependencies]
dev = [
"pytest>=8.3.0",
"pytest-asyncio>=0.24.0",
"pytest-cov>=6.0.0",
"httpx>=0.27.2",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]