INDEPENDENT PRODUCT / MOBILE APPLICATION

Danceify

A playful idea needed a clear path from photo to performance.

I built Danceify around that path: choosing a photo, shaping a dance, following the generation and deciding what to do with the result.

Explore Danceify
Danceify promotional mockup showing a selected portrait, Upload Photo action and dance-style choices
Photo selection in Danceify's product artwork.

Give the idea a starting point.

The starting point is simple: one photo, turned into a short dance video. The product needed to make the choices around that transformation understandable.

The use case is a casual creator who wants to turn a portrait into a short dance clip without filming a performance or learning a video editor. Alternatives include recording and editing the dance themselves, or working from a blank prompt in a general video generator. Danceify gives that task a narrower starting point: a photo and a recognisable dance style, with custom direction available when wanted.

  1. A photoA concrete place to begin
  2. A directionChoose a style or describe a scene
  3. A performanceWatch, save or try another take
The creative loop I built around the generation.
Danceify promotional mockup with Turkish Halay, Robot Dance, Moonwalk, Hip Hop and K-Pop style choices
Ready-made styles in the supplied promotional mockup.

Start with a choice someone can recognise.

I gave ready-made dance styles a place alongside a custom scene. Someone can choose a direction without writing a prompt, then add notes for movement, atmosphere or camera framing.

The trade-off is between a clear starting point and room to experiment. The interface supports both, without making custom direction a requirement.

Bring input problems forward.

I added on-device checks for darkness, low resolution and landscape framing before the photo enters the cloud generation flow. The warnings leave the decision with the person choosing the image.

These checks flag likely input issues. The final movement and likeness still depend on the generated result.

Waiting is part of the experience.

A person can finish their input before the video is finished rendering.

I separated the generation job from the screen that starts it. The app tracks the request, offers a way to continue in the background and lets someone return when the result is ready.

The video

  1. Request accepted
  2. Cloud generation
  3. Result ready

The person

  1. Start the generation
  2. Continue in the app
  3. Return to the result
Two timelines, connected by a tracked job. Notifications depend on permission.

Keep the state connected.

I built the Flutter experience around a persistent job identity, with Firebase tracking the cloud operation. The app saves that identity when someone moves generation to the background, so it can reconnect to the existing job when they return.

For a photo and a chosen dance style, I combine the style's direction with any scene notes when Generate is pressed. Selecting the style alone does not start a paid generation: the launch flow checks access before submitting the job.

Make the return part of the flow.

In-app updates and permission-based push notifications connect completion back to the result. A retry starts a new generation, rather than resuming the failed job.

The backend records completed videos in Creations and updates the job the app is following. Provider callbacks and a scheduled check for recent processing jobs offer two paths to recording a result.

Keep the creative loop open.

A generated video gives someone something to react to. The next choice can be to keep it, share it or take the idea in another direction.

I connected playback to saving and sharing, and added a route to try another style using the same photo. That keeps the source image in the creative loop instead of asking for the same input again.

Keep the photo.
Change the direction.

Another take is another generation.

I kept access checks in the same launch flow for the first video and subsequent attempts. Each job records which allowance funded it, with a mechanism to return access after a confirmed failure.

That is part of the product experience too: the creative action, its processing state and its use of someone's allowance need to stay connected.

Danceify promotional poster of a dancer in embroidered black clothing, framed by golden light and the words One Photo. Endless Moves.
Danceify's promotional dance illustration. This is artwork, not a generated-video result.

My work was to make the whole creative loop hold together.

I designed and built the mobile experience and its generation workflow, from photo guidance and creative direction to job tracking, playback and another take.

Ahmet Yasir Demir / Contact

Let’s talk.

A project, a collaboration, or a question. Your message comes straight to me.

Sent privately to dydemiryasir@gmail.com. Want a reply? Include your email above.