AI-powered personalized children's stories featuring Little Krishna
Built for the Amazon Nova AI Hackathon 2026 | Powered by Amazon Bedrock + LiveKit
GOPA creates personalized animated bedtime stories about Bal Krishna for children aged 3-5. Parents select a value (Friendship, Kindness, Fun, Bravery), optionally upload their child's photo, and GOPA generates a unique 1-minute animated story using Amazon Nova's multi-agent pipeline.
- Value-Based Stories: Choose from Friendship, Kindness, Fun, or Bravery themes
- "Me in the Story": Upload a child's photo to create a 3D character that plays with Krishna
- Voice AI Narrator: LiveKit + Nova Sonic powers an interactive voice narrator
- Bedtime Mode: Dark amber UI with lower volume for nighttime viewing
- Language Bridge: English + Hindi/Gujarati toggle for immigrant families
- The Chronicler (Nova 2 Lite) — Writes a 4-scene script based on selected value
- The Visionary (Nova Canvas) — Generates Pixar-style illustrations for each scene
- The Animator (Nova Reel) — Creates 60-second animated video from images
deepti.bahel/project/gopa/
├── README.md ← You are here
├── gopa-env/ ← Backend (FastAPI + Bedrock + LiveKit)
│ ├── .env.example ← Environment variables template
│ ├── requirements.txt ← Python dependencies
│ ├── main.py ← FastAPI application entry point
│ ├── agents/
│ │ ├── __init__.py
│ │ ├── chronicler.py ← Story script generator (Nova 2 Lite)
│ │ ├── visionary.py ← Image generator (Nova Canvas)
│ │ └── animator.py ← Video generator (Nova Reel)
│ ├── livekit_agent/
│ │ ├── __init__.py
│ │ └── narrator.py ← LiveKit + Nova Sonic voice narrator
│ ├── routes/
│ │ ├── __init__.py
│ │ ├── story.py ← Story generation endpoints
│ │ ├── voice.py ← LiveKit token endpoint
│ │ └── upload.py ← Photo upload endpoint
│ └── utils/
│ ├── __init__.py
│ ├── bedrock_client.py ← Shared Bedrock client
│ └── s3_utils.py ← S3 upload/download helpers
│
├── gopa-ui/ ← Frontend (React + Vite)
│ ├── .env.example ← Frontend env variables
│ ├── package.json
│ ├── vite.config.js
│ ├── index.html
│ ├── public/
│ │ └── krishna-hero.png
│ └── src/
│ ├── main.jsx
│ ├── App.jsx
│ ├── styles/
│ │ └── globals.css
│ ├── components/
│ │ ├── Header.jsx
│ │ ├── ValueCard.jsx
│ │ ├── PhotoUpload.jsx
│ │ ├── StoryPlayer.jsx
│ │ ├── LoadingState.jsx
│ │ ├── BedtimeToggle.jsx
│ │ └── VoiceNarrator.jsx
│ ├── pages/
│ │ ├── HomePage.jsx
│ │ ├── SelectValuePage.jsx
│ │ ├── UploadPhotoPage.jsx
│ │ └── StoryViewPage.jsx
│ ├── hooks/
│ │ └── useStoryGeneration.js
│ └── utils/
│ └── api.js
│
└── .gitignore
- Python 3.10+
- Node.js 18+
- AWS account with Bedrock access (Nova models enabled)
- LiveKit Cloud account (free tier) OR local LiveKit server
cd deepti.bahel/project/gopa/gopa-env
# Create virtual environment
python -m venv venv
source venv/bin/activate # macOS/Linux
# venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Copy and edit env file
cp .env.example .env
# Edit .env with your AWS credentials, LiveKit keys, etc.cd ../gopa-ui
# Install dependencies
npm install
# Copy and edit env file
cp .env.example .env
# Edit .env with your backend URL# Option A: Install locally
brew install livekit # macOS
# Or download from https://github.com/livekit/livekit/releases
# Run in dev mode
livekit-server --dev
# Option B: Use LiveKit Cloud (recommended)
# Sign up at https://cloud.livekit.io — no local server neededcd gopa-env
source venv/bin/activate
python -m livekit_agent.narratorcd gopa-env
source venv/bin/activate
uvicorn main:app --reload --port 8000cd gopa-ui
npm run dev
# Opens at http://localhost:5173-
Enable Nova Models in Bedrock Console:
- Go to Amazon Bedrock → Model Access → Request access for:
amazon.nova-lite-v1:0(orus.amazon.nova-lite-v1:0)amazon.nova-canvas-v1:0amazon.nova-reel-v1:0amazon.nova-2-sonic-v1:0
- Region:
us-east-1
- Go to Amazon Bedrock → Model Access → Request access for:
-
Create S3 Bucket for video output:
- Bucket name:
gopa-stories-<your-account-id> - Region:
us-east-1 - Enable CORS for frontend access
- Bucket name:
-
IAM Permissions — attach to your user/role:
AmazonBedrockFullAccessAmazonS3FullAccess(or scoped to your bucket)
For hosting on AWS:
# Backend: Deploy as ECS Fargate or Lambda + API Gateway
# Frontend: Deploy to S3 + CloudFront
# Quick option — deploy frontend to S3:
cd gopa-ui
npm run build
aws s3 sync dist/ s3://your-bucket-name --delete- Show the value selection flow
- Demo photo upload + personalization
- Show the story being generated (loading state)
- Play the final animated story
- Toggle bedtime mode
- Demo voice narrator (LiveKit + Nova Sonic)
| Component | Technology |
|---|---|
| Story Gen | Amazon Nova 2 Lite (Bedrock) |
| Image Gen | Amazon Nova Canvas (Bedrock) |
| Video Gen | Amazon Nova Reel (Bedrock) |
| Voice AI | Amazon Nova 2 Sonic + LiveKit |
| Backend | Python FastAPI |
| Frontend | React + Vite |
| Storage | Amazon S3 |
| Hosting | AWS (ECS / S3 + CloudFront) |
Built for Amazon Nova AI Hackathon 2026. MIT License.