Why your localhost:3000 link only works for you

You finish the app. It looks great. You send a friend or a client a proud little message: "Check it out: http://localhost:3000". They write back that it does not load. You open the same link, and it works. Almost every developer has sent that message at least once.

What localhost means

localhost is a name for your own computer. When you open http://localhost:3000, the browser asks your machine for the app on port 3000. When a friend opens the same link, their browser asks their computer. Your app is not running there, so they see an error. The link points at a different computer for each person who opens it.

Ways to share it

Share your screen on a call if someone only needs to look. A tunnel such as ngrok or Cloudflare Tunnel gives a temporary public address while your computer and the tunnel are running. See ngrok.com and cloudflare.com. Deploy when the link should keep working after you close the laptop. Vinssi runs the app in Europe and gives you an address anyone can open.

A static site or a Vite build

If the project builds into plain files, such as the dist folder of a Vite app, publish that folder with Vinssi Pages. Pages does not need a plan. The command line tool needs Node 20 or newer.

npx vinssi login

The tool prints a short code and a link. Open the link on any device, sign in, check that the code matches, and choose Allow. A workspace is created the first time you sign in. The code expires after ten minutes. After npm install -g vinssi, the same commands work as vinssi.

npm run build
npx vinssi pages publish ./dist

The folder needs index.html at its root. Add --jsonto print the site id, version id, URL, size, and file count. An example address looks like https://<name>-<random characters>-<workspace>.pages.vinssi.ai. A site that was just published can return 404 for about ten seconds, so wait and try once more. Add --site and the site id to keep the same address.

A full app from GitHub

Follow the quickstart. Sign in and choose Install GitHub App. Grant it only the repositories you want to deploy. Vinssi requests read access to repository contents and metadata. Choose New app, name it, and pick one repository. Open Settings, then Build, and leave Auto on unless the app is in a subfolder or does not read PORT. Add keys under Settings, then Variables. Open Billing, choose a plan, complete checkout, and press Deploy. An app from GitHub needs a plan, from €5 a month per app, excluding VAT. See prices.

A first deployment typically takes two to five minutes. When the status is Live, open the address. An example looks like https://<project-slug>-<4 random characters>.app.vinssi.ai. Every push to the default branch deploys again. From the terminal, run npx vinssi projects list, then npx vinssi deploy <projectId>. The app still uses port 3000. Vinssi sets PORT to 3000 and sends traffic there.

These steps were not run against a signed-in Vinssi account for this guide.

Common questions

Why does localhost work for me but not for my friend?
localhost always means the computer that opens the link. Your app runs on your computer, not on theirs.
Do I need a plan?
Not for Vinssi Pages. An app deployed from GitHub needs a plan.
Should I use a tunnel or deploy?
A tunnel fits a short test while your computer is on. Deploy when the link has to keep working.
Can a client open the link on their phone?
Yes. Anyone with the link can open it.

Ask your AI helper to put it online. Copy this: Deploy my app with Vinssi. Instructions: vinssi.ai/get-started.md

Related guides