Ba buổi coffee chat ở Sài Gòn, giờ ra Hà Nội. Lần này là Buildathon. Không cần biết code. Sáng học căn bản, chiều mỗi người đẩy một app lên link thật. Three coffee chats in Saigon, now Hà Nội. This time it's a Buildathon. No code needed. Learn the basics in the morning, ship a real app to a live URL by afternoon. 西贡三场 coffee chat,如今来到河内,这次是 Buildathon。不用会写代码。上午学基础,下午每人把一个 app 发布到线上网址。
Thứ Bảy 25/07 · 09:00 – 15:00 · có ăn trưa
VP GemCommerce · Tầng 5, số 3 Lê Trọng Tấn, Hà Nội
Chris Koh & Brothers · mang laptop sạc đầy (ưu tiên MacBook)
Saturday Jul 25 · 09:00 – 15:00 · lunch included
GemCommerce office · 5th floor, No. 3 Le Trong Tan, Hà Nội
Chris Koh & Brothers · bring a charged laptop (MacBook ideal)
周六 7 月 25 日 · 09:00 – 15:00 · 含午餐
GemCommerce 办公室 · 河内莱重信街 3 号 5 楼
Chris Koh & Brothers · 带上充满电的笔记本(最好是 MacBook)
Mình là founder GemCommerce / GemPages, một trong những page builder lớn trên Shopify App Store, seller khắp thế giới đang dùng. Bọn mình cũng đang build GemBoss, nền tảng Self-Driving Storefront: storefront tự vận hành, tự bán hàng. I'm the founder of GemCommerce / GemPages, one of the larger page builders on the Shopify App Store, used by sellers worldwide. We're also building GemBoss, a Self-Driving Storefront platform: a storefront that runs and sells on its own. 我是 GemCommerce / GemPages 的创始人,Shopify 应用商店里较大的页面搭建工具之一,全球卖家都在用。我们也在做 GemBoss,一个 Self-Driving Storefront 平台:会自己运营、自己卖货的店面。
Gần một năm nay, mình build phần lớn tool nội bộ (dashboard, công cụ research, automation) bằng cách ngồi nói chuyện với AI thay vì gõ từng dòng code. For about the last year, I've built most of my internal tools (dashboards, research tools, automations) by talking to AI instead of hand-writing every line. 差不多近一年,我大部分内部工具(仪表盘、调研工具、自动化)都是靠跟 AI 对话做出来的,而不是一行行手写。
Mình có nền tảng kỹ thuật, nhưng cái đó không phải điều quan trọng. Quan trọng là biết cách mô tả, hiểu rõ bản chất nó chạy ra sao. Nắm được mấy thứ đó thì ai cũng build được phần mềm cho chính mình. I do have an engineering background, but that's not the point. What matters is knowing how to describe it, and understanding what's really going on under the hood. With that, anyone can build software for themselves. 我有技术背景,但这不是重点。重点是会描述需求、真正理解底层在发生什么。掌握这些,谁都能给自己做软件。
Hôm nay chúng ta cùng trao đổi, cùng đóng góp ý tưởng, rồi chia nhóm để build ra workflow của riêng mình. Today we trade ideas, chip in, then split into teams to build our own workflows. 今天我们一起交流、一起出主意,然后分组做出各自的 workflow。
Hiểu nôm na một app gồm gì: "server", "database", "localhost", "deploy" không còn đáng sợ.A plain-language picture of what an app is: "server", "database", "localhost", "deploy" stop being scary.对 app 由什么构成有个大白话概念:“服务器”“数据库”“localhost”“部署”不再吓人。
Cách mô tả để AI build hộ, rồi bắt nó chứng minh hiểu đúng trước khi viết code.How to describe what you want so AI builds it, then make it prove it understood before coding.怎么描述让 AI 帮你做,并在写代码前让它证明理解对了。
VS Code, GitHub cá nhân, Docker, Railway: dựng xong tại chỗ, còn xài mãi về sau.VS Code, your own GitHub, Docker, Railway: set up on the spot, yours to keep.VS Code、你自己的 GitHub、Docker、Railway:现场装好,以后一直能用。
Tự tay đẩy 1 app lên URL thật qua Railway, mở được trên điện thoại.You ship a tool to a live URL on Railway. Open it on your phone.亲手把一个工具发布到 Railway 上的真实网址,手机就能打开。
Đủ để về nhà tự build tiếp, không phụ thuộc buổi học này.Enough to keep building on your own after today.足够让你今天之后自己继续做。
40 builder Hà Nội vừa cùng giải bài toán thật, không chỉ trao danh thiếp.40 Hà Nội builders who just solved real problems, not just a card swap.40 位河内 builder 刚一起解决了真实问题,不只是换名片。
Hôm nay, mục tiêu là một thứ chạy thật trên một cái link. Today, the goal is one thing that actually runs on a link. 今天的目标,是一个在链接上真的能跑的东西。
| Phần 1 · Gom câu hỏi + chia teamPart 1 · Collect + split teams第一部分 · 收集 + 分组 | |
| 09:00 – 09:45 | Chào · mình là ai · viết bài toán trên Notewave · chia team theo mối quan tâmWelcome · who I am · write problems on Notewave · split teams by interest欢迎 · 我是谁 · 在 Notewave 写问题 · 按兴趣分组 |
| Phần 2 · Căn bảnPart 2 · Foundations第二部分 · 基础 | |
| 09:45 – 11:00 | Build với AI · mổ xẻ app & từ ngữ · database · agentBuild with AI · app anatomy & terms · database · agents用 AI 搭建 · 拆解 app & 术语 · 数据库 · agent |
| 11:00 – 11:15 | ☕ Giải lao☕ Break☕ 休息 |
| Phần 3 · Build & SetupPart 3 · Build & Setup第三部分 · 搭建与准备 | |
| 11:15 – 12:00 | Setup: VS Code · GitHub cá nhân · Docker · localhost vs liveSetup: VS Code · your GitHub · Docker · localhost vs live准备:VS Code · 你的 GitHub · Docker · localhost vs 线上 |
| 12:00 – 13:00 | 🍜 Ăn trưa tại văn phòng GemCommerce🍜 Lunch at the GemCommerce office🍜 在 GemCommerce 办公室午餐 |
| 13:00 – 13:40 | Kết nối Railway · deploy trang HTML đầu tiênConnect Railway · deploy your first HTML page连接 Railway · 部署第一个 HTML 页面 |
| 13:40 – 14:40 | Build sprint · biến bài toán thành tool · mình đi từng bànBuild sprint · turn your problem into a tool · I roam to helpbuild 冲刺 · 把问题变成工具 · 我逐桌帮忙 |
| 14:40 – 15:00 | Deploy bản cuối · demo 2 phút/nhóm · chụp hìnhDeploy final · 2-min demo per group · group photo部署最终版 · 每组演示 2 分钟 · 合影 |
Trước khi học gì, cả phòng viết ra: ae muốn build cái gì, và cái gì đang cản ae. Danh sách đó lái cả ngày. Before we learn anything, the room writes it down: what you want to build, and what's stopping you. That list steers the whole day. 在学任何东西之前,全房间先写下来:你想做什么、又是什么卡着你。这份清单引导一整天。
"Tôi muốn một app để ___." Càng cụ thể càng dễ build trong chiều nay."I want an app to ___." The more concrete, the easier to build this afternoon.“我想要一个 app 来 ___。”越具体,今天下午越好做。
Không cần to. Một việc lặp đi lặp lại mỗi tuần là quá đủ.Doesn't need to be big. A weekly repetitive chore is plenty.不用很大。每周重复的一件杂事就够了。
Tấm sticky ae viết bây giờ chính là thứ ae sẽ build và deploy lúc chiều.The sticky you write now is exactly what you'll build and deploy later.你现在写的这张便签,就是下午要做并部署的东西。
Notewave này chính là một tool mình build bằng Claude. Chiều nay ae cũng build kiểu như vậy.Notewave is a tool I built with Claude. This afternoon you'll build something like it.这个 Notewave 就是我用 Claude 做的工具。今天下午你也会做出类似的东西。
Sau khi cả phòng viết xong, Notewave gom câu hỏi theo chủ đề. Bấm một nút, hệ thống chia team dựa trên mối quan tâm chung, người hỏi về ads ngồi cùng người hỏi về ads, về email ngồi với email. Cùng bài toán thì chiều build chung mới hăng. Once everyone's written, Notewave clusters the questions by theme. One click and it splits teams by shared interest, the ads people together, the email people together. Same problem, same table, better afternoon. 大家写完后,Notewave 按主题聚类问题。点一下,它就按共同兴趣分组,问 ads 的坐一起,问 email 的坐一起。同一个问题,同一桌,下午做得才带劲。
Mở tab Teams trên điện thoại là thấy team của mình. Số người mỗi team chỉnh được. Open the Teams tab on your phone to see your table. Team size is adjustable. 在手机上打开 Teams 标签就能看到你的组。每组人数可调。
Đủ để hết sợ. Không cần học thuộc, chỉ cần hình dung đúng cái app là gì và ai làm việc gì. Just enough to stop being scared. No memorizing, just the right picture of what an app is and who does what. 够用就好,不怕就行。不用背,脑子里有正确的图:app 是什么、谁干什么。
Coi AI như một anh dev freelance giỏi tay nghề, nhanh kinh khủng, nhưng mới vào ngày đầu: chưa biết shop ae bán gì, chưa biết khách ae là ai, và ngại hỏi lại nên toàn tự đoán.Treat AI like a freelance dev who's skilled, insanely fast, but on day one: doesn't know what your shop sells, who your customers are, and guesses rather than asking.把 AI 当成一个 手艺好、快得离谱、但才上班第一天 的外包开发:不知道你卖什么、客户是谁,又不好意思问,就全靠猜。
Ae đã brief agency, brief freelancer, brief xưởng may. Kỹ năng đó chuyển thẳng sang đây, không mất gì.You've briefed agencies, freelancers, factories. That skill transfers straight here, nothing wasted.你给 agency、外包、工厂都下过 brief。那套能力直接搬过来,一点不浪费。
Một phần mềm mở bằng đường link, chạy trong trình duyệt. Không phải cài, gửi link là xài.Software you open with a link, running in the browser. No install, just share the link.用一条链接打开、在浏览器里跑的软件。不用安装,发链接就能用。
Client là máy ae bấm. Server là máy chạy hoài, phục vụ mọi người cùng lúc.Client is the machine you tap on. Server is the always-on machine serving everyone at once.客户端是你点的那台机器。服务器是常开、同时服务所有人的机器。
Nơi cất mọi dữ liệu để mai mở vẫn còn. Cứ hình dung là Excel có kỷ luật.Where all data is kept so it's still there tomorrow. Think Excel with discipline.存放所有数据、明天还在的地方。就当它是有纪律的 Excel。
Nắm ba từ này là hết sợ nửa còn lại. Mấy slide sau chỉ mở rộng đúng ba thứ này thôi.Get these three and the rest stops being scary. The next slides just unpack these same three.抓住这三个词,剩下的就不吓人了。后面的 slide 只是把这三样展开讲。
Cái khách nhìn và bấm. Nút, form, bảng, màu. Sai ở đây thấy ngay.What users see and tap. Buttons, forms, tables, colour. Mistakes show instantly.用户看到和点的部分。按钮、表单、表格、颜色。错了立刻看得见。
Xử lý đơn, tính tiền, gọi AI, gửi mail. Khách không thấy nhưng sai là hỏng món.Handles orders, money, AI calls, email. Unseen, but errors ruin the dish.处理订单、算钱、调用 AI、发邮件。看不见,但出错就砸锅。
Nơi cất mọi thứ để mai mở ra vẫn còn. Đổi bếp dễ, dọn kho sai thì mệt.Where everything's kept so it's still there tomorrow. Swapping kitchens is easy; a wrong storeroom is pain.存放一切、明天还在的地方。换后厨容易,仓库设计错了很麻烦。
Chạy qua lại giữa mặt tiền và bếp. Cũng là cách app nói chuyện với Shopify, với Claude.Runs between storefront and kitchen. Also how your app talks to Shopify, to Claude.在店面和后厨之间跑腿。也是 app 跟 Shopify、Claude 对话的方式。
Chỗ để app chạy 24/7 cho người khác vào. Trên máy ae là localhost, chỉ mình ae, tắt máy là tắt. Deploy lên hosting mới thành link gửi được. Hôm nay mặt bằng của ae là Railway.Where the app runs 24/7 for others. On your machine it's localhost, just you, off when you close it. Deploy to hosting and it becomes a link. Today your premises is Railway.app 24/7 运行、供别人访问的地方。在你机器上是 localhost,只有你,关机就没。部署到 hosting 才变成链接。今天你的铺面是 Railway。
Nối GitHub là ra link, tự nhận Docker, có sẵn database. Hợp khi app cần cả server + kho.Connect GitHub and you get a link, it detects Docker, database built in. Good when the app needs a server + storeroom.连上 GitHub 就出链接,自动识别 Docker,自带数据库。当 app 需要服务器 + 仓库时很合适。
Cùng vai "mặt bằng", mạnh cho web tĩnh và Next.js. Nhẹ, nhanh; còn phần server/kho thì hôm nay Railway tiện hơn.Same "premises" role, great for static sites and Next.js. Light and fast; for a server/storeroom, Railway is handier today.同样是"铺面",擅长静态站点和 Next.js。轻快;但服务器/仓库这块,今天用 Railway 更顺手。
Máy khách (client) là điện thoại/trình duyệt của từng người, cái mặt tiền. Máy chủ (server) là một máy chạy hoài ở đâu đó, phục vụ tất cả mọi người cùng lúc, cái bếp + cái kho.The client is each person's phone/browser, the storefront. The server is one always-on machine somewhere, serving everyone at once, the kitchen + storeroom.客户端是每个人的手机/浏览器,也就是店面。服务器是某处一台常开的机器,同时服务所有人,也就是后厨 + 仓库。
"Deploy" = mang cái bếp của ae đặt lên một máy chủ chạy 24/7. Đó là việc ae làm với Railway chiều nay."Deploy" = putting your kitchen onto an always-on server. That's what you'll do with Railway this afternoon.“部署” = 把你的后厨放到一台常开服务器上。这就是下午你用 Railway 做的事。
↩ Trả ngược lại theo đúng đường đó, tất cả trong ~tích tắc.↩ The answer travels back the same path, all in a blink.↩ 答案沿原路返回,全程一眨眼。
Mỗi lần bấm "lưu", "tải", "đăng nhập"… vòng này chạy. localhost là khi cái server đó chạy ngay trên máy ae; deploy là đưa nó lên mạng.Every "save", "load", "log in"… runs this loop. localhost is when that server runs on your own machine; deploy puts it online.每次"保存""加载""登录"……都跑这一圈。localhost 是那台服务器就跑在你机器上;deploy 是把它放上网。
| Trong ExcelIn ExcelExcel 里 | Trong databaseIn a database数据库里 |
|---|---|
| Một sheetA sheet一个 sheet | table · bảngtable表 |
| CộtColumn列 | column · trườngfield字段 |
| DòngRow行 | row · bản ghirecord记录 |
| Mã đơn duy nhấtA unique code唯一编号 | id · primary key |
| VLOOKUP | foreign key |
| Filter + Pivot | query |
AI hỏi "schema thế nào?" nghĩa là: sheet nào, cột nào, cái nào nối cái nào?"What schema?" from AI means: which sheets, which columns, what links to what?AI 问“schema 怎样?”意思是:哪些表、哪些列、谁连谁?
Hình dung đơn giản: giống vài sheet Excel. Mỗi bảng là một sheet, hàng = một bản ghi, cột = một thuộc tính. Các bảng nối nhau qua id. Think a few Excel sheets. Each table is a sheet, a row = one record, a column = one attribute. Tables connect via an id. 简单想象:就像几张 Excel。每张表是一个 sheet,一行 = 一条记录,一列 = 一个属性。表之间靠 id 连起来。
khach_id trong don_hang trỏ về id trong khach_hang. Đó là "liên kết". khach_id in don_hang points to id in khach_hang. That's the "link". don_hang 里的 khach_id 指向 khach_hang 里的 id。这就是"关联"。
Khác Excel ở chỗ: app tự đọc/ghi, nhiều người cùng lúc, dữ liệu không mất khi tắt máy. Unlike Excel: the app reads/writes automatically, many users at once, data persists after shutdown. 和 Excel 不同:app 自动读写、可多人同时用、关机后数据不丢。
| id | tênname姓名 | |
|---|---|---|
| 1 | An | an@shop.vn |
| 2 | Bình | binh@shop.vn |
| id | khach_id | tổng (đ)total金额 |
|---|---|---|
| 1001 | 1 | 250.000 |
| 1002 | 2 | 480.000 |
khach_id 1 → khách "An". Một liên kết là vậy.khach_id 1 → customer "An". That's a link.khach_id 1 → 客户 "An"。这就是一个关联。
Cách tìm bảng nhanh nhất mà không cần biết gì về database: kể một câu về app của ae, rồi gạch chân mọi danh từ chỉ vật. Mỗi danh từ gần như chắc chắn là một bảng.The fastest way to find your tables without knowing databases: say one sentence about your app, then underline every thing-noun. Each one is almost certainly a table.不懂数据库也能最快找出表:用一句话讲你的 app,然后把每个表示"东西"的名词划出来。每个几乎必定是一张表。
Ba danh từ → ba bảng. Xong bước khó nhất.Three nouns → three tables. The hardest step is done.三个名词 → 三张表。最难的一步搞定了。
Chỗ nào "nhiều... nhiều..." cả hai chiều thì cần một bảng nối ở giữa. Khỏi nhớ tên kỹ thuật, cứ tả bằng tiếng Việt, AI dựng đúng.Where it's "many... many..." both ways, you need a link table in between. No need for the technical name, just describe it plainly and AI builds it right.凡是两边都"多对多"的地方,中间就需要一张连接表。不用记术语,用大白话描述,AI 就建对。
repo: thư mục chứa toàn bộ project. Trên GitHub.the folder holding your whole project. On GitHub.装整个项目的文件夹。在 GitHub 上。
commit: nút save game. Lưu một mốc để lỡ hỏng thì quay lại.a save point. Mark a spot to roll back to.存档点。存一个能回退的位置。
deploy: đẩy app lên mạng cho người khác vào.push the app online for others.把 app 推上网供别人访问。
localhost: bản chạy trên máy ae. Người khác không vào được.the version on your machine. Nobody else can reach it.在你机器上的版本。别人进不来。
server: máy chạy hoài, phục vụ mọi người.an always-on machine serving everyone.常开、服务所有人的机器。
env var: ngăn kéo cất mật khẩu, tách khỏi code.a drawer for secrets, kept out of code.放密钥的抽屉,跟代码分开。
API key: chìa khoá để app xài dịch vụ khác. Lộ = ae trả tiền.a key to use another service. Leaked = you pay.用别的服务的钥匙。泄露 = 你买单。
endpoint: một địa chỉ trong app để hỏi/gửi dữ liệu. /api/orders.an address in the app to fetch/send data. /api/orders.app 里取/发数据的地址。/api/orders。
schema: bản vẽ cái kho: bảng nào, cột nào.the storeroom blueprint: which tables, columns.仓库蓝图:有哪些表、哪些列。
log: nhật ký app tự ghi. Khi hỏng, sự thật ở đây.the app's own diary. When it breaks, truth's here.app 自己的日记。出问题时,真相在这。
package: đồ người khác viết sẵn mình lắp vào. Càng ít càng dễ sống.prebuilt parts you plug in. Fewer = easier life.别人写好、你装上的零件。越少越好活。
container: cái hộp gói cả app + mọi thứ nó cần, chạy giống nhau ở mọi máy. Đó là Docker.a box packing the app + all it needs, running the same everywhere. That's Docker.把 app + 它需要的一切打包的盒子,在哪都一样跑。这就是 Docker。
image: "khuôn" để tạo ra container. Một khuôn, nhiều hộp giống hệt.the "mold" a container is made from. One mold, many identical boxes.造 container 的“模具”。一个模具,多个一模一样的盒子。
port: "cửa" số mà app mở ra để nghe. Hay gặp :3000.the numbered "door" the app listens on. Often :3000.app 监听的编号“门”。常见 :3000。
Không thuộc cũng được. Nhưng khi AI nói "missing env var ANTHROPIC_API_KEY" mà ae hiểu "nó thiếu chìa khoá, dán vào ngăn kéo" thì ae tự gỡ, khỏi chờ.No need to memorize. But when AI says "missing env var ANTHROPIC_API_KEY" and you get "it needs a key, put it in the drawer", you unblock yourself.不用背。但当 AI 说 "missing env var ANTHROPIC_API_KEY",你懂“它缺钥匙,放进抽屉”,就能自己解围。
Ae hỏi, nó trả lời bằng chữ. Chỉ nói, không làm gì cả.You ask, it answers in text. Talks, does nothing.你问,它用文字答。只说,不做。
Nói + làm được một hai việc ae bấm, trong khuôn khổ hẹp.Talks + does one or two things you trigger, in a narrow lane.会说 + 做一两件你触发的事,范围很窄。
Ae giao mục tiêu, nó tự chia bước, tự dùng công cụ (đọc file, chạy lệnh, sửa code), tự kiểm tra rồi lặp lại tới khi xong. Claude Code là một agent.You give a goal; it plans steps, uses tools (read files, run commands, edit code), checks itself and loops until done. Claude Code is an agent.你给目标,它自己拆步骤、用工具(读文件、跑命令、改代码)、自查并循环到完成。Claude Code 就是一个 agent。
Vì sao ae quan tâm: agent là thứ làm được cả một app từ một brief. Nhưng vì nó tự chạy nhiều bước, ae phải nghiệm thu chặt, đó là phần cuối buổi.Why it matters: an agent can build a whole app from one brief. But because it runs many steps on its own, you must review tightly, that's the last part of today.为何重要:agent 能从一个 brief 做出整个 app。但正因它自己跑很多步,你得严格验收,这是今天最后一部分。
Mục tiêu vòng đầu là chạy được, không phải đẹp.The first goal is it runs, not that it's pretty.第一目标是能跑,不是好看。
Deploy ngay khi có màn hình trắng chạy được, để lỗi hosting lộ sớm.Deploy the moment a blank screen runs, so hosting bugs surface early.一有能跑的白屏就部署,让 hosting 的坑早暴露。
20 phút sau AI phá hỏng, ae quay về mốc này mất 10 giây.20 min later AI breaks it; rolling back takes 10 seconds.20 分钟后 AI 弄坏了,回退只要 10 秒。
Gạch chân danh từ ra bốn bảng cho cái kho:Underline the nouns and you get four tables for the storeroom:给名词划线,就得出仓库要的四张表:
Vẫn đúng vòng client → server → database ae vừa học. Chỉ là giờ nó thành một app thật, có link gửi được.Same client → server → database loop you just learned. It's just a real app now, with a link you can share.还是你刚学的 client → server → database 那圈。只是现在成了真 app,有能发的链接。
Ae không cần mô tả kỹ từng chi tiết. Cứ nhắc tới các từ đã học, AI tự dựng phần còn lại. Đây là prompt cho app gọi món ở slide trước:You don't need to spell out every detail. Just name the words you learned; AI fills in the rest. Here's the prompt for that order-at-table app:你不用把每个细节写清楚。点到学过的词,AI 会补全其余。这是上一页那个点餐 app 的 prompt:
Một prompt này chạm tới: web app · client · server · database · endpoint · schema · Docker · deploy · Railway · env var · API key · localhost · port · commit. Đủ để AI dựng bản chạy được đầu tiên.This one prompt touches: web app · client · server · database · endpoint · schema · Docker · deploy · Railway · env var · API key · localhost · port · commit. Enough for AI to build a first working version.这一个 prompt 触及:web app · client · server · database · endpoint · schema · Docker · deploy · Railway · env var · API key · localhost · port · commit。足够让 AI 做出第一个能跑的版本。
Dựng máy, tạo GitHub, hiểu localhost vs Docker, nối Railway, và đẩy trang HTML đầu tiên lên link thật. Xong 6 bước này là ae có sân để build. Set up your machine, create GitHub, get localhost vs Docker, connect Railway, and ship your first HTML page to a live link. Clear these 6 and you have a field to build on. 装好机器、建 GitHub、搞懂 localhost vs Docker、连 Railway、把第一个 HTML 页面发到线上链接。过了这 6 步,你就有场地开做了。
VS Code là một cái editor miễn phí của Microsoft, nơi mở project, xem file, và chạy Claude Code / Cursor ngay bên trong. Ae không gõ code; ae gõ prompt ở đây, AI thấy toàn bộ project và tự sửa nhiều file.VS Code is Microsoft's free editor, where you open the project, see files, and run Claude Code / Cursor right inside. You don't type code; you type prompts here, AI sees the whole project and edits many files.VS Code 是微软的免费编辑器,在这里打开项目、看文件,并直接内置运行 Claude Code / Cursor。你不打代码;你在这打 prompt,AI 看到整个项目、自动改多个文件。
Cursor là một bản VS Code đã gắn sẵn AI. Dùng cái nào cũng được, hôm nay bọn mình đi theo VS Code + Claude Code.Cursor is VS Code with AI baked in. Either works, today we go VS Code + Claude Code.Cursor 是内置了 AI 的 VS Code。用哪个都行,今天我们走 VS Code + Claude Code。
code.visualstudio.com · chọn đúng máy Mac/Windows.pick Mac/Windows.选 Mac/Windows。
Ctrl/⌘ + ` · chỗ ae gõ lệnh, ngay trong cửa sổ.where you type commands, in-window.在窗口里打命令的地方。
Một lệnh dán vào terminal, mình chiếu lên màn hình.One command pasted in the terminal, I'll put it on screen.往终端里贴一条命令,我会投屏。
Gõ claude, đăng nhập bằng tài khoản. Xong.Type claude, sign in. Done.输入 claude,登录。完成。
GitHub là chỗ cất repo (thư mục project) trên mạng, kèm toàn bộ lịch sử commit. Hai lý do ae cần nó hôm nay: (1) mỗi lần chạy được thì lưu một mốc quay lại được; (2) Railway sẽ đọc thẳng từ GitHub, cứ push là tự lên link mới.GitHub stores your repo (project folder) online, with the full commit history. Two reasons you need it today: (1) each working state saved as a rollback point; (2) Railway reads straight from GitHub, every push auto-ships a new link.GitHub 把你的 repo(项目文件夹)存到线上,带完整 commit 历史。今天需要它有两个理由:(1) 每个能跑的状态存成可回退点;(2) Railway 直接从 GitHub 读,每次 push 自动上新链接。
Ae không cần học lệnh git. Bảo Claude Code "tạo repo, commit và push hộ tôi", nó làm.You don't learn git commands. Tell Claude Code "create the repo, commit and push for me", it does it.你不用学 git 命令。让 Claude Code "帮我建 repo、commit 并 push",它就做。
github.com · một email, một username. Miễn phí.an email, a username. Free.一个邮箱、一个用户名。免费。
Bấm link trong mail để mở khoá tạo repo.Click the link in the mail to unlock repos.点邮件里的链接以解锁建 repo。
Để Claude Code tạo, hoặc bấm New → đặt tên → Private.Let Claude Code make it, or click New → name → Private.让 Claude Code 建,或点 New → 命名 → Private。
Public = ai cũng đọc code + key của ae. Buildathon để Private.Public = anyone reads your code + keys. Keep it Private.Public = 谁都能看你的代码 + 密钥。保持 Private。
localhost (thường localhost:3000) là app chạy trong máy ae, nhanh, tiện, nhưng chỉ mình ae mở được, tắt máy là tắt. Live là khi app đã deploy lên một server (Railway) và có một URL công khai ai cũng mở được, kể cả trên điện thoại.localhost (usually localhost:3000) is the app running inside your machine, fast, handy, but only you can open it, and it's off when the machine is off. Live is when the app is deployed to a server (Railway) with a public URL anyone can open, phone included.localhost(常见 localhost:3000)是 app 跑在你机器里,快、方便,但只有你能开,关机就没。Live 是 app 部署到服务器(Railway)、有一个谁都能开的公开 URL,手机也行。
Cạm bẫy kinh điển: chạy ngon ở localhost rồi deploy vỡ: thiếu env var, sai đường dẫn ảnh, DB chưa mở quyền. Vì vậy: deploy sớm.Classic trap: perfect on localhost, broken on deploy: missing env var, wrong image path, DB not opened. So: deploy early.经典坑:localhost 完美,部署就崩:缺 env var、图片路径错、数据库没开权限。所以:早部署。
Vấn đề muôn thuở: "máy tôi chạy được, máy anh thì không", vì hai máy cài đồ khác nhau. Docker gói app + đúng phiên bản mọi thứ nó cần vào một cái hộp (container). Cái hộp đó chạy giống hệt trên máy ae, máy mình, và trên Railway.The eternal bug: "works on my machine, not yours", because the two machines have different stuff installed. Docker packs the app + the exact versions of everything it needs into a box (container). That box runs identically on your machine, mine, and on Railway.永恒的 bug:“我这能跑,你那不行”,因为两台机器装的东西不同。Docker 把 app + 它需要的一切的确切版本 打包进一个盒子(container)。这盒子在你机器、我机器、Railway 上跑得一模一样。
Ae không cần viết Docker bằng tay. Bảo AI "đóng gói app bằng Docker để deploy lên Railway", nó tạo file giùm. Ae chỉ cần hiểu vì sao có nó.You won't write Docker by hand. Tell AI "containerize this with Docker for Railway", it writes the file. You just need to know why it's there.你不用手写 Docker。让 AI "用 Docker 打包好上 Railway",它会写文件。你只要懂它为什么存在。
Railway là chỗ app ae chạy 24/7. Cái hay: nó đọc thẳng repo GitHub của ae, tự nhận diện Docker, và mỗi lần ae push code là nó tự build và deploy lại. Không cần bê file đi đâu.Railway is where your app runs 24/7. The nice part: it reads your GitHub repo directly, detects Docker, and every time you push, it rebuilds and redeploys on its own. No moving files around.Railway 是你 app 24/7 运行的地方。妙处:它直接读你的 GitHub repo、识别 Docker,每次你 push,它就自动重建并重新部署。不用搬文件。
Key/mật khẩu không nằm trong code, dán vào phần Variables của Railway (đây là "env var"). Code đọc từ đó, không ai thấy.Keys/passwords do not live in code, paste them into Railway's Variables (these are "env vars"). Code reads them there, nobody sees them.密钥/密码不放代码里,贴进 Railway 的 Variables(就是 “env var”)。代码从那读,没人看得到。
railway.app · một cú bấm, khỏi tạo mật khẩu mới.one click, no new password.一键,不用新密码。
Chọn đúng repo ae vừa tạo.Pick the repo you just made.选你刚建的 repo。
API key, mật khẩu DB… để đây, không để trong code.API keys, DB passwords… here, not in code.API key、数据库密码……放这,别放代码。
Bấm một cái là có URL công khai. Đó là link của ae.One click gives a public URL. That's your link.点一下就有公开 URL。那就是你的链接。
Trước khi lao vào app phức tạp, mỗi người đẩy một trang HTML "Hello Hà Nội" lên Railway. Mục tiêu không phải nội dung, mà là chạy trọn một vòng deploy để lỡ có trục trặc thì lộ ra ngay, lúc còn dễ sửa.Before diving into a complex app, everyone ships one "Hello Hà Nội" HTML page to Railway. The point isn't the content, it's running one full deploy loop so any snag surfaces now, while it's easy to fix.在扎进复杂 app 之前,每人先把一个 “Hello 河内” 的 HTML 页面推到 Railway。重点不是内容,而是跑完一整个部署循环,让任何小坑现在就暴露、趁好修。
Khi ae mở URL đó trên điện thoại và thấy dòng chữ của mình, ae vừa hiểu trọn quy trình. Phần còn lại của ngày chỉ là lặp lại vòng này với app xịn hơn.When you open that URL on your phone and see your own text, you've grasped the whole pipeline. The rest of the day just repeats this loop with a richer app.当你在手机上打开那个 URL、看到自己写的字,你就吃透了整条流程。剩下的一天只是用更强的 app 重复这个循环。
Một prompt này chạm vào cả 5 thứ ae vừa học: repo, commit, Docker, Railway, live. Đó là lý do bọn mình bắt đầu từ đây.This one prompt touches all 5 things you just learned: repo, commit, Docker, Railway, live. That's why we start here.这一个 prompt 触及你刚学的 5 样:repo、commit、Docker、Railway、上线。所以我们从这开始。
Prompt càng dài, càng nhiều tính năng nhét chung, thì lúc hỏng ae càng không biết hỏng ở đâu. Cắt nhỏ. Mỗi việc chạy được thì commit ngay, đó là nút save game.The longer the prompt and the more features crammed in, the less you know where it broke. Cut small. Each working thing → commit right away, that's the save point.prompt 越长、塞的功能越多,坏了越不知道坏在哪。切小。每个能跑的东西 → 立刻 commit,那就是存档。
Team nào cuối buổi nói "nãy nó chạy được mà giờ hỏng rồi", 100% là team không commit.Any team that says "it worked earlier, broken now", 100% didn't commit.凡是说“刚才还能跑现在坏了”的组,100% 没 commit。
Hết giờ ở bước 4? Ae vẫn có app chạy được để demo. Đó mới là điều quan trọng.Out of time at step 4? You still have a working app to demo. That's what matters.第 4 步就没时间了?你仍有能跑的 app 可演示。这才重要。
Không phải lỗi kỹ thuật. Là lỗi vận hành, người trả giá là ae, không phải AI.Not technical bugs. Operational ones. You pay, not the AI.不是技术 bug。是运营失误,买单的是你,不是 AI。
Trước khi demo, hỏi AI đúng một câu: "Có key hay mật khẩu nào đang nằm trong code không? Liệt kê hết."Before demo, ask AI one line: "Any keys or passwords sitting in the code? List them all."演示前,问 AI 一句:"有没有密钥或密码留在代码里?全列出来。"
Nó tóm tắt trật là ae vừa tiết kiệm 20 phút sửa. Chiêu rẻ nhất, hiệu quả nhất.If the summary's off, you just saved 20 min. Cheapest, most effective.总结跑偏,你就省了 20 分钟。最便宜、最有效。
Chỗ nguy hiểm nhất là chỗ AI đoán thầm rồi làm luôn. Câu này lôi ra ánh sáng.The danger is where AI guesses silently and builds. This drags it into the light.最危险的是 AI 默默猜了就做。这句把它拽到明处。
Kế hoạch nói "sửa 14 file" cho một cái nút thì có gì sai. Duyệt kế hoạch dễ hơn duyệt code."14 files" for one button means something's wrong. Reviewing a plan beats reviewing code.一个按钮要“改 14 个文件”就有问题。审计划比审代码容易。
Claude Code chạy được thật. Bắt nó test rồi báo cáo, thay vì tin lời "đã xong!".Claude Code can actually run things. Make it test and report, don't trust "done!".Claude Code 能真跑。让它测完再汇报,别信“搞定了!”。
Bốn câu này tốn 3 phút. Không xài thì mỗi lần hiểu nhầm tốn 30 phút. Toán này ae tự tính được.These four cost 3 minutes. Skip them and each misread costs 30. Do the math.这四句花 3 分钟。不用,每次误解花 30 分钟。这账你自己会算。
Bốn cái này làm tại chỗ là mất 45 phút của team.Doing these on site burns 45 min.这四样现场做要耗 45 分钟。
Data thật làm bài demo của ae khác hẳn phần còn lại.Real data makes your demo stand out.真实数据让你的 demo 与众不同。
Mười năm qua, thứ ngăn ae tự làm phần mềm là cú pháp. Cái đó vừa hết giá trị. Thứ còn giá trị (hiểu khách, biết chỗ nào đang chảy máu trong shop, biết cái gì đáng làm) thì ae có sẵn, AI không có.For ten years, syntax kept you from building software. That just lost its value. What still has value (knowing your customers, where your shop bleeds, what's worth doing) you already have; AI doesn't.十年来,挡着你自己做软件的是语法。它刚刚失去价值。仍有价值的(懂客户、知道店里哪在流血、什么值得做)你早就有,AI 没有。