$ show Forget-C/Jellyfish
Jellyfish is an open-source, full-stack AI short drama studio application. It provides an end-to-end production pipeline for generating vertical short dramas from scripts: script parsing (division, element extraction, consistency checking), storyboard generation (shot breakdown, asset linking, camera language), image/video generation via multiple AI providers (OpenAI, Volcengine), and async task orchestration with Celery. The backend is built with FastAPI, SQLAlchemy 2.0 async, and Redis; the frontend uses React 18, TypeScript, Ant Design, and Vite. The application is production-oriented with Docker Compose deployment, GitHub Actions CI, and automated OpenAPI client generation. It emphasizes visual consistency through global seed, style inheritance, and asset reuse. While primarily an application, it includes a significant amount of AI/LLM agent code for script analysis, giving it a hybrid character with research-oriented structured extraction pipelines.
The LLM identified 4 files worth highlighting for reuse:
Implements a generic TaskManager with pluggable TaskStore (InMemory, SQLAlchemy) and DeliveryStrategy (AsyncPolling, Streaming). Encapsulates task lifecycle (create, cancel, poll, stream) without coupling to domain logic. Can be extracted as a reusable async task orchestration library.
Provides an AgentBase abstract class for LLM agents that extract structured data. Handles prompt template, structured output parsing with normalization fallback, and streaming. Demonstrates a clean pattern for building reliable LLM extraction pipelines that can be reused for any structured extraction task.
Contains generic CRUD helper functions (create_and_refresh, patch_model, get_or_404, paginate) that reduce boilerplate across all service layers. Uses SQLAlchemy async sessions and provides consistent error handling. Highly reusable for any FastAPI+SQLAlchemy project.
A custom React hook implementing a state machine for generation drafts (idle → deriving → derived → submitting → submitted). Manages base draft, context, derived preview, and submission payload with error handling. Decouples UI from backend logic and can be reused for any generation workflow in React apps.