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.