Files
ds-chat/backend/pyproject.toml
T
ksmith f2a59f798b Add image uploads in chat messages (Gitea issue #10)
Images live on the app server's local disk (uploads/), served through an
authenticated, room-membership-gated endpoint since rooms can be private.
Uploads are streamed with a byte-count cap, validated as genuine decodable
images with Pillow (not just a spoofed Content-Type), and downscaled to
2000px on the longer side (except GIF, to preserve animation).

Backend: MessageImage model + nullable Message.content/image_id with a
content-or-image CheckConstraint, upload/serve endpoints in rooms.py, WS
message envelope gains image_id, push notification body says "sent an
image" for image-only messages.

Frontend: Composer gets an attach button with upload progress and a
thumbnail chip; MessageList renders images inline with a click-to-zoom
ImageLightbox.
2026-08-14 12:21:42 -06:00

43 lines
845 B
TOML

[project]
name = "chatapp"
version = "0.1.0"
description = "KeepItTalking chat service backend"
requires-python = ">=3.11"
dependencies = [
"fastapi>=0.115",
"uvicorn[standard]>=0.32",
"sqlalchemy>=2.0.36",
"asyncpg>=0.30",
"alembic>=1.14",
"pydantic>=2.9",
"pydantic[email]>=2.9",
"pydantic-settings>=2.6",
"argon2-cffi>=23.1",
"itsdangerous>=2.2",
"pywebpush>=2.0",
"redis>=5.0",
"httpx>=0.27",
"gunicorn>=23.0",
"Pillow>=10.0",
"python-multipart>=0.0.9",
]
[project.scripts]
chatapp-create-user = "app.cli:main"
[project.optional-dependencies]
dev = [
"pytest>=8",
"pytest-asyncio>=0.24",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["app"]
[tool.pytest.ini_options]
asyncio_mode = "auto"