Initial commit — StreamStack v1
Five-service streaming platform: auth, catalogue, streaming, ingest, thumbnailer. Includes React frontend served by nginx, NATS JetStream event bus, aiobotocore async S3, PyAV video metadata + thumbnail extraction, service-to-service JWT auth, and a full unit + e2e test suite.
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["src/streamstack"]
|
||||
|
||||
[project]
|
||||
name = "streamstack"
|
||||
version = "0.1.0"
|
||||
requires-python = ">=3.12"
|
||||
dependencies = [
|
||||
"fastapi",
|
||||
"uvicorn[standard]",
|
||||
"pydantic-settings",
|
||||
"av",
|
||||
"nats-py",
|
||||
"sqlalchemy[asyncio]",
|
||||
"asyncpg",
|
||||
"alembic",
|
||||
"boto3",
|
||||
"aiobotocore",
|
||||
"pyjwt[crypto]",
|
||||
"pwdlib[argon2]",
|
||||
"httpx",
|
||||
"python-multipart",
|
||||
"pillow",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
dev = [
|
||||
"pytest",
|
||||
"pytest-asyncio",
|
||||
"pytest-cov",
|
||||
"moto[s3]",
|
||||
"aiosqlite",
|
||||
]
|
||||
lint = ["ruff"]
|
||||
|
||||
[project.scripts]
|
||||
streamstack-streaming = "streamstack.streaming.app:main"
|
||||
streamstack-catalogue = "streamstack.catalogue.app:main"
|
||||
streamstack-auth = "streamstack.auth.app:main"
|
||||
streamstack-ingest = "streamstack.ingest.app:main"
|
||||
streamstack-thumbnailer = "streamstack.thumbnailer.app:main"
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
asyncio_mode = "auto"
|
||||
testpaths = ["tests"]
|
||||
addopts = "--tb=short -q --ignore=tests/e2e"
|
||||
markers = ["e2e: end-to-end tests requiring a running stack (deselect with -m 'not e2e')"]
|
||||
|
||||
[tool.ruff]
|
||||
src = ["src"]
|
||||
line-length = 100
|
||||
target-version = "py312"
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = ["E", "F", "I", "UP", "B", "SIM"]
|
||||
ignore = [
|
||||
"B008", # Depends() in argument defaults is standard FastAPI usage
|
||||
]
|
||||
Reference in New Issue
Block a user