Reported by @ducknoodledance in #61.
Problem
The project detail page shows a "Storage X / 10 GB" indicator, and the
backend rejects any single upload larger than 10 GB. Both limits are
hardcoded and there is no per-org / per-project quota field in the DB,
so a self-hoster running on their own S3 / MinIO has no way to change
or remove them. The UI text in particular is misleading — it implies a
quota that doesn't actually exist as a configurable concept.
Where it lives
- Frontend denominator (cosmetic):
apps/web/app/(dashboard)/projects/[id]/page.tsx:592
const limit = 10 * 1024 * 1024 * 1024; // 10 GB default limit
rendered as Storage {used} / {limit} (lines 600–606).
- Backend per-file ceiling:
apps/api/schemas/upload.py:15
MAX_FILE_SIZE_BYTES = 10 * 1024 * 1024 * 1024 # 10 GB
enforced in apps/api/routers/upload.py and apps/api/routers/assets.py
("File exceeds 10GB limit").
Project / Organization models have no storage_limit column and
ProjectResponse exposes only storage_bytes (used), not a limit.
Proposed fix
- Drop the hardcoded denominator from the UI, or drive it from an
optional storage_limit field that's only shown when set.
- Make
MAX_FILE_SIZE_BYTES configurable via env (e.g.
MAX_UPLOAD_BYTES, default unlimited or a high sane value).
- Optionally add a per-org/per-project quota for operators who do
want a cap.
Reported by @ducknoodledance in #61.
Problem
The project detail page shows a "Storage X / 10 GB" indicator, and the
backend rejects any single upload larger than 10 GB. Both limits are
hardcoded and there is no per-org / per-project quota field in the DB,
so a self-hoster running on their own S3 / MinIO has no way to change
or remove them. The UI text in particular is misleading — it implies a
quota that doesn't actually exist as a configurable concept.
Where it lives
apps/web/app/(dashboard)/projects/[id]/page.tsx:592Storage {used} / {limit}(lines 600–606).apps/api/schemas/upload.py:15apps/api/routers/upload.pyandapps/api/routers/assets.py("File exceeds 10GB limit").
Project/Organizationmodels have nostorage_limitcolumn andProjectResponseexposes onlystorage_bytes(used), not a limit.Proposed fix
optional
storage_limitfield that's only shown when set.MAX_FILE_SIZE_BYTESconfigurable via env (e.g.MAX_UPLOAD_BYTES, default unlimited or a high sane value).want a cap.