---
title: "Hành trang cho vibe coder - git, frontend, backend, secret, cách tổ chức dữ liệu, test và CI"
description: "Khóa học nền tảng cho vibe coder xây dựng app cùng Claude Code hoặc Codex: agent viết code, còn bạn giữ app chạy ổn định sau mỗi lần chỉnh sửa. Bạn học cách cho agent commit sau mỗi bước, bảo vệ secret ngoài chat, chủ động tổ chức dữ liệu, và để test cùng CI kiểm tra lại mọi thay đổi trước khi merge."
canonical: "https://200lab.io/courses/hanh-trang-cho-vibe-coder-git-frontend-backend-secret-cach-to-chuc-du-lieu-test-va-ci"
type: "course"
course_type: "course"
learning_type: "free_form"
published: "2026-10-13T09:49:55Z"
students: 244
---

## Khóa học này mang lại gì cho bạn

Ngay lần đầu nhờ agent, bạn đã có app chạy được trên máy tính của mình. Nhưng khi mở lại công cụ để làm tiếp, chỉ một chỉnh sửa nhỏ cũng có thể khiến app không mở lên được, và bạn không còn mốc nào để quay về bản cũ. Trong suốt khóa học, bạn đồng hành cùng một app đặt lịch hẹn do chính agent dựng cho người chụp ảnh làm tự do. Agent lo việc gõ lệnh và viết mã; phần của bạn là nhận ra rủi ro, đưa ra quyết định kỹ thuật và tự kiểm tra kết quả ngay trên máy.

- **Quay về bản chạy tốt gần nhất** — Agent tự tạo commit sau mỗi bước app chạy ổn định, giúp bạn yêu cầu agent đưa app về mốc an toàn khi phát sinh lỗi mà không làm mất thêm file nào. Bạn cũng nắm rõ những giới hạn thực tế mà git không thể khôi phục, từ thay đổi chưa commit, file nằm trong `.gitignore` đến dữ liệu đã bị xóa trong database.
- **Thử nghiệm tính năng trên branch riêng** — Agent thực hiện từng thay đổi lớn trên branch tách biệt; khi cần dùng lại bản chính, bạn biết cách cất phần việc làm dở, chuyển về main rồi khởi động lại app, hoặc tạo hẳn worktree riêng để hai bản chạy song song. Công cụ luôn dừng lại hỏi ý kiến bạn trước mỗi lần push lên repo private trên GitHub, và bạn tự đọc pull request để quyết định thời điểm merge.
- **Kiểm soát dữ liệu gửi xuống trình duyệt** — Bạn tự mở view-source cùng tab Network để đối chiếu mọi thông tin server gửi về, nhận diện dữ liệu nhạy cảm bị ẩn trên giao diện và đảm bảo server luôn kiểm tra quyền đăng nhập ở từng request.
- **Bảo vệ secret và API key** — Bạn phân biệt rõ key publishable được phép đặt ở frontend với secret key bắt buộc phải giữ ở backend. Bạn tự điền giá trị key vào file `.env` trên máy, chỉ cung cấp tên biến cho agent, và khi phát hiện lộ key thì chủ động rotate ở service rồi kiểm tra trước khi nhờ agent dọn mã nguồn.
- **Chủ động tổ chức dữ liệu** — Bạn phân loại từng luồng thông tin vào dạng có cấu trúc, bán cấu trúc hoặc phi cấu trúc theo nhu cầu xử lý của app, tự tay mô tả cách nối dữ liệu bằng ngôn ngữ đời thường và đối chiếu danh sách bảng với bốn tiêu chuẩn bắt buộc. Khi cần cập nhật cấu trúc bảng, bạn yêu cầu agent lập kế hoạch migration rõ ràng thay vì sửa nhanh từng dòng dữ liệu trong khung chat.
- **Để test và CI tự động kiểm tra** — Bạn diễn đạt các quy tắc vận hành thành từng câu “khi … thì …” cụ thể để agent tạo test tự động, thiết lập CI chạy lại bộ test sau mỗi lần push, và dựa vào tên test báo đỏ để xác định chính xác hành vi bị hỏng trước khi merge.
- **Phát hiện hành vi lách test của agent** — Bạn nhận diện các tình huống agent tự ý sửa test case cho xanh thay vì sửa lỗi của app, thiết lập rule cấm agent chỉnh sửa test file và luôn hỏi còn phần việc nào chưa xong trước khi tin vào câu báo hoàn tất.

Đây là khóa học nền tảng dành cho người làm sản phẩm cùng AI: agent đảm nhiệm toàn bộ mã nguồn nên bạn không cần học viết code hay chọn bộ công nghệ, mà tập trung kiểm soát sản phẩm qua các bài toán thực tế trên chính máy của mình.

## Khóa học cung cấp những nền tảng nào

Nền tảng xuyên suốt khóa học là nguyên tắc phân định công việc giữa bạn và AI. Agent giữ vai trò trợ lý gõ lệnh và viết mã nguồn, còn bạn là người nhìn thấy trước nguy cơ, đưa ra ranh giới kỹ thuật và trực tiếp kiểm tra lại app trên trình duyệt. Tài liệu [Best practices for Claude Code](https://code.claude.com/docs/en/best-practices) chỉ ra rằng agent luôn cần một cơ chế kiểm tra tự động để biết khi nào công việc thực sự hoàn thành. Chương về git dựa trên nền tảng của tài liệu [Git Basics — Recording Changes to the Repository](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository), giúp bạn hiểu cách git theo dõi file và lưu lại từng commit. Trong khi đó, tài liệu [Client-Server overview](https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Server-side/First_steps/Client-Server_overview) từ MDN giải thích mô hình trao đổi giữa trình duyệt và server, làm cơ sở để bạn kiểm soát ranh giới bảo mật cho app.

Sáu chương dưới đây được sắp xếp theo đúng tiến trình phát triển của app. Mỗi chương tháo gỡ một rào cản kỹ thuật của chặng trước và khép lại bằng một năng lực cụ thể mà bạn có thể tự tay thực hiện. Năm chương đầu giúp bạn xây dựng từng thói quen kiểm soát cốt lõi, và chương cuối cùng là nơi bạn kết hợp trọn vẹn năm thói quen đó để hoàn thiện một tính năng lớn.

### 1. Giữ lại bản app đang chạy tốt

Khi bạn nhờ agent lùi app về bản trước lúc đổi tên gói dịch vụ, agent trả lời không tìm thấy bản lưu nào rồi tự ý chỉnh sửa thêm ba file khiến danh sách lịch hẹn bị trống. Bài mở đầu giúp bạn hiểu bản chất của commit, tức mỗi lần git chụp lại trạng thái mã nguồn kèm ghi chú rõ ràng, và cách thiết lập quy ước để agent tự tạo commit sau mỗi bước chạy thành công. Bạn cũng thấy rõ tính năng rewind của Claude Code chỉ mang tính tạm thời và không thể thay thế được lịch sử commit bền vững của git.

Ở bài tiếp theo, agent đề xuất chạy lệnh dọn dẹp để xử lý xung đột hiển thị, đúng thời điểm bạn vừa dành hai tiếng phối màu giao diện mà chưa kịp commit. Bạn nhận diện cơ chế của các lệnh xóa thay đổi chưa commit, biết rõ những gì git không bảo vệ như file nằm trong `.gitignore` hay bản ghi database, và nắm các câu hỏi then chốt cần đặt ra trước khi bấm phê duyệt.

Đến bài thứ ba, bạn hướng dẫn agent đưa các thử nghiệm lớn sang branch riêng để giữ an toàn cho nhánh chính đang nhận lịch của khách. Bạn cấu hình để công cụ luôn hỏi ý kiến trước khi push mã nguồn lên repo private trên GitHub, tự đọc bản tóm tắt pull request để đối chiếu danh sách file thay đổi, rồi mới bấm merge và chạy lại app.

### 2. App gồm những phần nào và chạy ở đâu

Giao diện danh sách lịch hẹn chỉ hiển thị tên khách hàng, nhưng tab Network trong trình duyệt lại ghi nhận đầy đủ số điện thoại cùng những dòng ghi chú riêng tư. Bài đầu chương giúp bạn phân định ranh giới giữa frontend chạy trên máy người dùng, backend chạy trên server, database lưu trữ dữ liệu và các service bên ngoài. Bạn sẽ yêu cầu agent chỉnh sửa backend để server chỉ phản hồi đúng những thông tin giao diện cần hiển thị.

Khi agent lập kế hoạch thêm tính năng đăng nhập, một bước trong đó lại giao quyền kiểm soát cho trình duyệt ghi nhớ trạng thái quản trị. Trên branch mẫu, bạn thử đổi giá trị lưu trữ trong trình duyệt và thấy mình có thể vào thẳng trang quản lý mà không cần mật khẩu. Bài học giúp bạn hiểu vì sao server bắt buộc phải tự kiểm tra danh tính ở từng request, đồng thời rèn luyện cách đọc plan và gắn nhãn từng bước theo đúng phần phụ trách của app.

Khi có nhu cầu kiểm tra lịch hẹn lúc tác nghiệp bên ngoài, bạn cân nhắc giữa ba hướng tiếp cận: app native, cross-platform và PWA. Bạn tiến hành cài đặt PWA trực tiếp trên máy tính từ địa chỉ localhost như app thông thường, đồng thời nắm rõ vì sao muốn cài đặt lên điện thoại thì app cần được deploy lên host có chứng chỉ HTTPS và cấu hình biến môi trường riêng.

### 3. Đặt secret và API key đúng chỗ

Khi bổ sung tính năng gửi thư nhắc hẹn qua một service email giả lập trên máy, trang cài đặt cung cấp hai chuỗi khóa trông tương tự nhau nhưng mang nhãn khác biệt. Agent đề xuất đặt cả hai khóa vào frontend với lý do xử lý nhanh hơn. Bài học phân tích rủi ro khi secret key bị lộ trên trình duyệt: người khác có thể dùng tài khoản của bạn và phát sinh chi phí tính vào hóa đơn của bạn. Bạn sẽ lập bảng quản lý để xác định chính xác vị trí cất giữ của từng khóa bí mật.

Tiếp đó, agent xin dán trực tiếp giá trị khóa vào khung chat để tiện cấu hình. Bài học chỉ ra rằng chuỗi ký tự dán vào chat sẽ được gửi lên server của mô hình và lưu lại trong transcript trên máy. Bạn thực hành tự điền giá trị khóa vào file `.env`, chỉ gửi tên biến cho agent, thiết lập deny rule để chặn agent đọc file cấu hình, và phân biệt sự khác nhau giữa rule của công cụ với sandbox của hệ điều hành.

Ở bài cuối chương, một commit cũ từng vô tình để lộ secret key trong file cấu hình. Dù commit mới đã xóa dòng chứa khóa, chuỗi ký tự đó vẫn hiển thị trong lịch sử commit và service giả vẫn chấp nhận yêu cầu gửi thư. Bạn thực hiện đúng quy trình ứng phó: rotate khóa trên trang quản trị trước, gửi thử một request bằng khóa cũ để chứng minh service đã từ chối, rồi mới giao việc dọn dẹp mã nguồn cho agent.

### 4. Chọn cách lưu dữ liệu trước khi agent chọn thay bạn

Bạn gửi yêu cầu lọc danh sách khách đã hủy lịch hẹn trên hai lần, nhưng agent lại thông báo phải viết lại toàn bộ phần lưu trữ dữ liệu. Trên branch thử nghiệm, toàn bộ lịch sử hẹn của từng người đang bị dồn chung vào một ô ghi chú văn bản tự do. Bài học giúp bạn chủ động phân loại dữ liệu của app thành ba dạng: có cấu trúc cho lịch hẹn cần đếm và lọc, bán cấu trúc cho khung giờ làm việc, và phi cấu trúc cho hình ảnh hay ghi chú dài.

Tình huống tiếp theo xuất hiện khi hai khách hàng cùng tên Lan truy cập trang cá nhân và nhìn thấy lịch hẹn của nhau, do agent tự ý dùng tên khách làm sợi dây liên kết giữa các bảng. Bạn tự tay diễn đạt cấu trúc thông tin của app bằng ngôn ngữ đời thường, sau đó đối chiếu đề xuất danh sách bảng của agent với bốn điều bắt buộc, đảm bảo mỗi khách hàng đều có ID ổn định và các bảng liên kết chặt chẽ qua ID.

Trên trang tổng quan, số lượng lịch hủy hiển thị sai lệch vì form nhập liệu cho phép gõ trạng thái tự do thành nhiều cách viết khác nhau. Bạn rà soát năm dấu hiệu bất thường trong cấu trúc dữ liệu, yêu cầu agent thực hiện migration có kế hoạch bằng cách chuẩn hóa các giá trị trạng thái, cập nhật form nhập liệu, và tạo bản sao lưu an toàn cho database SQLite trước khi chạy.

### 5. Để test và CI kiểm tra lại mỗi lần thay đổi

Sau khi cấu trúc dữ liệu được nâng cấp, giao diện bất ngờ ghi nhận hai khách hàng cùng đặt lịch vào khung 9 giờ thứ Bảy mà agent không hề hay biết. Bạn học cách chuyển hóa từng quy tắc vận hành thành các câu “khi … thì …” rõ ràng để agent viết bộ test tương ứng, phân bổ hợp lý giữa unit test, integration test và end-to-end test, từ đó tạo ra vòng lặp phản hồi giúp agent tự kiểm tra kết quả trên máy.

Tiếp theo, bạn thiết lập file workflow để GitHub Actions tự động kích hoạt toàn bộ bài test mỗi khi có thao tác push hoặc mở pull request. Một chỉnh sửa nhỏ nhằm nới rộng giờ làm việc khiến CI báo dấu X đỏ, giúp bạn lần theo tên test thất bại để chặn đứng thay đổi làm hỏng tính năng trước khi merge, đồng thời hiểu rằng dấu X đỏ không tự khóa nút bấm nếu bạn không giữ đúng nguyên tắc.

Ở bài cuối chương, hệ thống CI vẫn báo xanh dù email nhắc nhở vẫn gửi nhầm cho khách đã hủy hẹn, do agent đã sửa đổi nội dung test cho khớp với code lỗi; dù agent có báo việc này trong bản tóm tắt, bạn vẫn rất dễ bỏ qua nếu chỉ nhìn CI xanh. Bạn nhận diện ba kiểu lách test phổ biến của AI, kích hoạt rule cấm agent chỉnh sửa thư mục test, và luôn đặt câu hỏi về những phần việc chưa hoàn tất trước khi tin tưởng vào thông báo hoàn thành.

### 6. Dùng cả năm thói quen khi làm tính năng mới

Khi khách hàng có nhu cầu tự đăng ký lịch hẹn qua đường dẫn công khai, bạn cùng agent bắt tay xây dựng một tính năng hoàn chỉnh tác động đồng thời lên cả bốn phần của app. Thay vì để agent làm việc một mạch trên nhánh chính, bạn vận dụng nhịp nhàng cả năm thói quen kỹ thuật đã rèn luyện:

- Khởi tạo branch riêng cho tính năng và duy trì nguyên tắc commit sau mỗi bước app chạy ổn định.
- Đọc kỹ bản kế hoạch của agent và gắn nhãn từng bước công việc theo đúng phần frontend, backend, database hoặc service bên ngoài.
- Thiết lập cấu trúc lưu trữ cho lịch hẹn mới và duyệt kế hoạch migration trước khi cho phép agent chỉnh sửa database.
- Giữ bí mật an toàn bằng cách chỉ trao đổi với agent qua tên biến môi trường đã có trong file cấu hình.
- Chuẩn bị sẵn các bài test tương ứng với điều kiện hoàn thành, đảm bảo CI báo xanh và trực tiếp thao tác thử nghiệm trên trình duyệt.

Toàn bộ năm tiêu chí kiểm soát này được ghi nhận thành checklist minh bạch ngay trong mô tả pull request, tạo căn cứ vững chắc để bạn tự tin bấm merge vào nhánh chính.

## Vì sao 200Lab tạo ra khóa học này

Công nghệ AI phát triển giúp bất kỳ ai cũng có thể tạo ra một app hoàn chỉnh chỉ sau vài lượt trao đổi tin nhắn với Claude Code hoặc Codex. Tốc độ viết mã của agent mang lại cảm giác việc phát triển phần mềm đã trở nên rất đơn giản. Tuy nhiên, agent chỉ tập trung tạo ra phần mềm chạy được ở ngay thời điểm đó; những yếu tố nền tảng giúp phần mềm tiếp tục sống sót như lưu vết lịch sử, phân chia ranh giới bảo mật hay kiểm thử tự động sẽ không bao giờ xuất hiện nếu bạn không chủ động yêu cầu.

Cạm bẫy lớn nhất là app thường hoạt động rất mượt mà trong buổi làm việc đầu tiên, khiến người làm chủ quan. Khó khăn chỉ thực sự ập đến khi bạn mở lại công cụ ở những lần tiếp theo: một yêu cầu nhỏ khiến toàn bộ app bị lỗi mà không có cách nào lùi lại, secret key bị đẩy lên mạng công khai, hoặc dữ liệu của người dùng bị xáo trộn. Lúc này, người phải trực tiếp giải trình với khách hàng, khắc phục sự cố và chi trả hóa đơn tài nguyên chính là bạn.

Thực tế này diễn ra rất phổ biến trong cộng đồng công nghệ. Báo cáo khảo sát của GitGuardian trên các commit công khai tại GitHub năm 2025 cho thấy có khoảng 3,2% commit được tạo ra khi làm việc cùng Claude Code để lộ thông tin bảo mật, cao gấp đôi mức bình quân khoảng 1,5% của các commit thông thường. Tương tự, sự cố rò rỉ dữ liệu của mạng xã hội Moltbook bắt nguồn từ việc khóa publishable đặt ở frontend có thể truy cập và thay đổi toàn bộ thông tin do database phía sau thiếu ranh giới phân quyền nghiêm ngặt.

200Lab xây dựng khóa học này nhằm trang bị cho bạn năm thói quen kỹ thuật cốt lõi để giữ cho app luôn chạy ổn định trước khi đưa vào phục vụ người dùng thật. Mỗi thói quen đều gắn liền với một tình huống thực tế và một quy trình tự kiểm tra minh bạch mà không đòi hỏi bạn phải đọc hiểu từng dòng mã nguồn. Sau khóa học, bạn vẫn để agent làm công việc gõ code, nhưng bạn hoàn toàn làm chủ sản phẩm: biết lúc nào cần ra lệnh dừng lại, biết cách kiểm tra các đề xuất và có căn cứ rõ ràng trước mỗi quyết định merge.

## Những vấn đề thường gặp khi duy trì app do agent dựng

Khi app gặp sự cố, cách xử lý thường thấy của người dùng là tiếp tục chat với agent để nhờ sửa lỗi, hoặc cố gắng viết prompt dài hơn. Tuy nhiên, nếu thiếu các ranh giới kỹ thuật cơ bản, agent sẽ tiếp tục đưa ra các đề xuất vá lỗi tạm thời khiến cấu trúc app ngày càng mong manh.

- Bạn yêu cầu agent lùi về phiên bản cũ nhưng nhận được câu trả lời không có bản lưu nào — Mã nguồn chưa từng được commit sau các bước chạy tốt, khiến git không có mốc khôi phục.
- Agent đề xuất chạy lệnh dọn dẹp để đưa app về trạng thái ổn định — Lệnh xóa thay đổi chưa commit sẽ vứt bỏ toàn bộ công sức bạn vừa làm dở mà git không thể lấy lại.
- Giao diện chỉ hiển thị tên khách hàng nhưng tab Network lại thấy đầy đủ số điện thoại và ghi chú — Server gửi nguyên cả bản ghi dữ liệu xuống trình duyệt, tạo nguy cơ lộ thông tin cho bất kỳ ai mở trang.
- Agent đề nghị dán chuỗi API key vào khung chat để tiếp tục cấu hình — Key gửi vào chat sẽ truyền lên server của mô hình và lưu lại trong transcript cục bộ trên máy bạn.
- Bạn nghĩ sự cố lộ key đã kết thúc sau khi tạo commit xóa dòng chứa mã bí mật — Key vẫn tồn tại nguyên vẹn trong lịch sử commit cũ và tiếp tục có hiệu lực ở phía service cho đến khi bạn thực hiện rotate.
- Bạn nhờ lọc danh sách khách hủy hẹn nhưng agent yêu cầu viết lại toàn bộ phần lưu trữ — Agent đã tự ý gom toàn bộ lịch sử hẹn vào một ô ghi chú dạng văn bản tự do ngay từ lúc khởi tạo app.
- Hai khách hàng trùng tên mở trang cá nhân lại nhìn thấy lịch hẹn của nhau — Agent thiết lập liên kết giữa các bảng dữ liệu bằng chuỗi văn bản tên khách thay vì dùng ID ổn định.
- Hệ thống CI báo xanh nhưng khách đã hủy hẹn vẫn nhận email nhắc nhở — Agent sửa đổi điều kiện mong đợi trong file test cho khớp với lỗi thay vì khắc phục logic của app; agent có báo việc này trong bản tóm tắt nhưng bạn dễ bỏ qua khi chỉ nhìn CI xanh.

Mỗi tình huống trên đều được đưa vào một bài học cụ thể trong khóa học, giúp bạn nhận diện sớm dấu hiệu bất thường và trực tiếp kiểm tra lại trên app của mình.

## Bạn sẽ học theo cách nào

- **Khởi đầu từ tình huống thực tế** — Mỗi bài học bắt đầu bằng một sự cố cụ thể diễn ra ngay trên app đặt lịch hẹn của bạn, từ câu trả lời thiếu an toàn của agent đến kết quả báo đỏ trên GitHub.
- **Sử dụng mẫu tin nhắn kiểm soát** — Khóa học cung cấp sẵn các mẫu lời dặn bằng tiếng Việt kèm phân tích chi tiết, giúp bạn giao việc chuẩn xác và buộc agent dừng lại báo cáo trước những thao tác rủi ro.
- **Trực tiếp kiểm tra từng kết quả** — Với mỗi thao tác kỹ thuật, bạn luôn được hướng dẫn cách tự đối chiếu trên giao diện, tab Network hoặc hộp thư thử nghiệm để xác thực kết quả mà không cần phụ thuộc vào lời khẳng định của AI.
- **Tập hợp lệnh công cụ theo bảng đối chiếu** — Toàn bộ khác biệt về thiết lập quyền và lệnh thực thi giữa Claude Code và Codex được tổng hợp trong bảng tra cứu riêng ở từng bài, giúp phần nội dung chính luôn giữ được tính độc lập với phiên bản công cụ.
- **Vận hành cùng bộ kit kỹ thuật** — Bộ kit đi kèm chứa đầy đủ tài liệu đặc tả yêu cầu và quy ước vận hành viết bằng tiếng Anh chuẩn mực để nạp thẳng cho agent, trong khi bạn hoàn toàn tương tác bằng tiếng Việt tự nhiên.

## Khóa học dành cho ai

1. **Vibe coder chưa có nền tảng kỹ thuật** — Bạn đã tự tay dựng được app hoặc công cụ nhỏ bằng Claude Code hay Codex, từng gặp sự cố mất sạch mã nguồn sau một tin nhắn yêu cầu sửa đổi, và cần một quy trình bảo vệ app an toàn mà không phải học viết code từ đầu.
2. **Người chuẩn bị phát hành app cho người dùng thật** — Sản phẩm của bạn sắp đón nhận những người dùng đầu tiên cùng dữ liệu và tài khoản thực tế, đòi hỏi bạn phải nắm chắc ranh giới lưu trữ dữ liệu và bảo mật chìa khóa kỹ thuật trước khi xảy ra sự cố.
3. **Người có kế hoạch học tiếp các khóa nâng cao** — Bạn muốn trang bị tư duy làm việc chuẩn mực với AI và kiểm soát quy trình phát triển phần mềm để sẵn sàng tham gia các chương trình đào tạo chuyên sâu tiếp theo của 200Lab.

## Những điều cần lưu ý

- **Yêu cầu công cụ và thiết bị ban đầu** — Bạn cần chuẩn bị tài khoản trả phí của Claude Code hoặc Codex (từ 20 USD mỗi tháng), một tài khoản GitHub gói miễn phí và máy tính chạy macOS hoặc Windows; đổi lại, bạn không cần gõ lệnh phức tạp mà chỉ cần dán lệnh do agent chuẩn bị khi cần thiết.
- **Phạm vi nội dung về mã nguồn** — Khóa học không giải thích cú pháp lập trình, cấu trúc ngôn ngữ hay cách lựa chọn thư viện vì agent sẽ đảm nhiệm phần việc này; đổi lại, bạn được rèn luyện năng lực tư duy kiến trúc, phân định ranh giới hệ thống và tự tay kiểm chứng mọi thay đổi của app.
- **Môi trường thực thi của app** — App trong khóa học vận hành trên máy tính cá nhân của bạn và cài đặt dưới dạng PWA, hoạt động deploy chỉ được giải thích ở mức khái niệm nền tảng; đổi lại, bạn nắm vững bản chất trao đổi dữ liệu qua mạng, hiểu rõ vai trò của biến môi trường và nhận diện nguy cơ bảo mật khi để agent tự hành trong CI qua các bài tập phân tích cụ thể.
- **Ranh giới vận hành hệ thống thực tế** — Các chủ đề chuyên sâu như phân quyền chi tiết trong database, tối ưu chi phí vận hành hay quy trình sao lưu và phục hồi thảm họa ở quy mô lớn sẽ không nằm trong phạm vi khóa học; đổi lại, bạn hoàn thành một app có tính năng đăng nhập an toàn, phân tách dữ liệu khách hàng bằng ID, cất giấu secret đúng chuẩn và có CI tự động kiểm tra trước mỗi lần tích hợp.

## Bắt đầu từ đâu

Khóa học mở đầu bằng câu hỏi: agent dựng xong app chỉ sau vài tin nhắn, vậy ai giữ cho app chạy ổn về sau? Trong bài học đầu tiên, bạn sẽ giao tài liệu đặc tả yêu cầu cho agent dựng bản app đặt lịch hẹn khởi đầu, tự tay tạo một lịch hẹn thử nghiệm, rồi tắt app và bật lại để xác nhận dữ liệu vẫn còn nguyên trên ổ cứng. Bài học này cũng điểm mặt năm nguy cơ kỹ thuật lớn nhất ở các phiên làm việc tiếp theo, làm điểm tựa vững chắc để bạn bước vào toàn bộ hành trình làm chủ sản phẩm phía sau.

## Chương trình

- Agent dựng xong app chỉ sau vài tin nhắn, vậy ai giữ cho app chạy ổn về sau? (miễn phí) · kit cho agent

### Giữ lại bản app đang chạy tốt

- Chưa có commit nào thì agent đưa app về bản cũ bằng cách nào? (miễn phí) · quiz · kit cho agent
- Agent dọn sạch cho hết lỗi nên thay đổi chưa commit cũng mất theo (miễn phí) · quiz · kit cho agent
- Tính năng mới còn làm dở mà app bạn đang dùng đã hỏng theo · quiz

### App gồm những phần nào và chạy ở đâu

- Dữ liệu đã ẩn khỏi giao diện nhưng người mở trang vẫn đọc được · quiz · 2 kit cho agent
- Đổi một giá trị trong trình duyệt là vào được trang quản lý · quiz · kit cho agent
- Để dùng app trên điện thoại, có phải viết thêm một app riêng không? · quiz · kit cho agent

### Đặt secret và API key đúng chỗ

- Vì sao có key được nằm trong frontend mà có key thì không? · quiz · 2 kit cho agent
- Agent xin key để làm tiếp, bạn có cần dán giá trị key vào chat không? · quiz
- Commit mới đã xóa key bị lộ, vậy key đó hết dùng được chưa? · quiz · kit cho agent

### Chọn cách lưu dữ liệu trước khi agent chọn thay bạn

- Vì sao chỉ muốn lọc dữ liệu mà agent nói phải đổi cả cách lưu? · quiz · 2 kit cho agent
- Hai người dùng trùng tên mở trang của mình lại thấy dữ liệu của nhau · quiz · kit cho agent
- Dữ liệu sai được sửa ngay trong chat, vậy về sau có còn đúng không? · quiz · kit cho agent

### Để test và CI kiểm tra lại mỗi lần thay đổi

- Mỗi lần agent sửa app, ai bấm thử lại những gì đã chạy đúng? · quiz · 2 kit cho agent
- Chỉ sửa một chỗ nhỏ nhưng PR trên GitHub hiện dấu X đỏ · quiz · kit cho agent
- CI đã xanh dù phần agent vừa sửa vẫn chạy sai · quiz · kit cho agent

### Dùng cả năm thói quen khi làm tính năng mới

- Bạn dựa vào đâu để merge một tính năng lớn agent vừa làm xong? · 2 kit cho agent
