Skip to content
zero2vibecodelearn vibe coding
Level 4 · Shipping it 7 min Reviewed by the author · Aug 4, 2026

What you now owe it

Shipping starts an obligation: updates, secrets, cost, backups, and the decision to shut it down cleanly when it stops being worth it.

Level 4 · 0 / 3 lessons0%

No hands-on task in this lesson — just read it through and answer the questions.

The link works. Someone used it. That is the good part.

Here is the part nobody mentions in a vibe coding pitch: a shipped thing is an ongoing commitment. Small, but not zero, and it never quite reaches zero until you deliberately shut it down.

Updates

Your code will sit still. Everything around it will not.

  • Dependencies get security fixes. A problem is found in a package you use. Your code did not change — the world learned something about it. That is a patch you now need.
  • Platforms change. Browsers, hosting services, and any API you call all move on their own schedule.
  • Certificates and integrations expire. Some quietly.

For a static page with no dependencies, this is genuinely almost nothing. That is one more argument for keeping version one small.

For anything with packages, a practical rhythm: check for security updates when you are notified, and once every few months even when you are not. You can hand this to the agent:

Check the dependencies in this project for known security problems.
List anything that needs updating and what would break if we did.

Quick check

Why can a project that has not been touched in months suddenly become insecure?

Secrets

If your project has keys, they are now a thing you own.

  • Never in the code. Environment variables, always.
  • Rotate them — replace them with new ones — on a schedule, and immediately if one might have been exposed. Exposed includes: pasted into a chat, committed once and removed, sent in a screenshot, or in a that used to be public.
  • One key per purpose where you can. Then a single compromise does not hand over everything.
  • Set spending limits on any paid key. Most providers offer them. A key with no limit is an unbounded liability if it leaks.

Important

A key that was public for five minutes is compromised. Automated scanners watch public repositories for exactly this, continuously. Rotate it and move on — do not spend the evening deciding whether anyone noticed.

Cost

Three habits, all cheap, all before you need them:

  • Set a spending cap on anything with a bill: hosting, AI providers, storage. Set it now, not after a surprise.
  • Turn on billing alerts. Learning about your costs from a bank statement is the expensive version.
  • Know your per-user cost. If each visitor triggers a paid call, then popularity is a bill. That is fine — as long as you knew before it happened.

The horror stories are not people getting hacked. They are a loop with no limit, or a free tier that silently became a paid one, running unnoticed for a month.

Quick check

When is the right time to set a spending limit?

Backups

If your project holds anything a person would be upset to lose, you need a copy somewhere else.

Readlist stores links in the visitor’s own browser, which is a quiet design decision with a real consequence: clearing browser data wipes it. That is acceptable for a personal link list. It is not acceptable for anything someone spent an hour typing.

The escape hatch that costs almost nothing: an export button. One click, everything in a file the user keeps.

Add an Export button that downloads all saved links as a JSON file,
and an Import button that reads one back in.

That is fifteen minutes of work and it converts “my data is gone” into “I have a copy”.

Quick check

What is the cheapest useful backup for a small browser-based project?

Writing it down

Six months from now you will not remember how any of this works. Neither will the agent — a new session starts with nothing.

Keep the project notes file current, and make sure it answers three questions:

How to run it: ...
Where the secrets live (names, not values): ...
What breaks first, and what to check when it does: ...

That is the whole handover document. It is enough for a future you, and enough for another person.

Knowing when to stop

Not every project deserves indefinite maintenance. Most do not.

A project you no longer use, that still runs, still holds keys and still costs money, is a small ongoing liability with no upside. Retiring it is a task, not the absence of one:

  • Tell anyone who uses it, with a date.
  • Export the data and give people a way to take theirs.
  • Revoke every key it used.
  • Cancel the services.
  • Take it down and remove the DNS record.

Done properly, that takes twenty minutes and ends cleanly. Done by letting a card expire, it ends with a broken link someone still has and a database somewhere you no longer control.

Tip

Shutting a project down cleanly is a sign of judgement, not failure. The alternative — a graveyard of half-running services with live keys — is the thing that actually looks bad.

Try it yourself

One shipped project, one leaked key, and the decision nobody makes on purpose.

Where you are now

You can do the whole loop: pick something finishable, describe it, steer it, read what came back, catch the expensive mistakes, ship it, and look after it.

That is the skill. It does not depend on which agent you use, and it will not expire when the tools change.

What is left is depth: the terminal that most agents live in, and the specific tools themselves.

How much maintenance does a small shipped project need?
What should I do with a project I no longer use?

Check your understanding

Answered 0/3
Mode:

Why do dependency updates matter even when nothing is broken?

What is the right way to hand a running project over to someone else?

What is the correct way to retire a project nobody uses?

Finish the task in the terminal and answer the questions to complete the lesson.

📝 My notes

Saved automatically in this browser · shows up on the Notes page.

Lesson Q&A

Why do dependency updates matter even when nothing is broken?

The code did not change; the world learned something about it. That is why patching is a maintenance task and not a feature request.

What is the right way to hand a running project over to someone else?

Written, findable, and short. The three things a new maintainer needs are how to run it, where the secrets are, and the known weak point.

What is the correct way to retire a project nobody uses?

An abandoned running service still holds keys, still spends money, and still holds other people data. Shutting down is a task, not an absence of tasks.

Why can a project that has not been touched in months suddenly become insecure?

Nothing in your project changed. Public knowledge about a dependency did, and that is enough.

When is the right time to set a spending limit?

A limit set in advance is a guard rail. Set afterwards, it is a lesson you already paid for.

What is the cheapest useful backup for a small browser-based project?

Export puts a copy in the user's hands with no infrastructure at all. It is the highest value per minute of work in this lesson.

Related reading on the blog

Move between lessons with · search with ⌘K