Funny Movies — Personal Project¶
Built for fun. Learning by doing.
A personal side project for streaming funny videos — built to explore modern backend architecture, AI-assisted development, and real-world engineering practices. No business pressure, just curiosity and a love for building things.
Why This Project Exists¶
| Goal | What I'm exploring |
|---|---|
| Build something real | End-to-end video streaming system — not just a tutorial |
| Learn modern tech | Java 24 Virtual Threads, Spring Boot 3.x, React 19, HLS streaming, Kubernetes |
| Learn AI-assisted dev | Using Claude Code to scope features, write ADRs, generate plans, and implement code |
| Practice good engineering | ADRs, PRDs, architecture diagrams, coverage gates, CI/CD pipelines |
| Take security seriously | Bitwise permissions, feature flags, Trivy scanning, magic link auth |
Tech Stack¶
Backend: Java 24 · Spring Boot 3.x · Virtual Threads (Project Loom) · PostgreSQL · Liquibase · Guava Cache · JWT · OpenTelemetry
Frontend: React 19 · Vite · TanStack Query · React Router · Bootstrap 5
Infrastructure: Docker · Kubernetes · Helm · GitHub Actions · Docker Hub
AI Tooling: Claude Code — for scoping, architecture decisions, implementation, and documentation
How Features Are Built¶
Every feature follows a structured flow powered by Claude:
/scope → PRD → /architect → ADR → /swarm-plan → Plan → /swarm-execute → /qa-engineer → /code-review → merge
See the full guide: From Scope to Implementation · Tiếng Việt
Architecture Documents¶
Architecture Decisions (ADRs)¶
| ADR | Title | Status |
|---|---|---|
| ADR-0001 | Use Relational Database (PostgreSQL) for Core Data | Accepted |
| ADR-0002 | Use Layered Spring Boot Architecture with Virtual Threads | Accepted |
| ADR-0003 | Use Guava Cache Initially, with Planned Migration to Redis | Accepted |
| ADR-0004 | Use Vanilla JS + Bootstrap with Planned Migration to React | Accepted |
| ADR-0005 | Use LRU Cache for Video Streaming | Accepted |
| ADR-0006 | Switch to HLS for Local Video Streaming | Proposed |
| ADR-0007 | Admin Dashboard — Content & Account Management | Accepted |
| ADR-0008 | Migrate Frontend to React with Vite | Proposed |
| ADR-0009 | Unified Video List API for UI Display | Proposed |
| ADR-0010 | Add Trivy Dependency & Filesystem Scanning to CI | Accepted |
| ADR-0011 | Hot Video Priority Scoring | Accepted |
| ADR-0012 | Bookmark Feature — Storage and API Design | Proposed |