← Projects

Building CodeEmpty.com with AI — From Prompt to Production

Posted May 8, 2026
CodeEmpty.com is an open-source AI-built CMS and project publishing platform created through real-world vibe coding workflows.

This project documents the complete process of building and deploying CodeEmpty.com using AI — from initial prompting, implementation, debugging, testing, iterations, deployment, troubleshooting, and publishing to production.

The goal is not to create hype around AI tools, but to transparently show the practical realities of building software with AI:
- prompting
- debugging
- fixing AI mistakes
- deployment
- iterations
- production issues
- real workflows

The platform itself is also part of the vision.

CodeEmpty.com records projects step-by-step with screenshots, prompts, iterations, deployment processes, and implementation details. Projects can later be exported or published to OpenVibeHub.com — an open community for sharing vibe coding projects, collaboration, reviews, discussions, and iterative software development.

This project currently includes:
- AI-assisted CMS
- project & step management
- rich content elements
- static page generation & caching
- Cloudflare Pages deployment
- D1 database integration
- Workers KV caching
- R2 media storage
- GitHub CI/CD workflow
- AI-ready API architecture

The entire project was built through iterative development cycles:
Prompt → Build → Test → Fix → Deploy → Repeat

This project is open-source and intended to encourage practical, collaborative, transparent AI-assisted software development.
▶ Watch on YouTube
📑 Contents — 42 steps
Steps:
Content:
1. 1. Install Claude Code ▶ 1:11 3 items · 3 🖼
Search: “How to use Claude Code” → Links may change, so always start with search
Select your platform Copy the install command
Open Terminal Paste and run
2. 2. Setup GitHub Repository ▶ 2:03 3 items · 3 🖼
Go to GitHub Register or login
Create a new repository
Copy the repository URL
3. 3. Setup Local Repository ▶ 2:41 2 items · 2 🖼
Navigate to your working folder
Clone the repository
4. 4. Learn & Run Claude Code ▶ 2:58 2 items · 2 🖼
Run "claude -- help"
Run "claude"
5. 5. Claude Setup ▶ 3:28 2 items · 2 🖼
/init - Initialize project
/login - Login to account
6. 6. Subscription Required ▶ 3:49 3 items · 3 🖼
Claude requires a paid plan
Subscribe → Pro plan
Authorized ✅
7. 7. Check Usage ▶ 4:43 1 item · 1 🖼
/usage
8. 8. Planning (Master Prompt) ▶ 4:57 3 items · 3 🖼
Prepared a full master prompt (see description)
Even without asking, it starts planning
It asks for permission before running commands
9. 9. Iteration 1 — Start Build ▶ 5:37 2 items · 2 🖼
Type "start implementation"
Claude begins generating the full CMS.
10. 10. Iteration 1 — Install & Run ▶ 7:50 1 item · 1 🖼
Type "run and allow me to test"
11. 11. Iteration 1 — Testing ▶ 8:04 4 items · 4 🖼
Click the link to open browser
Homepage with a test project
…admin page is empty
Right click the page and select Inspect
12. 12. Iteration 2 ▶ 8:49 2 items · 2 🖼
Copy error messages
Paste into prompt
13. 13. Iteration 2 — Building ▶ 9:01 1 item · 1 🖼
Start building
14. 14. Iteration 2 — Testing ▶ 9:07 2 items · 2 🖼
Refresh. Test again
New errors… repeat
15. 15. Iteration 3 ▶ 9:23 1 item · 1 🖼
Copy the error… paste into the prompt… and iterate.
16. 16. Iteration 3 — Building ▶ 9:32 1 item · 1 🖼
17. 17. Iteration 3 — Testing ▶ 9:44 9 items · 9 🖼
Refresh. Test again
Now it works
Let's test the Projects menu...
It said "auto-generated". So leave it empty to try.
Need HTML editor for description
Homepage should show the new project
Not working…
Try add a new step...
no response?
18. 18. Update Github ▶ 12:23 3 items · 3 🖼
git commit = save version git push = upload to GitHub
Authentication issue detected
We will proceed with Option B to authenticate
19. 19. Iteration 4 ▶ 13:37 1 item · 1 🖼
Continue fixing issues Full steps available in README
20. 20. Iteration 4 — Building ▶ 13:52 1 item · 1 🖼
21. 21. Iteration 4 — Testing ▶ 14:12 12 items · 12 🖼
Refresh the page and test "Add Step"
Each step supports:
Description (HTML editor?)
Image (upload?)
Youtube embed
URL links
Code / prompt blocks
Multiple steps
Check project page
Not updating…?
Suspect slug issue
Details are correct Slug generation is not
22. 22. Iteration 5 ▶ 17:41 1 item · 1 🖼
Adding structure… content types… and editing capabilities.
23. 23. Iteration 5 — Building ▶ 18:18 1 item · 1 🖼
24. 24. Iteration 5 — Testing ▶ 18:35 7 items · 7 🖼
HTML editor works
Drag & drop enabled
HTML editor in Description works
Steps also have drag-and-drop support
Test slug auto-generation
Slug still not working
from the URL, we can see it's not working...
25. 25. Iteration 6 ▶ 20:44 1 item · 1 🖼
26. 26. Iteration 6 — Building ▶ 20:54 3 items · 3 🖼
Check usage...
we are using haiku-4.5 and sonnet-4-6...
27. 27. Iteration 6 — Testing ▶ 21:14 4 items · 4 🖼
Slug works now
Slug works?
Test Blog
Slug issue again…
28. 28. Iteration 7 ▶ 23:18 1 item · 1 🖼
29. 29. Iteration 7 — Building ▶ 23:30 1 item · 1 🖼
30. 30. Iteration 7 — Testing ▶ 23:57 3 items · 3 🖼
Fix applied
Continue testing
App registration → error
31. 31. Iteration 8 ▶ 24:34 1 item · 1 🖼
32. 32. Iteration 8 — Building ▶ 24:53 1 item · 1 🖼
33. 33. Iteration 8 — Testing ▶ 24:58 3 items · 3 🖼
Data persists
Create new record → works
Confirmed that git committed and pushed
34. 34. Deplpyment ▶ 25:49 2 items · 2 🖼
Follow README
Now we deploy using Cloudflare.
35. 34a. Create a Cloudflare Account ▶ 26:05 1 item · 1 🖼
36. 34b. Register or connect a domain ▶ 26:31 1 item · 1 🖼
Register domain: CodeEmpty.com
37. 34c. Create Database (D1) ▶ 27:09 6 items · 6 🖼
Storage & databases D1 SQL Database
Name must be "codeempty-db"
Go back to the D1 Database list
Click on the UUID value to copy it
Open wrangler.tom file in text editor (or notepad)
Paste the UUID as the value of databaseid
38. 34d. Create Key-value (KV) store ▶ 28:39 5 items · 5 🖼
Storage & databases Workers KV
Name must be "codeempty-pages-kv"
Look up the KV id from the KV list
Click on the ID to copy it
Place the ID to both id and previewid in wrangler.toml
39. 34e. Create R2 Storage ▶ 29:48 3 items · 3 🖼
Storage & databases R2 Object Storage
Requires a subscription but with free quota
Name must be "codeempty-media"
40. 34f. Create Cloudflare Pages ▶ 31:08 10 items · 10 🖼
Connect the repository… and trigger the build.
Connect GitHub
After connecting, I go back or re-enter the Create Application page
Click the "Get started" link
Import an existing Git repository
Select the github account where we store the code
Select repository
Put "npm run build" as Build command
Put "dist" as Build output directory
Deployed!
41. 34g. Add Domain ▶ 32:46 4 items · 4 🖼
It will take a while for verification. But we don't have to wait.
Just try it...
It fails.
42. 34h. Troubleshooting ▶ 33:32 37 items · 37 🖼
Check bindings (README Step 7)
Test default domain
Ask AI
The fix is clear...
Missing Step 8 in Readme.md
Ask AI...
It asks me to run this command here...
Error…
Retry outside terminal
it doesn't understand "!"...
remove "!" and try again...
Read the error.
Ask AI
Try again.
Another error.
Update wrangler (the error suggests)
Keep going.
press "up" to retry commands
it works but...
it said "add a --remote flag"!
Referring to Step 8, let's login first!
Making progress...!
Continue setup
It works but local again. Add --remote?
still local... doesn't recognize the --remote flag?
still local... still doesn't recognize the --remote flag?
wait...!
It's actually running this command. The --remote flag should be applying here?
looks like it just doesn't recognize the --remote flag
And this time…
Finally… it works
It works...!!!
It works!
Try to access admin dashboard
Create new project
Upload image
Everything works