This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Comic Panel Generator is an AI-powered web application for creating multi-page comic storyboards with script generation, image generation, and social media content export. It uses Google Gemini for image generation and supports both OpenAI and Google Gemini for script generation.
# Install dependencies
cd backend && uv sync
# Run backend server (starts on http://localhost:5003)
cd backend && uv run app.py# Serve frontend (from project root)
python -m http.server 8000
# Then visit http://localhost:8000# macOS/Linux
./start.sh
# Windows
start.batThe backend follows a controller-service pattern:
backend/app.py- Flask entry point, registers all blueprintsbackend/controllers/- API endpoint handlers (Flask blueprints)comic_controller.py-/api/generate,/api/validate- comic script generationimage_controller.py-/api/generate-image,/api/generate-cover- image generationsocial_media_controller.py-/api/generate-xiaohongshu- social content generationprompt_controller.py-/api/optimize-prompt- prompt optimization
backend/services/- Business logiccomic_service.py- Uses LangChain + OpenAI/Gemini for structured comic script generationimage_service.py- Image generation orchestrationsocial_media_service.py- Social media content generationprompt_optimizer_service.py- Prompt enhancement
backend/comic_generator.py- Core Gemini image generation withgemini-3-pro-image-previewmodel
Modular JavaScript with classes exposed on window:
app.js-UIController- main controller coordinating all modulesapi.js-ComicAPI- static methods for all backend API callsrenderer.js-ComicRenderer- renders JSON scripts into comic panel previewspageManager.js-PageManager- multi-page state managementsessionManager.js-SessionManager- localStorage-based session persistenceconfig.js-ConfigManager- API key and settings persistencei18n.js- Internationalization (Chinese/English)theme.js- Dark/light mode toggleexporter.js- html2canvas-based image export
- User enters prompt + settings in frontend
UIControllercallsComicAPI.generateComic()- Backend
ComicServicegenerates structured JSON via LangChain (OpenAI) or Google Gemini - Frontend
ComicRendererrenders JSON as sketch preview - User can generate final images via
ComicAPI.generateComicImage()using sketch as reference comic_generator.pyuses Gemini image generation with reference images for consistency
{
"title": "Page Title",
"rows": [
{
"height": "180px",
"panels": [
{ "text": "Panel description with dialogue" }
]
}
]
}- Image generation uses
gemini-3-pro-image-previewwith reference images for character consistency - Script generation uses Pydantic models (
ComicScript,ComicPage,Row,Panel) for structured output - Frontend stores sessions, configs, and generated images in localStorage
- Backend saves generated images to
backend/static/images/ - Supports comic styles: doraemon, american, watercolor, disney, ghibli, pixar, shonen