Part 7 of 7 · Publish
Publish your reading list.
Put the checked app online so you can open it from a public link, then verify that version too.
By Ahmed Gadir7 min read
Start after testing your app. So far, it runs on your computer. Deployment puts the files on a hosting service that can serve them to other people’s browsers.
What publishing means
Part 3 described the two halves of this app: a server that delivers files, and a browser that runs them. Until now the server has been the development server on your own computer. It is built for working on an app. It reads your editable source files, rebuilds the page the moment the agent changes something and includes extra help for finding errors. It only runs while your computer does, and only your computer can reach it.
Publishing replaces that server with one that is always on and reachable by anyone. Because this app has no backend, the replacement can be very simple. Static hosting is a service that stores a folder of files and delivers them, unchanged, to whoever asks. It runs none of your code; the visitor’s browser does that, as yours has all along.
A host shouldn’t be given your working project, though. The source is arranged for editing, spread over many files and dependent on tools installed on your computer. A production build converts it into a small set of compact files that a browser can use directly. Vite writes them to a folder called dist. You edit the source; dist is generated from it and is replaced by every new build.
We’ll use Netlify, and upload dist through its website. A visible upload makes it clear what is being published. Tools that publish automatically on every change exist, and they become worth setting up when you publish often. You need a Netlify account, but no GitHub connection or custom domain. Check the host’s current plan and usage limits before publishing.
1. Prepare the files to publish
Vite’s deployment guide describes the build in more detail. Ask your agent to make one and check it:
Prepare my app for publishing
Read CLAUDE.md, docs/brief.md and docs/epics/05-publish.md. Check the previous epic for unresolved failures before preparing a release. Run the unit tests, the browser tests and npm run build. Verify the generated dist folder contains index.html and its referenced assets. Start the production preview with npm run preview and check it in a browser if tools are available. Give me the preview URL and the exact dist folder to upload. Record performed checks and anything unverified. Do not upload or deploy; I will do the manual publishing step.
Paste this into your project conversation.
Open the preview URL and try adding, editing and refreshing a book. The preview serves the built files from dist, so you are trying exactly what will be uploaded, but it is still on your computer. It uses a different port from the development server, so it starts with an empty list: a different address has its own storage.
2. Upload your app
- Sign in to your own Netlify account and open Netlify Drop.
- Upload the
distfolder the agent identified. If you can’t find it, ask the agent to open the folder for you or give you its full path. For this route, choose the built output containingindex.html, rather than the source ZIP or the whole project. - Wait for the deployment to complete, then open the site URL Netlify provides.
- A site published this way is normally open to anyone who has its address. Look at the site’s access settings in Netlify if yours asks visitors for a password, and share the link when you are ready.
Netlify’s manual deployment instructions cover the upload controls. Keep your source project on your computer; uploading dist does not provide an editable backup of it.
3. Check the published version
At the new site URL, add a test book, edit it, refresh and check that it remains. Try a filter and remove the test book with undo. Open the link on your phone and check the layout too.
An empty list on the published site is expected: it has a different address from localhost. Your local books do not move there. On another device, the app starts its own separate list.
Tell your agent the URL and which checks you performed. Ask it to update docs/epics/05-publish.md with those results, clearly identifying your manual checks. A successful upload alone is not evidence that the interface works.
4. Keep and update your project
For later changes, ask the agent to edit the source project, run the tests and make a new build. Upload the new dist folder to the existing site’s Deploys page. Recheck the result at the same address. Changes on your computer do not automatically update this manually deployed site.
FAQ
How would I sync the same list between devices?
This version already persists data with localStorage. Cross-device access would need shared storage, usually a hosted database, plus accounts and permissions to keep each person’s list separate. That is a further feature to plan and test; publishing this app does not add it.
Does a GitHub backup include my saved books?
No. Git tracks project files. Books entered in the app live in the browser, and clearing that site’s data removes them.
What should I build next?
You have now planned an app, understood its architecture, built it in checked stages, tested it and published it. The same sequence applies to a larger project; the main difference is that the architecture has more parts. To see it applied to a real product with accounts, payments and a mobile app, follow Building RepGarden.