How I Built a Free Image-to-Prompt Tool with Next.js and a Vision Model A developer built ImagePromptNow, a free tool that uses a vision-language model to generate detailed prompts from uploaded images, enabling users to recreate styles in AI art platforms like Midjourney and Stable Diffusion. The tool processes images through a structured pipeline that outputs subject, style, lighting, and composition details, and includes localization in six languages for broader reach. The project is deployed on a VPS with custom fixes for SSL renewal issues and Next.js monorepo configuration. Recently, I kept hitting the same wall in AI art: I'd find an image with a style I loved, but recreating it in Stable Diffusion or Midjourney meant guessing at the prompt for far too long. Writing prompts from scratch is slow and inconsistent. So I built the reverse: a tool where you upload an image and get a detailed, ready-to-use prompt back. This post walks through how it works and the decisions behind it. Live version: ImagePromptNow https://imagepromptnow.com Instead of prompt → image, go image → prompt. Feed a picture into a vision-language model, and format its output into a prompt describing the subject, style, lighting, and composition — something you can paste straight into Midjourney, Flux, Stable Diffusion, or DALL-E. The whole product is really just three things: Nothing exotic. The interesting parts were the prompting and the deployment, not the framework. The naive approach — "describe this image" — gives you a caption, not a prompt. A caption reads like "a man sitting on a yellow swing." A prompt needs structure: subject, setting, style, lighting, camera, mood. The fix was instructing the model to return the description in a specific order and level of detail, then post-processing it into a clean prompt. I also expose a "structured breakdown" so users can see how each element maps back to the image, which makes it easier to tweak specific parts. A few lessons: I added next-intl and 6 languages sooner than most people would. The payoff showed up fast in search: non-English pages started ranking within days, in markets where competitors only ship English. If you're building anything content-adjacent, localization is underrated distribution. The site runs on a CWP7pro VPS behind Apache with a Next.js reverse proxy. One sharp edge: AutoSSL renewals would wipe the proxy vhost config and take the site down with a 403. The fix was a small watchdog cron that re-inserts the ProxyPass block if it goes missing. Not glamorous, but it turned a recurring outage into a non-issue. Another one specific to Next.js on a monorepo: apps/web had "type": "module" in its package.json, so any helper Node scripts inside it had to use the .cjs extension or they'd throw ESM errors. I made three deliberate choices that shaped everything: These aren't just nice-to-haves — they're the product. The friction-free path is what makes people actually use and share a tool like this. The most requested feature so far is an inline-editable prompt with the ability to "lock" certain visual elements before regenerating — keep the subject, change the style, that kind of thing. That's next on my list. If you want to try it, it's here: ImagePromptNow https://imagepromptnow.com — no signup, and I'd genuinely welcome feedback, especially on prompt quality versus what you'd write by hand. Thanks for reading