🧋 Học lập trình Full-stack qua dự án Yotea
🧋 Học lập trình Full-stack qua dự án Yotea
Giáo trình 36 bài, đi từ con số 0 đến làm chủ toàn bộ website bán trà sữa Yotea — từ dòng
app.use()đầu tiên cho tới lúc tự tay thêm một chức năng hoàn chỉnh và deploy.
👋 Giáo trình này dành cho ai?
| Bạn là… | Nên đọc |
|---|---|
| Mới học lập trình, chưa từng làm web | Bắt đầu từ Bài 01, làm tuần tự, không bỏ bài nào |
| Đã biết HTML/CSS/JS cơ bản | Đọc lướt Phần 0, làm kỹ từ Bài 04 |
| Đã biết Node.js, muốn học React | Đọc lướt Phần 1–2, làm kỹ từ Bài 14 |
| Đã biết React, muốn học backend | Làm Phần 1–2 (Bài 04–13), rồi nhảy sang Phần 5 |
| Cần hiểu nhanh dự án để bảo trì | Đọc Bài 01, Bài 06, Bài 14, rồi tra bài nghiệp vụ cần thiết |
Yêu cầu tối thiểu: biết dùng máy tính, biết mở terminal, biết HTML/CSS cơ bản. Mọi thứ còn lại giáo trình sẽ dạy.
🏗️ Dự án Yotea là gì?
Một website bán trà sữa hoàn chỉnh gồm 2 phần chạy song song:
┌─────────────────────────┐ HTTP/JSON ┌──────────────────────────┐ ┌────────────┐
│ yotea-fe │ ───────────────────▶ │ yotea-be │ ───▶ │ MongoDB │
│ React 18 + Redux │ │ Express + Mongoose │ │ yotea │
│ http://localhost:3000 │ ◀─────────────────── │ http://localhost:8080 │ ◀─── │ :27017 │
└─────────────────────────┘ └──────────────────────────┘ └────────────┘
Người dùng nhìn thấy Xử lý nghiệp vụ + bảo mật Lưu dữ liệu
Phía khách hàng: xem thực đơn, lọc/tìm kiếm sản phẩm, xem chi tiết, chọn mức đá – mức đường, thêm giỏ hàng, đặt hàng, bình luận, đánh giá sao, yêu thích sản phẩm, đọc tin tức, xem hệ thống cửa hàng, gửi liên hệ, quản lý tài khoản và lịch sử đơn hàng.
Phía quản trị: dashboard, CRUD sản phẩm – danh mục – tin tức – slider – tài khoản, duyệt đơn hàng, kiểm duyệt bình luận, xử lý liên hệ.
🗺️ Lộ trình 36 bài
Phần 0 · Khởi động
Hiểu bức tranh tổng thể và dựng được môi trường chạy dự án.
| # | Bài học | Bạn sẽ làm được gì |
|---|---|---|
| 01 | Tổng quan dự án Yotea & kiến trúc full-stack | Vẽ được sơ đồ dự án, biết file nào nằm ở đâu |
| 02 | Cài đặt môi trường và chạy dự án lần đầu | Chạy được cả FE lẫn BE trên máy mình |
| 03 | Kiến thức nền: ES6, async/await, HTTP/REST, MongoDB | Đọc hiểu cú pháp xuất hiện khắp dự án |
Phần 1 · Backend cơ bản
Xây được một API CRUD hoàn chỉnh bằng Express + Mongoose.
| # | Bài học | Bạn sẽ làm được gì |
|---|---|---|
| 04 | Mổ xẻ app.js: Express, middleware, CORS, morgan |
Hiểu server khởi động ra sao |
| 05 | Mongoose Model: Schema, kiểu dữ liệu, timestamps, index | Tự thiết kế được một model mới |
| 06 | Vòng đời một request: Router → Controller → Model | Lần theo được đường đi của mọi request |
| 07 | CRUD trọn vẹn với Category + test bằng Postman | Viết đủ 5 API và tự test |
| 08 | Slug thân thiện SEO với slugify | Sinh URL đẹp từ tên tiếng Việt |
Phần 2 · Backend nâng cao
Những kỹ thuật khiến API trở nên "thật": lọc dữ liệu, quan hệ, bảo mật, tài liệu.
| # | Bài học | Bạn sẽ làm được gì |
|---|---|---|
| 09 | Bộ lọc kiểu json-server: _sort, _limit, _expand, _like, q |
Hiểu và mở rộng bộ lọc dùng chung |
| 10 | Quan hệ dữ liệu & populate |
Nối Product ↔ Category, Order ↔ OrderDetail |
| 11 | Mã hoá mật khẩu và xác thực bằng JWT | Tự làm chức năng đăng ký / đăng nhập |
| 12 | Phân quyền: requireSignin, isAuth, isAdmin |
Chặn API chỉ cho admin |
| 13 | Viết tài liệu API tự động với Swagger | Bật được trang /api-docs |
Phần 3 · Frontend cơ bản
Hiểu bộ khung React của dự án và cách nó nói chuyện với backend.
| # | Bài học | Bạn sẽ làm được gì |
|---|---|---|
| 14 | Cấu trúc dự án React & luồng khởi động | Biết code chạy từ đâu tới đâu |
| 15 | React Router v6: createBrowserRouter, layout lồng nhau |
Thêm một trang mới vào web |
| 16 | Layout và component tái sử dụng | Tách UI thành component gọn gàng |
| 17 | Tailwind CSS trong dự án | Đọc và sửa được giao diện |
| 18 | Tầng gọi API với axios | Viết hàm gọi API đúng chuẩn dự án |
Phần 4 · Quản lý state
Redux — nơi dữ liệu dùng chung của toàn ứng dụng sinh sống.
| # | Bài học | Bạn sẽ làm được gì |
|---|---|---|
| 19 | Redux Toolkit: slice, action, reducer, selector | Tự tạo một slice mới |
| 20 | createAsyncThunk và extraReducers |
Gọi API bất đồng bộ qua Redux |
| 21 | redux-persist: giữ giỏ hàng và phiên đăng nhập | F5 không mất giỏ hàng |
| 22 | RTK Query: createApi, cache và invalidatesTags |
Thay 50 dòng thunk bằng 1 hook |
Phần 5 · Từng chức năng, từ đầu đến cuối
Mỗi bài đi trọn một chức năng: giao diện → Redux → API → controller → database.
| # | Bài học | Bạn sẽ làm được gì |
|---|---|---|
| 23 | Đăng ký / Đăng nhập / Đăng xuất | Nối trọn luồng xác thực FE ↔ BE |
| 24 | PrivateRouter — chặn route theo quyền |
Khách vãng lai không vào được /admin |
| 25 | Danh sách sản phẩm: lọc, sắp xếp, phân trang, tìm kiếm | Làm trang thực đơn hoàn chỉnh |
| 26 | Chi tiết sản phẩm: lượt xem, đá/đường, sản phẩm liên quan | Trang chi tiết đầy đủ tính năng |
| 27 | Giỏ hàng | Thêm / sửa / xoá / tính tiền |
| 28 | Thanh toán: Order + OrderDetail, react-hook-form + yup | Đặt hàng thành công và lưu DB |
| 29 | Tài khoản của tôi: sửa thông tin, đổi mật khẩu, lịch sử đơn | Khu vực cá nhân của khách |
| 30 | Bình luận, đánh giá sao và yêu thích sản phẩm | 3 chức năng tương tác |
| 31 | Tin tức, liên hệ, cửa hàng và slider trang chủ | Các trang nội dung |
| 32 | Trang quản trị: CRUD, phân trang, upload ảnh Cloudinary | Toàn bộ khu vực admin |
Phần 6 · Nâng cao & hoàn thiện
Từ "chạy được" lên "làm nghề được".
| # | Bài học | Bạn sẽ làm được gì |
|---|---|---|
| 33 | Rà soát bảo mật: dự án đang sai ở đâu | Nhìn ra lỗ hổng và biết cách vá |
| 34 | Refactor: .env, configureStore, xử lý lỗi tập trung |
Nâng cấp code lên chuẩn hiện đại |
| 35 | 🎓 Đồ án cuối khoá: làm chức năng Voucher end-to-end | Tự làm 1 chức năng từ số 0 |
| 36 | Build và deploy lên môi trường thật | Đưa web lên internet |
📐 Mỗi bài học có gì?
🎯 Sau bài này bạn sẽ → mục tiêu rõ ràng, đo được
📋 Cần chuẩn bị → kiến thức/công cụ tiên quyết
1. Lý thuyết → giải thích bằng ví dụ đời thường trước
2. Soi code thật → trích nguyên văn code dự án, kèm đường dẫn:số dòng
3. 🛠️ Tự tay làm → từng bước gõ code, có file mới để bạn tự viết
4. ✅ Kiểm chứng → chạy thế nào, phải thấy kết quả gì
5. 🐞 Lỗi thường gặp → bảng lỗi ↔ nguyên nhân ↔ cách sửa
6. 📝 Bài tập → có lời giải gấp lại, đừng mở vội
📌 Tóm tắt → chốt kiến thức trong 5 gạch đầu dòng
🚀 Bắt đầu ngay
Chưa cài gì cả? Nhảy thẳng vào Bài 02 — Cài đặt môi trường để có dự án chạy được trên máy trong ~20 phút, rồi quay lại Bài 01 để hiểu mình vừa chạy cái gì.
Muốn hiểu trước rồi mới làm? Bắt đầu từ Bài 01 — Tổng quan dự án Yotea.
💡 Lời khuyên để học hiệu quả
- Gõ lại, đừng copy-paste. Ngón tay nhớ lâu hơn con mắt.
- Làm hết phần "Tự tay làm" trước khi sang bài mới — kiến thức các bài xếp chồng lên nhau.
- Bí quá 15 phút thì đọc mục "Lỗi thường gặp", chưa ra thì mở lời giải, nhưng phải gõ lại.
- Mở song song 2 cửa sổ: một bên giáo trình, một bên VS Code.
- Đừng bỏ qua các hộp ⚠️. Dự án này là bài tập lớn của sinh viên nên có nhiều chỗ làm chưa chuẩn — biết chỗ sai và biết vì sao sai chính là lúc bạn lên trình.
All rights reserved