Project Info
Inspiration
As creative writers, we’ve always felt that stories, whether they’re fictional pieces, poems, or just everyday journal entries, can showcase an incredible amount of meaning and emotion. But sometimes, just reading them doesn’t capture the full picture we may all visualize. We started wondering: What if a story could not only be read, but actually be seen, heard, and experienced just like a short film? This is why we created Sonetica, a tool that brings writing to life through short, expressive videos. Sonetica helps turn your words into something visual, personal, and alive. Our goal is to make storytelling more immersive, even for everyday moments.
What it does
Sonetica turns your words into short, expressive videos. Whether it’s a story you’ve written, a poem, or even a personal journal entry, you just type it in. Additionally, if you want to, you can add a song that captures the mood. Maybe it’s a track that inspires you, or just something that feels right. From there, Sonetica reads between the lines picking up on the emotion, the mood, and the general theme and uses that to generate an image using Stable Diffusion. That image becomes the heart of a short video that is carefully created by the pipeline to help your story come to life.
How we built it
Here’s how Sonetica’s pipeline works: the user enters their text (short story, journal entry, poem etc) and optionally uploads a song. The audio is analyzed using Librosa to extract features like mood and rhythm. Both the text and audio data are processed and combined to create a detailed prompt using Gemini. This prompt is then fed into Stable Diffusion to generate an image that reflects the emotion, meaning, and themes of the input. Next, the generated image is passed to Veo, which creates an immersive short video. To enhance the audio experience, we leverage Lyria to produce a unique sound that complements the visuals and the user’s chosen song. The frontend is built with React for a smooth user experience, while the backend is powered by Python to handle the processing and coordinate the pipeline. This setup allows us to seamlessly transform written stories and music into vivid, expressive videos.
Challenges we ran into
Implementing Stable Diffusion was one of the toughest parts since none of us had worked with it before. Figuring out the optimal level of complexity for generating images took a lot of experimentation — we wanted to maximize performance without losing the essence and emotion of the user’s input. Integrating audio analysis with text processing was tricky because the audio features we extracted using Librosa sometimes conflicted with the tone suggested by the text. For example, a calm poem paired with an upbeat song created mixed signals that made prompt generation inconsistent. We had to develop heuristics and weighting strategies to balance these inputs so the final prompt truly reflected both the music’s mood and the story’s meaning. On the integration side, a big challenge was figuring out how each API worked and the specific data formats they required. Gemini, Lyria, and Veo all had different inputs and outputs, but we were able to figure out how to make them work seamlessly. Making sure the data flowed smoothly between these tools took careful planning and experimentation. We also had to build fallback mechanisms in case any part of the pipeline failed or caused delays, so the system could still produce a video without crashing or freezing. This made the whole process more reliable and user-friendly despite the complexity behind the scenes.
Accomplishments we're proud of
We’re proud of successfully building a full pipeline that transforms written stories, poems, or journal entries into short, expressive videos combining custom-generated visuals and user-selected music. Despite not having prior experience with Stable Diffusion, we learned how to fine-tune prompts and generate images that truly capture the mood and meaning of the input text. We also managed to integrate multiple complex tools, including Librosa for audio analysis, Gemini and Lyria for prompt creation and sound design, and Veo for video generation, into a smooth, reliable system. We built fallback mechanisms to keep the experience seamless even when parts of the pipeline encountered issues. All of this came together within the tight timeframe of the hackathon, and we’re excited that Sonetica can bring words to life in a new, immersive way.
What we learned
Building Sonetica gave us valuable experience working with multimodal AI by combining text and audio inputs to create meaningful, expressive videos. We learned how to extract and fuse features from written stories and songs, two very different data types, to generate visuals that capture the emotion and mood behind both. Beyond deep learning and AI, we also gained hands-on experience integrating a chatbot interface and developing a responsive frontend using React. This taught us how to design smooth user interactions that connect seamlessly with complex backend AI pipelines. We faced challenges coordinating multiple AI models and APIs while ensuring real-time responsiveness and reliability, which pushed us to develop effective error handling and fallback strategies.
What's next
Moving forward, we want to expand Sonetica’s capabilities to support longer videos and richer storytelling formats, allowing users to create mini-movies from their writings. We’re also excited to explore adding more customization options, like different visual styles or mood filters, so users can better tailor the videos to their unique voices. This can be accomplished through integrated feedback loops for example. In addition, we would like to improve the speed, so generating videos feels instant and seamless. We’d also like to build mobile-friendly versions to make it easier for users to create and share on the go. Finally, we hope to open Sonetica to a wider community, from casual journalers to poets and storytellers, and potentially explore partnerships or integrations with creative platforms to bring storytelling to life in new ways.
🤖 Gemini AI Chatbot
A beautiful and responsive React application featuring Google's Gemini AI chatbot with a modern light blue theme.
✨ Features
- 💬 Real-time chat with Google's Gemini AI
- 🖼️ Image Analysis - Upload and analyze images
- 🎵 Audio Processing - Upload and analyze audio files
- 🎨 Beautiful light blue gradient design
- 📱 Fully responsive for all devices
- ⚡ Real-time typing indicators
- 📎 Drag-and-drop file upload
- ✨ Smooth animations and transitions
- 🚀 Easy setup and deployment
🛠 Prerequisites
Before running this application, make sure you have:
- Node.js (version 14 or higher) - Download here
- npm (comes with Node.js)
- A Google AI API key (already configured in this app)
🚀 Quick Start
Method 1: Automated Setup (Recommended)
-
Clone or download this project
-
Navigate to the project directory:
cd Scene_Creator -
Run the setup script:
chmod +x setup.sh ./setup.sh -
Start the application:
npm start
Method 2: Manual Setup
-
Install dependencies:
npm install -
Start the development server:
npm start -
Open your browser and go to:
http://localhost:3000
🎮 How to Use
- Text Chat: Type a message in the input field and press Enter or click send (📤)
- Upload Files: Click the attach button (📎) to upload images or audio files
- Multimodal Analysis: Upload files with or without text for AI analysis
- File Management: Remove individual files or clear all before sending
- Wait for Response: See typing indicator while Gemini AI processes your request
- Continue Conversation: Chat history is preserved during the session
📎 Supported File Types
- Images: JPG, PNG, GIF, WebP, and other common image formats
- Audio: MP3, WAV, M4A, and other common audio formats
- File Size: Up to 20MB per file
🎨 Design Features
- Light Blue Theme: Calming gradient backgrounds and accents
- Modern UI: Clean, minimalist design with smooth animations
- Responsive: Works perfectly on desktop, tablet, and mobile devices
- Accessibility: Keyboard navigation and screen reader friendly
- Visual Feedback: Loading states, hover effects, and smooth transitions
🔧 Technical Stack
- React 18 - Modern React with hooks
- Google Generative AI - Official Gemini AI SDK
- CSS3 - Custom styling with gradients and animations
- ES6+ - Modern JavaScript features
📁 Project Structure
gemini-chatbot-app/
├── public/
│ ├── index.html
│ └── favicon.ico
├── src/
│ ├── App.js # Main chatbot component
│ ├── App.css # Chatbot styling
│ ├── index.js # React entry point
│ └── index.css # Global styles
├── package.json # Dependencies and scripts
├── setup.sh # Automated setup script
└── README.md # This file
🔐 API Configuration
The Google Gemini AI API key is already configured in this application. The chatbot uses the gemini-pro model for generating responses.
🚀 Available Scripts
npm start- Runs the app in development modenpm build- Builds the app for productionnpm test- Launches the test runnernpm eject- Ejects from Create React App (not recommended)
🐛 Troubleshooting
Common Issues:
-
"Module not found" errors
- Make sure you've run
npm install - Delete
node_modulesfolder andpackage-lock.json, then runnpm installagain
- Make sure you've run
-
API errors
- Check your internet connection
- The API key is pre-configured, but ensure it's still valid
-
Port already in use
- The app runs on port 3000 by default
- If port 3000 is busy, React will automatically suggest another port
Getting Help:
If you encounter any issues:
- Check the browser console for error messages
- Ensure all dependencies are properly installed
- Verify that Node.js and npm are up to date
🌟 Features in Detail
Chat Interface
- Clean, modern chat bubble design
- User messages appear on the right (blue)
- AI responses appear on the left (white with blue border)
- Automatic scrolling to newest messages
Loading States
- Animated typing indicator while AI is responding
- Disabled input during processing
- Visual feedback for all user interactions
Responsive Design
- Optimized for mobile devices
- Touch-friendly interface
- Adaptive layout for different screen sizes
🎯 Future Enhancements
Potential improvements for this chatbot:
- 💾 Chat history persistence
- 🌙 Dark mode toggle
- 📄 Export chat conversations
- 🔄 Regenerate responses
- 📎 File upload support
- 🎵 Voice input/output
- 👥 Multiple conversation threads
📝 License
This project is open source and available under the MIT License.
Enjoy chatting with your Gemini AI assistant! 🤖✨
Analysis
View
Metric
- 3
- 1
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CIn code
- CSSIn code
- FlaskIn code
- Google GeminiIn code
- HTMLIn code
- Hugging FaceIn code
- JavaScriptIn code
- PythonIn code
- PyTorchIn code
- ReactIn code
10 of 10 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
65 MB
Source files
4,467
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
sgoyal453/SceneCreator
4,000 files · 285.5 MB · @ cc10593
Structure
Interface
1 file · 0%Screens, components and styles rendered to the user.
Application logic
2,697 files · 67%Domain rules, services and shared utilities.
Data & schema
12 files · 0%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python97%
- C2%
- JavaScript0%
- Markdown0%
- HTML0%
- CSS0%
- Other (1)0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
backend/requirements.txt
pypi · 29- accelerate
- diffusers
- ffmpeg-python
- filelock
- flask
- flask-cors
- huggingface-hub
- importlib_metadata
- librosa
- matplotlib
- numba
- numpy
- packaging
- pillow
- psutil
- pydub
- python-dotenv
- pyyaml
- +11 more
package.json
npm · 8- @google/generative-ai
- @testing-library/jest-dom
- @testing-library/react
- @testing-library/user-event
- react
- react-dom
- react-scripts
- web-vitals
backend/audio_env/lib/python3.7/site-packages/matplotlib/backends/web_backend/package.json
npm · 4- @jsxtools/resize-observer
- +3 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This repository has more files than are indexed here, so the diagram and browser show a partial tree. Open it on GitHub for the complete structure.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.