Inspiration
As an independent developer, I wanted to make high-end AI video creation useful to people who do not have a production crew or a complicated editing stack. Veo 3.1 can turn a short idea into a cinematic scene, but access to the model is only one part of the experience. Creators still need clear input modes, predictable controls, transparent costs, progress tracking, and a place to manage their work. I built Veo AI to bring those pieces together in one focused studio.
What it does
Veo AI is an online creation studio centered on Google DeepMind's Veo 3.1 video model. It supports three practical ways to create:
- Generate a video from a text prompt
- Animate an uploaded image or guide a shot with reference images
- Upload first and last frames to control how a scene begins, ends, and transitions between them
Creators can direct camera movement, subject action, atmosphere, dialogue, and sound in plain language. The workflow supports native synchronized audio, landscape and vertical formats, 8-second clips, and 1080p output. It is designed for social content, product ads, storyboards, concept films, education, and rapid creative testing. Users can see the credit cost before generating, follow job progress, review creation history, and download completed videos.
Veo AI is an independent product. It uses Veo 3.1 technology but is not affiliated with, endorsed by, or sponsored by Google.
How I built it
I built Veo AI with Next.js App Router, React, TypeScript, and Tailwind CSS. The application is localized with next-intl and uses server-rendered pages for a fast, accessible product experience. Better Auth handles accounts, PostgreSQL and Drizzle ORM store users, credits, and generation jobs, and Stripe powers subscriptions and credit purchases.
Behind the interface is a provider-agnostic generation layer. Public model IDs are resolved to a provider and model implementation, capability checks validate each request, and a pricing service calculates the required credits. The system reserves credits, creates a job, sends the request to the video provider, and processes asynchronous webhook updates. Failed generations can automatically return reserved credits. Cloudflare OpenNext supports deployment, while object storage delivers generated media and example assets.
Challenges
The biggest challenge was turning a long-running, probabilistic generation process into a trustworthy product workflow. Video jobs can be queued, delayed, fail remotely, or complete through a webhook after the original request has ended. I built a consistent job state model, polling fallback, webhook handling, creation history, and credit-refund path so users always know what happened.
A second challenge was presenting advanced Veo 3.1 controls without overwhelming first-time creators. Text-to-video, image guidance, reference images, and first-and-last-frame generation require different inputs and constraints. I designed capability-driven forms that reveal only the controls supported by the selected mode while keeping the cost visible before every render.
What I learned
This project taught me that a strong AI product is mostly about orchestration and trust. Model quality matters, but the surrounding details—input validation, sensible defaults, clear limitations, billing accuracy, failure recovery, and responsive feedback—determine whether someone can actually use the technology in real creative work.
Building the entire product independently also pushed me to create reusable systems for localization, authentication, payments, credits, model routing, and job tracking instead of solving every page as a one-off feature.
What's next
Next I plan to improve prompt assistance, side-by-side generation comparison, longer project workflows, reusable reference libraries, and smarter routing between quality and fast modes. I also want to make it easier for creators to organize scenes into complete campaigns and stories rather than isolated clips.
Built With
- cloudflare
- drizzle
- next.js
- postgresql
- react
- stripe
- tailwind
- typescript
- veo
Log in or sign up for Devpost to join the conversation.