Skip to content

Commit badbc98

Browse files
bbertuccclaude
andauthored
docs(storage): clarify that S3 means the S3 API, not AWS (#136)
The architecture doc previously said "AWS S3 — current default for object storage" and pointed at a "provider-abstraction roadmap" for escaping AWS, framing it as a future improvement. That's misleading: boto3 already speaks the S3 API against any compatible backend today. Operators standing up the project outside AWS don't need to wait for a filesystem provider — they need to set AWS_ENDPOINT_URL_S3 to MinIO, Garage, Cloudflare R2, Backblaze B2, Wasabi, etc. Two narrow doc edits to reflect that: * architecture.md (Infrastructure section): rename the bullet to "S3-compatible object storage" and list the realistic options with links. Pointer to the new self-host guide for the full setup. Floci description rephrased as "S3-compatible emulator" rather than "AWS emulator" — same fact, less misleading. * src/services/storage_service.py module docstring: same clarification at the source-of-truth layer so readers of the code reach the same conclusion as readers of the docs. No code change. Concrete step toward the project's "maintained openly for any organisation" pitch landing for non-AWS operators. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 57efe80 commit badbc98

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

docs/explanation/architecture.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ Equalify Reflow is a monolithic Python application with background task queuing
3333
### Infrastructure
3434

3535
- **Redis 5.0+** - Task queues, job state, rate limiting, distributed locks
36-
- **AWS S3** - Current default for object storage (PDFs, pipeline artefacts, results). Pluggable: the provider-abstraction roadmap (in progress) will add a local filesystem option for simpler deployments.
37-
- **Floci** - Lightweight (~72 MB, ~26 ms startup, MIT licensed) local AWS emulator used by the default dev stack. Replaces LocalStack — same wire protocol, same port (4566). Once the filesystem storage provider lands, Floci becomes opt-in rather than required.
36+
- **S3-compatible object storage** - PDFs, pipeline artefacts, and results live in two buckets (temp and results). The storage layer uses boto3 against the S3 API — *not* an AWS-only integration. Any service that speaks the S3 protocol works in production: AWS S3, [MinIO](https://min.io), [Garage](https://garagehq.deuxfleurs.fr/), [Cloudflare R2](https://developers.cloudflare.com/r2/), Backblaze B2, Wasabi, or [Floci](https://github.com/floci-io/floci). Point `AWS_ENDPOINT_URL_S3` at the chosen service and set `S3_PUBLIC_URL` to the public hostname used in client-facing presigned links. See [`docs/how-to/self-host.md`](../how-to/self-host.md) for the full setup.
37+
- **Floci** - Lightweight (~72 MB, ~26 ms startup, MIT licensed) local S3-compatible emulator used by the default dev stack. Replaces LocalStack — same wire protocol, same port (4566). Production deployments swap it for any of the S3-compatible options listed above.
3838
- **Docker & Docker Compose** - Containerized services
3939

4040
### Monitoring & Observability

src/services/storage_service.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
1-
"""Storage service for S3 operations."""
1+
"""Object-storage service.
2+
3+
Talks to any service that implements the S3 API via boto3. AWS S3 is one
4+
option; production deployments also run against MinIO, Garage, Cloudflare
5+
R2, Backblaze B2, Wasabi, etc. Local dev uses Floci. The choice is
6+
controlled by ``AWS_ENDPOINT_URL_S3`` (boto3 reads it directly); this
7+
module is endpoint-agnostic.
8+
9+
The class and surrounding comments still say "S3" because that is the
10+
name of the protocol the API speaks, not a claim that AWS is required.
11+
"""
212

313
import asyncio
414
import json

0 commit comments

Comments
 (0)