534d01d6fe7b7e4c52475148c506c3beffc1f84f
For 1-5 clubs / 1000 members / 10 events per club per week: 2 vCPU, 4 GB, 40 GB. The data does not size this box. Computed from the real schema, attendance dominates (every event invites a squad, so one event is ~20 rows) and the whole thing comes to ~40 MB/year -- 0.2 GB after five years. Invoices are rendered on demand and never stored. What sizes it is the processes, measured rather than guessed: gunicorn master plus three workers is ~270 MB (~54 MB each), and the whole stack idles around 1.0-1.2 GB. 2 GB would run it; 4 GB is the recommendation because `docker compose build` is the memory spike, not serving -- npm, uv and collectstatic together will OOM a 2 GB box that is also running Postgres. Rendering an invoice adds ~50-100 MB to one worker the first time, since WeasyPrint is imported lazily. Also adds the AWS three-node layout for fun, with a cost table. Two things worth knowing there: ACM issues the wildcard certificate free with Route 53 validation, so the entire DNS-01 dance disappears; and a NAT Gateway would cost more than the compute (~$32/month per AZ) if the tasks sit in private subnets. The honest line at the end: ~$110-130/month on AWS against ~EUR 5 on a VPS, for a database that is 200 MB after five years. The money buys resilience, not capacity. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Description
No description provided
Languages
Python
59.1%
HTML
28.3%
CSS
8%
JavaScript
4.2%
Shell
0.2%
Other
0.2%