{
  "id": 13419364,
  "title": "I built an AI pet dance app: one photo, one generator",
  "url": "https://urgent.news/2026/10/10/i-built-an-ai-pet-dance-app-one-photo-one-generator",
  "topic": "ai",
  "section": "AI",
  "published": "2026-10-10T13:25:30.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/nongyi531415/i-built-an-ai-pet-dance-app-one-photo-one-generator-138m"
  },
  "original_language": "en",
  "account": "I built CatDance, a web app that transforms a pet photo into an AI-generated dance video. The concept is simple: upload a photo of a cat, dog, or plush toy and let the app create a short dance clip starring the pet. The main engineering challenge was creating a user-friendly experience despite the differences in cost and capabilities between the preview and full video generations.\n\nInitially, I separated the free preview and full video too much, which led to users repeating their work. To improve the workflow, I created a new system where users can upload the photo once and then choose the free preview or full version in the same place. Users can take advantage of a Google account and try one free 5-second preview. The full version produces approximately 19 seconds at 720p, supports an optional second pet, and offers preset scenes, starting at $9.90 as a one-time purchase.\n\nThere is no subscription required. The preview and full versions use different models, so the preview serves as a way to test the process rather than guaranteeing an identical final output. Generation is just one part of the process. The frontend uses React and TanStack Start, running on Cloudflare Workers. Generated files are stored in object storage. A key learning point was recognizing that a provider reporting \"completed\" doesn't necessarily mean the customer has a downloadable video. The application still needs to retrieve and assemble the final clip, attach template audio, and save the output file.\n\nTo address this, I treat delivery as an explicit step in the job lifecycle. The system records which stage failed, implements retry limits, and returns the generation credit for failed orders. Additionally, an unclear submission is investigated before automatically resubmitting the same paid model request.\n\nThe homepage showcases real input photos and video examples, demonstrating the product's capabilities better than a lengthy feature list. These examples allow users to judge whether the result is something they would want to share. The quality of the photo and the clarity of the subject are crucial factors. A clear image with one visible subject yields better results than a crowded or heavily cropped photo. When replacing two pets, the task becomes more challenging, and AI results may vary.\n\nYou can view the examples and use the generator at catdance.app. As the creator of the product, I welcome feedback on the upload flow and the clarity of the free/full choice explanations.",
  "summary": "I built CatDance , a small web app that turns a pet photo into an AI dance video. The idea is playful: take a cat, dog or plush photo and make it the star of a short dance clip. The interesting engineering problem was making the workflow feel simple even though preview and full generation have different costs and capabilities. One upload, two choices My first approach separated the free preview…",
  "key_points": [
    "CatDance app transforms pet photos into AI-generated dance videos",
    "Users can upload photo once, choose free preview or full version",
    "Full version produces 19-second 720p video, costs $9.90"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}