Companion
Hackathon MVP · two-person team · 2026
An iPhone app that turns a photo of a real object into a textured 3D model to spin, keep, and arrange in a personal collection. A small API hands the photo to an image-to-3D model and converts the result for iOS.
A two-person hackathon MVP with a private repository. The landing page's user counts and rating are placeholder copy, and its object images are image-model renders, not app output.
Open live demo Private repositoryThe web landing page. Its user counts and rating are placeholder copy, and the objects are image-model renders.
An object worth keeping
A collectible from the landing page. This is an image-model render made for the mock-up.
Small things, kept
A keychain from the same page, also an image-model render.
From photo to model
Submit the photo, poll the prediction, then download and convert once. Later requests read the cached file.
Implementation notes
A shelf for things you care about.
Companion was built in a week as a hackathon MVP. You photograph an object, wait while a model is generated, and get a 3D collectible that lives in a gallery and on home screen widgets.
Submit, poll, convert once.
The API sends the photo to Meshy 6 through Wavespeed and returns a prediction ID, which the app polls. The first time a prediction completes, the server downloads the GLB, converts it to USDZ with a Python script, and caches the result so later polls and downloads reuse it.
Routes are described with Zod schemas that also generate the OpenAPI document. The model provider, converter, and cache sit behind small interfaces, so the generation flow reads top to bottom.
What is real and what is a mock-up.
The 3D generation path is real. The web landing page is a marketing mock-up: its user counts, rating, and community screens are placeholder content, and its object pictures are image-model renders rather than app output.
I worked on the iOS interface, widgets, model rendering, the web app, and the API scaffold, with one teammate. The repository is private.


