Files
lasuite-docs/docs/system-requirements.md
T
Anthony LC 3ad6d0ea12 📝(project) add system-requirement doc
Add a new document detailing the system
requirements for the project.
2025-06-17 14:06:55 +02:00

7.5 KiB
Raw Blame History

La Suite Docs – System & Requirements (2025-06)

1. Quick-Reference Matrix (single VM / laptop)

Scenario RAM vCPU SSD Notes
Solo dev 8 GB 4 15 GB Hot-reload + one IDE
Team QA 16 GB 6 30 GB Runs integration tests
Prod ≤ 100 live users 32 GB 8 + 50 GB + Scale linearly above this

Memory is the first bottleneck; CPU matters only when Celery or the Next.js build is saturated.

Note: Memory consumption varies by operating system. Windows tends to be more memory-hungry than Linux, so consider adding 10-20% extra RAM when running on Windows compared to Linux-based systems.

2. Development Environment Memory Requirements

Service Typical use Rationale / source
PostgreSQL 1 – 2 GB shared_buffers starting point ≈ 25% RAM (postgresql.org)
Keycloak ≈ 1.3 GB 70% of limit for heap + ~300 MB non-heap (keycloak.org)
Redis ≤ 256 MB Empty instance ≈ 3 MB; budget 256 MB to allow small datasets (stackoverflow.com)
MinIO 2 GB (dev) / 32 GB (prod) Pre-allocates 1–2 GiB; docs recommend 32 GB per host for ≤ 100 Ti storage (min.io)
Django API (+ Celery) 0.8 – 1.5 GB Empirical in-house metrics
Next.js frontend 0.5 – 1 GB Dev build chain
Y-Provider (y-websocket) < 200 MB Large 40 MB YDoc called “big” in community thread (discuss.yjs.dev)
Nginx < 100 MB Static reverse-proxy footprint

Rule of thumb: add 2 GB for OS/overhead, then sum only the rows you actually run.

3. Production Environment Memory Requirements

Production deployments differ significantly from development environments. The table below shows typical memory usage for production services:

Service Typical use Rationale / notes
PostgreSQL 2 – 8 GB Higher shared_buffers and connection pooling for concurrent users
OIDC Provider (optional) Variable Any OIDC-compatible provider (Keycloak, Auth0, Azure AD, etc.) - external or self-hosted
Redis 256 MB – 2 GB Session storage and caching; scales with active user sessions
Object Storage (optional) External or self-hosted Can use AWS S3, Azure Blob, Google Cloud Storage, or self-hosted MinIO
Django API (+ Celery) 1 – 3 GB Production workloads with background tasks and higher concurrency
Static Files (Nginx) < 200 MB Serves Next.js build output and static assets; no development overhead
Y-Provider (y-websocket) 200 MB – 1 GB Scales with concurrent document editing sessions
Nginx (Load Balancer) < 200 MB Reverse proxy, SSL termination, static file serving

Production Architecture Notes

  • Frontend: Uses pre-built Next.js static assets served by Nginx (no Node.js runtime needed)
  • Authentication: Any OIDC-compatible provider can be used instead of self-hosted Keycloak
  • Object Storage: External services (S3, Azure Blob) or self-hosted solutions (MinIO) are both viable
  • Database: Consider PostgreSQL clustering or managed database services for high availability
  • Scaling: Horizontal scaling is recommended for Django API and Y-Provider services

Minimal Production Setup (Core Services Only)

Service Memory Notes
PostgreSQL 2 GB Core database
Django API (+ Celery) 1.5 GB Backend services
Y-Provider 200 MB Real-time collaboration
Nginx 100 MB Static files + reverse proxy
Redis 256 MB Session storage
Total (without auth/storage) ≈ 4 GB External OIDC + object storage assumed
Tool Minimum
Docker Engine / Desktop 24.0
Docker Compose v2
Git 2.40
Node.js 22+
Python 3.13+
GNU Make 4.4
Kind 0.22
Helm 3.14
kubectl 1.29
mkcert 1.4

5. Ports (dev defaults)

Port Service
3000 Next.js
8071 Django
4444 Y-Provider
8080 Keycloak
8083 Nginx proxy
9000/9001 MinIO
15432 PostgreSQL (main)
5433 PostgreSQL (Keycloak)
1081 MailCatcher

6. Sizing Guidelines

RAM – start at 8 GB dev / 16 GB staging / 32 GB prod. Postgres and Keycloak are the first to OOM; scale them first.

OS considerations: Windows systems typically require 10-20% more RAM than Linux due to higher OS overhead. Docker Desktop on Windows also uses additional memory compared to native Linux Docker.

CPU – budget one vCPU per busy container until Celery or Next.js builds saturate.

Disk – SSD; add 10 GB extra for the Docker layer cache.

MinIO – for demos, mount a local folder instead of running MinIO to save 2 GB+ of RAM.