Daeseon Yoo
Back to project
·Snapshot·3 min

Architecture overview — TubeShadow as of 2026-05-31

TubeShadow is a Java 21 / Spring Boot 3.3 backend and Next.js 16 frontend that turns YouTube clips into AI-generated translation + gloss + scenario cards, scheduled with SM-2 / Leitner spaced repetition.

System shape

                       ┌────────────────────────────────┐
 browser ──HTTPS──▶    │  Next.js 16 frontend (:3100)   │
                       │  app/[locale] · next-intl      │
                       │  React Query · Zustand         │
                       └──────────────┬─────────────────┘
                                      │ REST/JSON (JWT)

                       ┌────────────────────────────────┐
                       │  Spring Boot 3.3 backend       │
                       │  com.tubeshadow.*              │
                       │  auth · video · clip ·         │
                       │  analysis · recording ·        │
                       │  review · deck · practice ·    │
                       │  common                        │
                       └──────┬─────────────┬───────────┘
                              │             │
                              │             │  @TransactionalEventListener(AFTER_COMMIT)
                              │             │  + @Async  ──▶  AiAnalysisClient
                              │             │                  ├─ GeminiClient   (default)
                              │             │                  └─ ClaudeClient   (@ConditionalOnProperty)
                              ▼             ▼
                       ┌──────────────┐   ┌───────────────┐
                       │ PostgreSQL 16│   │ AWS S3        │
                       │ (Flyway, 17  │   │ (recordings,  │
                       │  migrations) │   │  prod only)   │
                       └──────────────┘   └───────────────┘

Key libs / modules

Why these choices

Boundaries

Other docs in the repo are authoritative for their slice — this snapshot is the map, not the territory:

State of completion

The core loop (paste YouTube → clip → AI-generated translation + gloss + vocabulary + scenario → spaced-repetition review) is end-to-end working locally with Docker Compose, with 31 existing log entries documenting the build to date. Recent work has been hardening rather than new domain: rate limiting on the AI compose endpoint, frontend tests for SRS logic, Leitner SRS for drills, drill streak persistence, observability, JWT revocation via token version. Live demo on AWS ECS Fargate is not yet linked from the README ("deploying to AWS ECS Fargate; link coming"), so the production URL is unverified at the time of this snapshot.