How to Back Up Your AI-Built Project: 4 Real Options
Export the source code to GitHub. That single step turns a project inside a builder into an ordinary repository on your own account, with full history, that you can clone, hand to a developer, or host anywhere. On Zugo the code is yours, so the export is a right rather than a favour.
Everything else in this guide is a supplement to that one action. A backup is only real when it survives the tool that made it, and most people discover which of their copies qualify at the worst possible moment.
What counts as a backup for an AI-built project?
A copy stored inside the same system as the original is not a backup. It is a convenience. The test is simple: if the platform were unavailable tomorrow morning, could you still rebuild and serve the thing? If the answer needs the platform, you do not have a backup yet.
An AI-built project has three separable parts, and they fail independently. The source code is the pages, components, and logic. The data is whatever your users typed in. The knowledge is the set of prompts and decisions that produced the current shape of the site.
Most people back up the first one and forget the other two. The code is the easiest to replace and the data is the hardest, which is exactly backwards from where the attention usually goes.
There is a fourth thing worth keeping, and it is the least obvious: the configuration living in other people's systems. Which domain points where, which Stripe products exist, which email domain is verified. None of that is in your project, and all of it is needed to stand the project back up.
How do you actually back up each part?
Four routes, and they cover different failure modes. You do not need all four on a hobby project, and you do need more than one on anything that has customers.
| What you are protecting | How to do it | What it survives |
|---|---|---|
| Source code | Export to GitHub | Anything happening to the builder |
| Live hosting | Deploy to your own Vercel account | Wanting to leave, or host elsewhere |
| Data | Keep it in your own Supabase project | A bad edit or a wrong delete |
| Knowledge | Save your prompts in a text file | Your own memory in six months |
The fourth row looks trivial and is not. The prompt that produced a good build is a specification, and a specification you can paste again is worth more than a screenshot of the result.
Notice that three of the four routes end in an account you own. That is the actual point of the exercise: distributing the project across services where you hold the credentials, rather than depending on any single one.
Why is GitHub export the backup that matters most?
Because it is the only copy that is complete and readable without us. An exported project is a normal repository: standard files, standard structure, and any developer can open it without learning a proprietary format.
That has a second benefit people underrate. Once the code is in Git, every change you make afterwards has a history behind it. You can see what the site looked like last month, diff two versions, and roll back a change that broke something. A builder gives you the current state; Git gives you every state.
It also settles the ownership question in the most concrete way available. You are not renting the output. If the project outgrows what a builder can maintain, you hand a repository to a developer and work continues from there. The export guide covers the mechanics of connecting the account and pushing the first commit.
One honest caveat: exporting the code does not export your database contents. A repository holds the application, not the rows your users created. That is the next section, and it is the part that actually hurts to lose.
What about the data, not the code?
Your database lives in your own Supabase project when you connect one, which is the single most important architectural fact for backups. The rows are in an account you control, under credentials you hold, and they do not go anywhere if you stop building.
That also makes backups your responsibility, and Supabase's own tooling is where you handle them. Snapshots and exports are a database concern rather than a builder concern, and treating them as such is the correct mental model. The Supabase connector guide covers how the connection is set up in the first place.
Uploaded files follow the same logic. Images and documents in storage are not in your Git repository, so an export leaves them behind. If a customer's uploaded file matters, it needs a copy of its own.
The practical rule: anything a user typed or uploaded is data, and data needs a separate plan from code. A weekly export of the tables that would be painful to recreate is enough for most small projects, and it takes minutes.
How often should you back this up?
Tie the frequency to change, not to the calendar. A site nobody edits does not need weekly attention; a database taking daily orders does.
Code: export once at the start and push after any session where you made changes you would hate to redo. Because Git keeps history, an early export plus regular pushes covers you better than a heroic monthly effort.
Data: as often as losing a day of it would hurt. For a portfolio contact form, monthly is fine. For anything with paying customers, daily is the honest answer.
Prompts: whenever a prompt produces something good. One text file next to the project, with the prompt that built each page, will save you an hour the first time you need to rebuild a section from scratch.
The thing that actually goes wrong is not frequency, it is never starting. A single export today beats a perfect schedule you plan and do not follow.
What does a backup not protect you from?
Three limits worth naming, because a backup that you trust to do more than it does is worse than none.
It does not protect against a bad change you copy forward. If you back up a broken version, you have a broken backup. Git history helps here because the good version is still behind you, but a single overwritten copy does not.
It does not preserve connected services. Your Stripe products, your Resend domain verification, your DNS records, and your Google Analytics property are configuration in other people's systems. Write down what is connected and where, because rebuilding that map from memory is the slow part of any recovery.
It does not make a build correct. Every Zugo build is booted in a sandbox before it reaches you and a failure is reported as a failure, which lowers the odds of publishing a blank page, but it does not remove the need for you to check the result. A backup is insurance against loss, not against mistakes.
What should you do in the next ten minutes?
If you have never backed a project up, do these three things in order and stop. Connect GitHub and export the current version, so the code exists outside the builder. Confirm your database is in your own Supabase project rather than in a demo table. Paste your best prompts into a text file in that repository.
That takes about ten minutes and moves you from "one copy in one place" to "a project you could rebuild from parts you own". If you are also thinking about where the live site should be served from, connecting your own domain is the natural next step, because a domain you control is portable in the same way the code is.
The principle underneath all of it is worth keeping: build wherever it is fastest, but hold the pieces yourself. You can export any project you make at zugo.dev, including the ones you make on the free credits.