Hackathon demo
Three hours left, projector demo. Build it, deploy it, QR it for the audience.
The scenario: hackathon final day. Your team's app works on localhost. Demo in front of judges, projector + audience. You need a real URL, not screen-share.
This recipe is optimized for speed: under a minute from working build to URL displayed.
Step 1 — Deploy public
Skip the "private + invite" step; this is a hackathon — public URL is the right answer:
vibehost app create hackathon-demo
vibehost link --app hackathon-demo
vibehost deploy ./dist
vibehost app visibility hackathon-demo publicOr smush it together if your team's pressed for time:
vibehost app create hackathon-demo \
&& vibehost link --app hackathon-demo \
&& vibehost deploy ./dist \
&& vibehost app visibility hackathon-demo publicURL printed in the deploy output. Paste it into the pitch deck.
Step 2 — QR code for the audience
vibehost app qr --app hackathon-demoPrints a scannable QR in the terminal. Project it. While you're presenting, the audience opens the URL on their own phones — judges, mentors, fellow hackers all interact with your demo in parallel.
Save as PNG for the slide deck:
vibehost app qr --app hackathon-demo --png ./qr.pngStep 3 — Iterate during the event
A judge between rounds gave feedback. You fix it. Redeploy:
vibehost deploySame URL refreshes. Anyone who scanned the QR earlier sees the updated version when they reload.
If the change breaks something mid-demo, rollback is a single command:
vibehost rollback --app hackathon-demoStep 4 — Don't push untested code
If you have time, use a channel for the next iteration before promoting to the main URL:
vibehost deploy --channel test
# Channel URL: https://hackathon-demo-test-yourws.vibehost.space
# Open it in another tab; verifyWhen it's good:
# Grab the deployment ID from the channel
DEPLOY=$(vibehost channel list --app hackathon-demo --json | jq -r '.data[] | select(.name=="test") | .currentDeploymentId')
vibehost promote "$DEPLOY" --to-channel production --app hackathon-demoThe main URL updates; the audience sees the clean version.
After the hackathon
The app stays live indefinitely — VibeHost apps don't expire on free tier. Two options:
- Portfolio: keep the URL. Add it to your resume / GitHub README.
- Keep building: don't change anything. Keep deploying as you iterate. Same URL, evolving content.
If you want a branded URL for the portfolio (hackathon-project.yourdomain.com), upgrade to Business and add a custom domain — see custom domains.
Team setup (if multiple people deploy)
Invite teammates:
vibehost workspace invite teammate@x.com --role member
vibehost app grants add-email teammate@x.com deployer --app hackathon-demoAnyone with deployer role can vibehost deploy to the same app. URL stays consistent regardless of who pushed.
Free tier supports 3 workspace members. For a typical 3–5 person hackathon team, one person creates the workspace and invites the rest as needed (or each person uses their own workspace and one person owns the deploy).
Quick CLI cheat sheet
| What | Command |
|---|---|
| Deploy | vibehost deploy ./dist |
| Make public | vibehost app visibility <app> public |
| Roll back | vibehost rollback --app <app> |
| QR code | vibehost app qr --app <app> |
| List deployments | vibehost channel list --app <app> |
See also
- Quickstart — the longer version with explanations
- Channels — for safer mid-event iteration
- QR command — for in-person demos