Raven Zero Logo RAVEN ZERO

Decisions & References

๐Ÿ“‹ Decision Log

DecisionRationale
FastAPIAsync, Pydantic validation, modern Python, auto-generated docs
Redis/ValkeyNative TTL, atomic operations, ephemeral by design
Filesystem (not S3)Simple for MVP, sufficient for scale, easy to debug
Fernet encryptionAES-128-CBC + HMAC-SHA256, standard library quality
3-word DicewareBalance security (38.9 bits entropy) + UX (memorable)
uv package managerSpeed (Rust-based), modern tooling, lock files
No user accountsPrivacy-first, complexity reduction
Preview one-time onlySecurity: prevents key exposure via link sharing
Secure shreddingDefense in depth for sensitive files
Valkey (not Redis)Open source fork, Redis-compatible, BSD license
StructlogJSON structured logging, context variables
APSchedulerSimple background jobs, no Celery overhead

๐Ÿค” Design Tradeoffs

Why not S3?

Chosen: Filesystem storage

Considered: AWS S3, MinIO

Decision: Filesystem is simpler for MVP:

  • No external dependencies
  • Easy to debug (just ls the folder)
  • Sufficient for expected scale (100-1000 files/day)
  • Migration path exists via Repository pattern

Why 3-word Diceware?

Considered options:

  • UUID: More secure, but horrible UX
  • 4-word keys: Overkill for 60-minute TTL
  • Random hex: Secure but error-prone to transcribe

Decision: 3 words = 470 billion combinations

  • Human-readable (QR codes, voice)
  • Secure enough for ephemeral use case
  • 38.9 bits entropy

Why ephemeral Redis (no persistence)?

Decision: No RDB/AOF persistence

Rationale:

  • Redis as pure cache, not database
  • Server restart = clean slate (by design)
  • Ephemeral principle: data should disappear
  • Simpler operations (no backup/restore)

๐Ÿ“š References

Technical

Inspirations


๐Ÿ“œ License

Raven Zero is open source software.


๐Ÿ”ฎ Future Considerations

Potential Additions

  • PostgreSQL for analytics (historical stats, not operations)
  • S3/MinIO if storage needs exceed local disk
  • Prometheus metrics for observability
  • WebSocket for real-time countdown on preview
  • Password protection for files (optional encryption layer)

Wonโ€™t Implement

  • User accounts (anti-goal)
  • File previews/thumbnails (privacy concern)
  • Permanent storage option (ephemeral by design)
  • Content moderation AI (privacy concern)