# 🚀 Lộ Trình Học Lập Trình Web + AI Tích Hợp 24 Tháng

### Dành cho sinh viên Việt Nam bắt đầu từ zero

---

## 📋 Tổng Quan Lộ Trình

| Giai đoạn | Thời gian | Chủ đề chính | Mức độ |
|-----------|-----------|--------------|--------|
| Giai đoạn 1 | Tháng 1–6 | Nền tảng Web (HTML/CSS/JS/Git) | 🟢 Beginner |
| Giai đoạn 2 | Tháng 7–12 | Full-stack (React/Node.js/SQL/API) | 🟡 Intermediate |
| Giai đoạn 3 | Tháng 13–18 | AI Integration (LLM/Chatbot/RAG) | 🟠 Advanced |
| Giai đoạn 4 | Tháng 19–24 | Production & Career (Deploy/Bảo mật/Job) | 🔴 Professional |

> **💡 Nguyên tắc học:** Học 70% thực hành – 30% lý thuyết. Mỗi tuần tối thiểu 15–20 giờ học. Ghi chép bằng tiếng Anh để quen với tài liệu kỹ thuật.

---

## 🟢 GIAI ĐOẠN 1: Tháng 1–6 — Nền Tảng Web

### 🎯 Mục Tiêu Giai Đoạn

> Xây dựng tư duy lập trình vững chắc, thành thạo HTML/CSS/JavaScript cơ bản đến nâng cao, sử dụng Git thành thục, và có khả năng deploy website tĩnh lên internet.

---

### 📅 Tháng 1 — HTML & CSS Cơ Bản

#### Mục tiêu tháng
- Hiểu cấu trúc trang web hoạt động như thế nào
- Viết HTML semantic đúng chuẩn
- Tạo layout cơ bản với CSS

#### Nội dung học

**Tuần 1–2: HTML**
- [ ] Cấu trúc file HTML (DOCTYPE, head, body)
- [ ] Các thẻ semantic: `header`, `nav`, `main`, `section`, `article`, `footer`
- [ ] Form, input, button, table, list
- [ ] Thẻ media: img, video, audio
- [ ] HTML attributes và accessibility cơ bản (alt, aria-label)

**Tuần 3–4: CSS Cơ Bản**
- [ ] Selectors: class, id, pseudo-class (`:hover`, `:focus`, `:nth-child`)
- [ ] Box model: margin, padding, border, width, height
- [ ] Display: block, inline, inline-block, none
- [ ] Position: static, relative, absolute, fixed, sticky
- [ ] Color, font, text-decoration, line-height
- [ ] CSS Variables (`--primary-color`)

#### 📦 Project Output Tháng 1
```
Project 1.1: Trang CV cá nhân tĩnh
- Thông tin cá nhân, kỹ năng, học vấn
- Responsive đơn giản
- Deploy lên GitHub Pages
```

---

### 📅 Tháng 2 — CSS Nâng Cao & Responsive

#### Nội dung học

**Tuần 1–2: Layout Hiện Đại**
- [ ] Flexbox: `flex-direction`, `justify-content`, `align-items`, `flex-wrap`, `gap`
- [ ] CSS Grid: `grid-template-columns`, `grid-gap`, `grid-area`
- [ ] Khi nào dùng Flexbox, khi nào dùng Grid
- [ ] CSS animations và transitions cơ bản

**Tuần 3–4: Responsive Design**
- [ ] Media queries (`@media`)
- [ ] Mobile-first approach
- [ ] Viewport units: `vw`, `vh`, `rem`, `em`
- [ ] Làm quen Bootstrap 5 hoặc Tailwind CSS
- [ ] Thiết kế từ Figma/Zeplin ra code (xem design, đọc spacing)

#### 📦 Project Output Tháng 2
```
Project 1.2: Landing Page sản phẩm
- Đầy đủ sections: Hero, Features, Pricing, Footer
- Hoàn toàn responsive (mobile/tablet/desktop)
- Có animation nhẹ khi scroll
- Deploy GitHub Pages
```

---

### 📅 Tháng 3 — JavaScript Cơ Bản

#### Nội dung học

**Tuần 1–2: JS Fundamentals**
- [ ] Biến: `var`, `let`, `const` và scope
- [ ] Kiểu dữ liệu: string, number, boolean, null, undefined, object, array
- [ ] Operators, điều kiện if/else, switch
- [ ] Vòng lặp: for, while, for...of, for...in
- [ ] Functions: declaration, expression, arrow function
- [ ] Scope, hoisting, closures cơ bản

**Tuần 3–4: Arrays & Objects**
- [ ] Array methods: `map`, `filter`, `reduce`, `find`, `some`, `every`, `forEach`
- [ ] Object: tạo, truy cập, destructuring
- [ ] Spread operator (`...`), rest parameters
- [ ] Template literals
- [ ] Optional chaining (`?.`), nullish coalescing (`??`)

#### 📦 Project Output Tháng 3
```
Project 1.3: Ứng dụng Todo List
- Thêm/xóa/sửa/đánh dấu hoàn thành task
- Lọc task theo trạng thái
- Lưu vào localStorage
- Giao diện đẹp với CSS
```

---

### 📅 Tháng 4 — JavaScript Nâng Cao & DOM

#### Nội dung học

**Tuần 1–2: DOM Manipulation**
- [ ] `document.querySelector`, `getElementById`, `getElementsByClassName`
- [ ] Thêm/xóa/sửa element: `createElement`, `appendChild`, `innerHTML`, `textContent`
- [ ] Event handling: `addEventListener`, `removeEventListener`
- [ ] Event bubbling, delegation, và `preventDefault`
- [ ] Form validation với JS

**Tuần 3–4: Async JavaScript**
- [ ] Callback và vấn đề callback hell
- [ ] Promise: `.then()`, `.catch()`, `.finally()`
- [ ] `async/await` — cách viết code bất đồng bộ dễ đọc
- [ ] `fetch()` API — gọi dữ liệu từ server
- [ ] Xử lý lỗi với try/catch
- [ ] JSON: parse và stringify

#### 📦 Project Output Tháng 4
```
Project 1.4: Weather App
- Gọi OpenWeatherMap API
- Hiển thị thời tiết theo thành phố người dùng nhập
- Loading state, error handling
- Responsive design
```

---

### 📅 Tháng 5 — Git, Terminal & Công Cụ Developer

#### Nội dung học

**Tuần 1–2: Git & GitHub**
- [ ] Cài đặt Git, config username/email
- [ ] `git init`, `git clone`, `git status`, `git add`, `git commit`
- [ ] `git push`, `git pull`, `git fetch`
- [ ] Branching: `git branch`, `git checkout`, `git merge`
- [ ] Xử lý merge conflict
- [ ] Pull Request (PR) workflow
- [ ] `.gitignore` — những file không cần track
- [ ] Viết commit message chuẩn (Conventional Commits)

**Tuần 3: Terminal & Dev Tools**
- [ ] Lệnh terminal cơ bản: `cd`, `ls`, `mkdir`, `rm`, `cp`, `mv`
- [ ] npm/yarn: `init`, `install`, `run`, `scripts`
- [ ] Chrome DevTools: Elements, Console, Network, Application tabs
- [ ] VSCode shortcuts và extensions hữu ích
- [ ] Prettier, ESLint setup

**Tuần 4: Deploy & Hosting**
- [ ] GitHub Pages cho static site
- [ ] Netlify: drag-and-drop deploy, CI/CD từ GitHub
- [ ] Vercel: deploy từ GitHub repo
- [ ] Tên miền: mua domain, trỏ DNS (tùy chọn)
- [ ] HTTPS và tại sao quan trọng

#### 📦 Project Output Tháng 5
```
Project 1.5: Portfolio Website
- Giới thiệu bản thân chuyên nghiệp
- Showcase 3 project đã làm
- Blog/notes section đơn giản
- Custom domain (tùy chọn)
- CI/CD: tự động deploy khi push lên GitHub
```

---

### 📅 Tháng 6 — JS ES6+, Module & Tổng Hợp

#### Nội dung học

**Tuần 1–2: ES6+ Nâng Cao**
- [ ] Classes và OOP cơ bản trong JS
- [ ] Modules: `import/export` (ESM)
- [ ] Error handling nâng cao, custom Error
- [ ] `Set`, `Map` data structures
- [ ] `Symbol`, `WeakMap`, `WeakSet` (hiểu khái niệm)
- [ ] Generators và Iterators (cơ bản)
- [ ] Regular Expressions cơ bản

**Tuần 3–4: Làm Quen Công Cụ Build**
- [ ] Vite: tại sao cần build tool, cách setup
- [ ] Babel: transpile JS
- [ ] Webpack cơ bản (không cần sâu)
- [ ] Tổng ôn và làm project cuối giai đoạn

#### 📦 Project Output Tháng 6 — Project Tốt Nghiệp Giai Đoạn 1
```
Project 1.6 (CAPSTONE): Ứng dụng Quiz/Flashcard
- Câu hỏi trắc nghiệm theo chủ đề
- Đếm điểm, hiển thị kết quả
- Gọi API để lấy câu hỏi (Open Trivia DB)
- Lưu lịch sử làm bài vào localStorage
- Responsive, animation đẹp
- Build với Vite, deploy Netlify/Vercel
- Code chia module rõ ràng
```

---

### ✅ Milestone Kiểm Tra — Cuối Giai Đoạn 1

#### Kiểm Tra Lý Thuyết
- [ ] Giải thích được sự khác nhau giữa `==` và `===`
- [ ] Giải thích event loop, call stack, và async trong JS
- [ ] Phân biệt `let`, `const`, `var` và scope
- [ ] Giải thích Box Model và cách tính kích thước element
- [ ] Mô tả Git flow cơ bản (branch, merge, PR)

#### Kiểm Tra Thực Hành
- [ ] Clone một repo, tạo branch mới, commit và tạo PR
- [ ] Viết function bất đồng bộ với `async/await` và xử lý lỗi
- [ ] Gọi một API công khai và hiển thị data lên UI
- [ ] Deploy một website lên Netlify từ GitHub repo
- [ ] Fix một bug trong code của người khác

#### Tiêu Chí Pass
```
✅ Có ít nhất 3 project trên GitHub với README rõ ràng
✅ Portfolio website đang live trên internet
✅ Hiểu và dùng được Git cơ bản (không dùng GUI)
✅ Viết được JS không cần tra cứu syntax cơ bản
✅ Đọc được error message và tự debug
```

---

### 📚 Tài Nguyên Học — Giai Đoạn 1

| Loại | Tên | Link | Chi phí |
|------|-----|------|---------|
| Video | The Odin Project | theodinproject.com | Miễn phí |
| Video | freeCodeCamp (YouTube) | youtube.com/@freecodecamp | Miễn phí |
| Sách | Eloquent JavaScript | eloquentjavascript.net | Miễn phí |
| Tài liệu | MDN Web Docs | developer.mozilla.org | Miễn phí |
| Thực hành | JavaScript30 (Wes Bos) | javascript30.com | Miễn phí |
| Thực hành | CSS Battle | cssbattle.dev | Miễn phí |
| Cộng đồng | Viblo (Tiếng Việt) | viblo.asia | Miễn phí |
| Cộng đồng | TopDev Community | topdev.vn | Miễn phí |

---

## 🟡 GIAI ĐOẠN 2: Tháng 7–12 — Full-Stack Development

### 🎯 Mục Tiêu Giai Đoạn

> Xây dựng ứng dụng web hoàn chỉnh từ frontend đến backend. Thành thạo React, Node.js, cơ sở dữ liệu SQL, thiết kế REST API, và hệ thống xác thực người dùng. Hiểu luồng dữ liệu từ database đến giao diện người dùng.

---

### 📅 Tháng 7 — React.js Cơ Bản

#### Nội dung học

**Tuần 1–2: React Fundamentals**
- [ ] Tại sao React? Virtual DOM là gì?
- [ ] JSX — HTML trong JavaScript
- [ ] Components: Function components (ưu tiên dùng)
- [ ] Props: truyền data từ component cha sang con
- [ ] State với `useState` hook
- [ ] Rendering có điều kiện: `&&`, ternary `? :`
- [ ] List rendering với `.map()` và `key` prop
- [ ] Xử lý events trong React

**Tuần 3–4: React Hooks**
- [ ] `useEffect`: side effects, fetch data, cleanup
- [ ] `useContext`: global state đơn giản
- [ ] `useRef`: truy cập DOM element trực tiếp
- [ ] `useMemo` và `useCallback`: tối ưu performance
- [ ] Custom hooks: tách logic tái sử dụng
- [ ] React DevTools để debug

#### 📦 Project Output Tháng 7
```
Project 2.1: Movie/Book Search App
- Tìm kiếm phim qua TMDB API
- Debounce search input
- Danh sách yêu thích (localStorage)
- Loading skeleton, error states
- Routing cơ bản với React Router
```

---

### 📅 Tháng 8 — React Nâng Cao & State Management

#### Nội dung học

**Tuần 1–2: React Router & Advanced Patterns**
- [ ] React Router v6: `BrowserRouter`, `Routes`, `Route`, `Link`
- [ ] Dynamic routes và URL params (`useParams`)
- [ ] Nested routes, `Outlet`
- [ ] Protected routes (chỉ cho người đã đăng nhập)
- [ ] `useNavigate`, `useLocation`
- [ ] Component patterns: Compound components, Render props

**Tuần 3–4: State Management**
- [ ] Vấn đề prop drilling là gì
- [ ] Context API + useReducer (Redux pattern đơn giản)
- [ ] Zustand — state management nhẹ, dễ dùng
- [ ] React Query (TanStack Query) — server state management
- [ ] Khi nào dùng local state vs global state
- [ ] Form management với React Hook Form

#### 📦 Project Output Tháng 8
```
Project 2.2: E-commerce Frontend
- Product listing, filtering, sorting
- Shopping cart với Zustand
- Product detail page
- Checkout form với validation
- Dùng dữ liệu từ FakeStore API
```

---

### 📅 Tháng 9 — Node.js & Backend Cơ Bản

#### Nội dung học

**Tuần 1: Node.js Fundamentals**
- [ ] Node.js là gì, khác browser JS như thế nào
- [ ] CommonJS (`require/module.exports`) vs ESM (`import/export`)
- [ ] Built-in modules: `fs`, `path`, `os`, `http`
- [ ] npm ecosystem: tìm, cài, quản lý packages
- [ ] `package.json`: scripts, dependencies, devDependencies
- [ ] Environment variables với `dotenv`

**Tuần 2: Express.js**
- [ ] Setup Express server cơ bản
- [ ] Routes: GET, POST, PUT, PATCH, DELETE
- [ ] Middleware: `express.json()`, `cors()`, custom middleware
- [ ] Request object: `req.body`, `req.params`, `req.query`
- [ ] Response: `res.json()`, `res.status()`, `res.send()`
- [ ] Error handling middleware
- [ ] Postman/Thunder Client để test API

**Tuần 3–4: REST API Design**
- [ ] Nguyên tắc RESTful API
- [ ] HTTP status codes: 200, 201, 400, 401, 403, 404, 500
- [ ] API versioning (`/api/v1/`)
- [ ] Request validation với Zod hoặc Joi
- [ ] Pagination, filtering, sorting trong API
- [ ] API documentation với Swagger/OpenAPI cơ bản

#### 📦 Project Output Tháng 9
```
Project 2.3: REST API cho Blog
- CRUD endpoints: posts, categories, tags
- Search và filter posts
- Pagination
- Request validation
- API documentation với Swagger
- Test API với Postman collection
```

---

### 📅 Tháng 10 — Cơ Sở Dữ Liệu SQL & ORM

#### Nội dung học

**Tuần 1–2: SQL Cơ Bản đến Trung Cấp**
- [ ] Tại sao SQL? Khi nào dùng SQL vs NoSQL?
- [ ] PostgreSQL: cài đặt, tạo database, tạo user
- [ ] DDL: `CREATE TABLE`, `ALTER TABLE`, `DROP TABLE`
- [ ] DML: `INSERT`, `SELECT`, `UPDATE`, `DELETE`
- [ ] WHERE, ORDER BY, LIMIT, OFFSET
- [ ] Aggregate: `COUNT`, `SUM`, `AVG`, `MIN`, `MAX`, `GROUP BY`
- [ ] JOINs: INNER, LEFT, RIGHT, FULL OUTER
- [ ] Indexes: tại sao quan trọng, khi nào tạo
- [ ] Transactions: ACID, `BEGIN`, `COMMIT`, `ROLLBACK`
- [ ] Database design: normalization, foreign keys, constraints

**Tuần 3–4: ORM với Prisma**
- [ ] Prisma là gì, tại sao dùng ORM
- [ ] Schema definition: models, relations, types
- [ ] Prisma Client: CRUD operations
- [ ] Relations: one-to-one, one-to-many, many-to-many
- [ ] Migrations: `prisma migrate dev`
- [ ] Prisma Studio để xem data
- [ ] Raw queries khi cần

#### 📦 Project Output Tháng 10
```
Project 2.4: Database-backed Blog API
- Kết nối PostgreSQL với Prisma
- Schema: User, Post, Category, Comment, Tag
- Đầy đủ relations giữa các bảng
- CRUD với database thực
- Migrations có version control
```

---

### 📅 Tháng 11 — Authentication & Authorization

#### Nội dung học

**Tuần 1–2: Authentication**
- [ ] Authentication vs Authorization khác nhau thế nào
- [ ] Hashing password: bcrypt, tại sao không lưu plaintext
- [ ] JWT (JSON Web Token): structure, sign, verify
- [ ] Access token vs Refresh token
- [ ] Lưu token ở đâu: localStorage vs httpOnly cookie (và trade-offs)
- [ ] Register, Login, Logout flow
- [ ] Forgot password với email verification
- [ ] Rate limiting để chống brute force

**Tuần 3–4: Authorization & Security Cơ Bản**
- [ ] Role-based access control (RBAC): admin, user, moderator
- [ ] Middleware xác thực JWT
- [ ] CORS: cấu hình đúng cách
- [ ] Helmet.js: HTTP security headers
- [ ] SQL injection: hiểu và phòng chống với parameterized queries
- [ ] XSS: hiểu và sanitize input
- [ ] CSRF protection

#### 📦 Project Output Tháng 11
```
Project 2.5: Full Auth System
- Đăng ký, đăng nhập, đăng xuất
- JWT + Refresh token
- Email verification (dùng Nodemailer + Mailtrap)
- Forgot/Reset password
- Protected routes theo role
- Rate limiting
```

---

### 📅 Tháng 12 — Full-Stack Integration & Project Cuối

#### Nội dung học

**Tuần 1–2: Kết Nối Frontend + Backend**
- [ ] Axios vs fetch trong React
- [ ] Interceptors: tự động gắn token vào request
- [ ] Xử lý 401 và tự refresh token
- [ ] React Query cho data fetching và caching
- [ ] Optimistic updates: UI cập nhật trước khi server confirm
- [ ] File upload: `multipart/form-data`, Multer, lưu file (Cloudinary hoặc S3)
- [ ] Real-time cơ bản với WebSocket (Socket.io)

**Tuần 3–4: Deploy Full-Stack**
- [ ] Deploy backend Node.js lên Railway hoặc Render
- [ ] Deploy frontend React lên Vercel
- [ ] PostgreSQL trên cloud: Supabase hoặc Railway
- [ ] Environment variables trên production
- [ ] CORS cấu hình cho production domain
- [ ] Basic monitoring: xem logs

#### 📦 Project Output Tháng 12 — Project Tốt Nghiệp Giai Đoạn 2
```
Project 2.6 (CAPSTONE): Blog Platform Full-Stack
FRONTEND (React):
- Trang chủ, danh sách bài, chi tiết bài viết
- Tìm kiếm, lọc theo category
- Đăng nhập/đăng ký
- Dashboard viết bài (markdown editor)
- Comment system real-time

BACKEND (Node.js/Express):
- REST API đầy đủ
- Auth với JWT + refresh token
- PostgreSQL với Prisma
- File upload ảnh bìa (Cloudinary)
- Email verification

DEPLOY:
- Frontend: Vercel
- Backend: Railway
- DB: Supabase PostgreSQL
- CI/CD tự động
```

---

### ✅ Milestone Kiểm Tra — Cuối Giai Đoạn 2

#### Kiểm Tra Lý Thuyết
- [ ] Giải thích React component lifecycle với hooks
- [ ] Mô tả JWT authentication flow từ đầu đến cuối
- [ ] Phân biệt SQL JOIN types và khi nào dùng
- [ ] Giải thích sự khác nhau giữa `useEffect` dependencies
- [ ] Mô tả cách phòng chống SQL injection và XSS

#### Kiểm Tra Thực Hành
- [ ] Thiết kế database schema cho ứng dụng mới trong 30 phút
- [ ] Viết REST API endpoint với authentication từ đầu
- [ ] Debug một React component có bug trong state management
- [ ] Viết SQL query phức tạp với JOIN và aggregate
- [ ] Setup CI/CD pipeline cơ bản

#### Tiêu Chí Pass
```
✅ Full-stack app đang chạy live trên internet
✅ Code có cấu trúc rõ ràng, tách layers (controller/service/repository)
✅ Hiểu và implement được auth flow hoàn chỉnh
✅ Database có migration history, không tay sửa trực tiếp
✅ README đầy đủ: setup, API docs, demo link
✅ Biết debug với DevTools cả frontend lẫn backend
```

---

### 📚 Tài Nguyên Học — Giai Đoạn 2

| Loại | Tên | Link | Chi phí |
|------|-----|------|---------|
| Video | React Official Docs | react.dev | Miễn phí |
| Video | Node.js — Net Ninja (YouTube) | youtube.com | Miễn phí |
| Khóa học | Full Stack Open (Helsinki) | fullstackopen.com | Miễn phí |
| Khóa học | The Odin Project Full Stack | theodinproject.com | Miễn phí |
| Thực hành | Prisma Docs | prisma.io/docs | Miễn phí |
| Thực hành | SQLZoo | sqlzoo.net | Miễn phí |
| Sách | Node.js Design Patterns | (ebook) | Mua/PDF |
| Video | Fireship (YouTube) | youtube.com/@Fireship | Miễn phí |

---

## 🟠 GIAI ĐOẠN 3: Tháng 13–18 — AI Integration

### 🎯 Mục Tiêu Giai Đoạn

> Tích hợp AI vào ứng dụng web một cách thực tế. Thành thạo gọi LLM API, kỹ thuật prompt engineering, xây dựng chatbot thông minh, và hiểu cách RAG (Retrieval-Augmented Generation) hoạt động. Tạo được sản phẩm AI có giá trị thực tế.

---

### 📅 Tháng 13 — Nền Tảng AI & LLM API

#### Nội dung học

**Tuần 1: Hiểu LLM & AI Cơ Bản**
- [ ] LLM là gì? Token, context window, temperature là gì?
- [ ] Các model phổ biến: GPT-4o, Claude, Gemini, Llama — so sánh
- [ ] API key: lấy từ OpenAI, Anthropic, Google
- [ ] Pricing model: token-based pricing, cách tính chi phí
- [ ] Rate limits và cách xử lý
- [ ] Groq, Together.ai — LLM API giá rẻ hơn cho học tập

**Tuần 2–3: Gọi LLM API Cơ Bản**
- [ ] OpenAI SDK: `openai.chat.completions.create()`
- [ ] Messages array: role `system`, `user`, `assistant`
- [ ] Streaming response: hiển thị text dần dần
- [ ] Xử lý lỗi: timeout, rate limit, network error
- [ ] Token counting với `tiktoken`
- [ ] Lưu conversation history đúng cách

**Tuần 4: LLM trong Backend**
- [ ] Không bao giờ expose API key ở frontend
- [ ] Backend làm proxy cho LLM calls
- [ ] Caching responses để giảm chi phí
- [ ] Logging LLM calls để debug và track cost
- [ ] Environment-based config (dev dùng model rẻ, prod dùng model tốt)

#### 📦 Project Output Tháng 13
```
Project 3.1: AI Text Assistant
- Giao diện chat đơn giản
- Streaming response (text hiện dần)
- Lưu conversation history
- Đếm và hiển thị token usage
- Error handling đầy đủ
- Backend proxy bảo mật API key
```

---

### 📅 Tháng 14 — Prompt Engineering

#### Nội dung học

**Tuần 1–2: Kỹ Thuật Prompt Cơ Bản**
- [ ] Zero-shot prompting: hỏi thẳng không có ví dụ
- [ ] Few-shot prompting: cung cấp ví dụ mẫu
- [ ] Chain-of-thought (CoT): yêu cầu AI suy luận từng bước
- [ ] Role prompting: "Bạn là một chuyên gia..."
- [ ] System prompt: thiết lập personality, constraints
- [ ] Output formatting: yêu cầu JSON, markdown, structured data
- [ ] Temperature và top_p: khi nào dùng cao/thấp

**Tuần 3–4: Prompt Engineering Nâng Cao**
- [ ] Structured output với JSON mode / response_format
- [ ] Function calling / Tool use: LLM gọi function của bạn
- [ ] ReAct pattern: Reason + Act
- [ ] Prompt injection: hiểu và phòng chống
- [ ] Prompt versioning: lưu và so sánh các phiên bản prompt
- [ ] Evaluation: đo lường chất lượng output của LLM
- [ ] LangSmith hoặc Langfuse để monitor prompts

#### 📦 Project Output Tháng 14
```
Project 3.2: AI Content Generator
- Chọn loại content: blog post, email, social media
- Tùy chỉnh tone, độ dài, ngôn ngữ
- Structured output với JSON
- A/B test các prompt khác nhau
- Lưu và export kết quả
- Hiển thị token cost mỗi generation
```

---

### 📅 Tháng 15 — Chatbot Thông Minh

#### Nội dung học

**Tuần 1–2: Xây Dựng Chatbot**
- [ ] Conversation memory: lưu lịch sử đúng cách
- [ ] Context window management: xử lý khi conversation quá dài
- [ ] Sliding window: giữ N messages gần nhất
- [ ] Summarization: tóm tắt conversation cũ
- [ ] Multi-turn conversation design
- [ ] Phân loại intent của user: hỏi, yêu cầu, khiếu nại...
- [ ] Fallback handling: khi AI không biết trả lời

**Tuần 3–4: UX cho AI Chatbot**
- [ ] Typing indicator khi AI đang "suy nghĩ"
- [ ] Streaming text với Server-Sent Events (SSE)
- [ ] Regenerate response
- [ ] Copy, like/dislike feedback
- [ ] Conversation history sidebar
- [ ] Suggested questions/quick replies
- [ ] Mobile-responsive chat UI

#### 📦 Project Output Tháng 15
```
Project 3.3: Customer Service Chatbot
- Chatbot cho một lĩnh vực cụ thể (ví dụ: hỗ trợ học tiếng Anh)
- Conversation history lưu database
- Streaming response với SSE
- Feedback system (thumbs up/down)
- Admin dashboard xem conversations
- Giới hạn messages/ngày cho user
```

---

### 📅 Tháng 16 — Vector Database & Embeddings

#### Nội dung học

**Tuần 1–2: Embeddings**
- [ ] Embedding là gì? Vector representation của text
- [ ] OpenAI Embeddings API: `text-embedding-ada-002`, `text-embedding-3-small`
- [ ] Cosine similarity: đo độ tương đồng giữa vectors
- [ ] Semantic search vs keyword search
- [ ] Khi nào dùng embeddings

**Tuần 3–4: Vector Database**
- [ ] Vector database là gì? Khác SQL như thế nào?
- [ ] Chroma DB: local, dễ setup cho học tập
- [ ] Pinecone: cloud vector database phổ biến
- [ ] Supabase pgvector: tích hợp SQL + vector
- [ ] Index types: HNSW, IVF
- [ ] Upsert, query, delete vectors
- [ ] Metadata filtering: filter kết hợp vector search + conditions

#### 📦 Project Output Tháng 16
```
Project 3.4: Semantic Search Engine
- Upload văn bản/documents
- Chunk text, tạo embeddings
- Lưu vào vector database (Chroma)
- Tìm kiếm semantic (nghĩa) thay vì keyword
- Hiển thị similarity score
- So sánh kết quả semantic vs keyword search
```

---

### 📅 Tháng 17 — RAG (Retrieval-Augmented Generation)

#### Nội dung học

**Tuần 1–2: RAG Cơ Bản**
- [ ] RAG là gì và tại sao cần thiết?
- [ ] Vấn đề LLM hallucination là gì
- [ ] RAG pipeline: Document → Chunk → Embed → Store → Retrieve → Generate
- [ ] Chunking strategies: fixed-size, sentence, paragraph, semantic
- [ ] Chunk overlap: tại sao cần
- [ ] Retrieval: top-k, threshold similarity
- [ ] Augmented prompt: nhúng retrieved context vào prompt

**Tuần 3–4: RAG Nâng Cao**
- [ ] Hybrid search: kết hợp vector search + BM25 keyword search
- [ ] Re-ranking: sắp xếp lại kết quả retrieved
- [ ] Query expansion: mở rộng câu hỏi để tìm kiếm tốt hơn
- [ ] Multi-query retrieval: generate nhiều queries từ 1 câu hỏi
- [ ] Trích nguồn (citations): hiển thị AI lấy thông tin từ đâu
- [ ] Evaluation RAG: precision, recall, faithfulness, relevance
- [ ] LangChain cơ bản hoặc LlamaIndex (chọn 1)

#### 📦 Project Output Tháng 17
```
Project 3.5: RAG-based Q&A System
- Upload PDF/Word documents
- Auto chunking và indexing
- Chat với documents
- Hiển thị nguồn trích dẫn cụ thể
- Confidence score
- Multi-document support
- Dùng cho use case thực tế:
  ví dụ: hỏi đáp tài liệu học tập/pháp luật/manual
```

---

### 📅 Tháng 18 — AI Tools & Project Tốt Nghiệp Giai Đoạn 3

#### Nội dung học

**Tuần 1–2: Mở Rộng Tooling**
- [ ] Whisper API: speech-to-text
- [ ] Text-to-speech: OpenAI TTS, ElevenLabs
- [ ] Image generation: DALL-E 3, Stable Diffusion API
- [ ] Vision: GPT-4 Vision — phân tích hình ảnh
- [ ] LLM Orchestration: LangChain agents cơ bản
- [ ] Tool use / Function calling nâng cao
- [ ] AI SDKs: Vercel AI SDK, Mastra

**Tuần 3–4: Project Tốt Nghiệp**
- Hoàn thiện project capstone
- Code review, refactor
- Viết documentation đầy đủ
- Demo preparation

#### 📦 Project Output Tháng 18 — Project Tốt Nghiệp Giai Đoạn 3
```
Project 3.6 (CAPSTONE): AI Study Assistant Platform
TÍNH NĂNG:
- Upload tài liệu học tập (PDF, Word, TXT)
- RAG-based Q&A với trích dẫn nguồn
- Tạo flashcards tự động từ tài liệu
- Tạo quiz tự động với giải thích
- Tóm tắt chapter/document
- Voice input (Whisper) + Voice output (TTS)
- Multi-language support (Anh/Việt)
- Conversation history có thể search

TECH STACK:
- Frontend: React + Vercel AI SDK
- Backend: Node.js/Express
- Vector DB: Supabase pgvector
- LLM: GPT-4o hoặc Claude 3.5
- Storage: Cloudinary/S3 cho file upload
- DB: PostgreSQL (Prisma)
- Auth: JWT
- Deploy: Vercel + Railway
```

---

### ✅ Milestone Kiểm Tra — Cuối Giai Đoạn 3

#### Kiểm Tra Lý Thuyết
- [ ] Giải thích RAG pipeline từng bước và tại sao mỗi bước quan trọng
- [ ] Phân biệt embedding vs fine-tuning: khi nào dùng cái nào
- [ ] Giải thích tại sao temperature cao làm output ngẫu nhiên hơn
- [ ] Mô tả cách phòng chống prompt injection
- [ ] Tính chi phí ước tính cho 1000 users/ngày với LLM API

#### Kiểm Tra Thực Hành
- [ ] Xây dựng RAG pipeline từ đầu trong 2 giờ
- [ ] Viết prompt để extract structured JSON từ unstructured text
- [ ] Implement streaming chat response
- [ ] Debug tại sao RAG trả về kết quả không liên quan
- [ ] Tối ưu prompt để giảm 30% token usage mà không mất chất lượng

#### Tiêu Chí Pass
```
✅ AI app đang live với ít nhất 1 tính năng RAG thực sự hoạt động
✅ Hiểu được token cost và có cơ chế kiểm soát chi phí
✅ Prompt được version control và có thể A/B test
✅ Implement được streaming response
✅ Có logging và monitoring cơ bản cho LLM calls
✅ Biết cách evaluate chất lượng AI output
```

---

### 📚 Tài Nguyên Học — Giai Đoạn 3

| Loại | Tên | Link | Chi phí |
|------|-----|------|---------|
| Khóa học | DeepLearning.AI Short Courses | deeplearning.ai | Miễn phí |
| Tài liệu | OpenAI Cookbook | cookbook.openai.com | Miễn phí |
| Tài liệu | LangChain Docs | python.langchain.com | Miễn phí |
| Video | AI Jason (YouTube) | youtube.com/@AIJasonZ | Miễn phí |
| Video | Fireship AI Series | youtube.com/@Fireship | Miễn phí |
| Khóa học | Prompt Engineering Guide | promptingguide.ai | Miễn phí |
| Cộng đồng | Hugging Face | huggingface.co | Miễn phí |
| Tool | LangSmith | smith.langchain.com | Free tier |

---

## 🔴 GIAI ĐOẠN 4: Tháng 19–24 — Production Mindset & Career

### 🎯 Mục Tiêu Giai Đoạn

> Chuyển từ "code chạy được" sang "code production-ready". Học cách tối ưu chi phí AI, bảo mật hệ thống, testing, observability, và thực sự apply được việc làm với mức lương cạnh tranh tại thị trường Việt Nam và quốc tế.

---

### 📅 Tháng 19 — Testing & Code Quality

#### Nội dung học

**Tuần 1–2: Testing**
- [ ] Tại sao test quan trọng? Testing pyramid
- [ ] Unit testing với Vitest/Jest
- [ ] Integration testing: test API endpoints
- [ ] Mocking: mock external services (LLM API, database)
- [ ] React Testing Library: test components
- [ ] E2E testing với Playwright hoặc Cypress cơ bản
- [ ] Code coverage: không cần 100%, nhưng cần đủ ý nghĩa

**Tuần 3–4: Code Quality & Architecture**
- [ ] Clean Code principles: naming, functions nhỏ, DRY
- [ ] SOLID principles cơ bản
- [ ] Design patterns: Repository, Service Layer, Factory
- [ ] Code review: cách review và nhận review hiệu quả
- [ ] TypeScript nâng cao: generics, utility types, type guards
- [ ] Husky + lint-staged: tự động check code trước khi commit
- [ ] SonarQube hoặc CodeClimate cơ bản

#### 📦 Project Output Tháng 19
```
Project 4.1: Refactor & Test một project cũ
- Chọn project từ giai đoạn 2 hoặc 3
- Thêm unit tests đạt coverage >70%
- Refactor theo clean architecture
- Setup CI chạy test tự động
- TypeScript strict mode
- Code quality badge trong README
```

---

### 📅 Tháng 20 — DevOps, CI/CD & Infrastructure

#### Nội dung học

**Tuần 1–2: Docker**
- [ ] Tại sao Docker? "Works on my machine" problem
- [ ] Dockerfile: FROM, RUN, COPY, EXPOSE, CMD
- [ ] Docker Compose: chạy nhiều services cùng lúc
- [ ] Docker volumes và networks
- [ ] Multi-stage builds để giảm image size
- [ ] Docker Hub: push và pull images

**Tuần 3–4: CI/CD & Cloud Cơ Bản**
- [ ] GitHub Actions: workflows, jobs, steps
- [ ] CI pipeline: lint → test → build → deploy
- [ ] CD pipeline: auto deploy khi merge vào main
- [ ] Secrets management trong GitHub Actions
- [ ] AWS cơ bản: EC2, S3, RDS, CloudFront (hiểu khái niệm)
- [ ] Infrastructure as Code cơ bản: khái niệm Terraform
- [ ] Monitoring: Uptime Robot, Better Uptime (miễn phí)

#### 📦 Project Output Tháng 20
```
Project 4.2: Dockerized Full-Stack App + CI/CD
- Dockerfile cho frontend và backend
- Docker Compose cho local development
- GitHub Actions pipeline đầy đủ:
  lint → test → build Docker image → deploy
- Environment staging vs production
- Health check endpoint
- Auto rollback khi deploy fail
```

---

### 📅 Tháng 21 — Bảo Mật & Tối Ưu Chi Phí AI

#### Nội dung học

**Tuần 1–2: Bảo Mật Web Nâng Cao**
- [ ] OWASP Top 10: hiểu và biết cách phòng chống từng loại
- [ ] Penetration testing cơ bản với OWASP ZAP
- [ ] API security: authentication, authorization, input validation
- [ ] Secret scanning: không commit secret lên git (GitGuardian)
- [ ] Dependency vulnerabilities: `npm audit`, Dependabot
- [ ] HTTPS, TLS certificates (Let's Encrypt)
- [ ] Content Security Policy (CSP)
- [ ] Logging bảo mật: không log sensitive data
- [ ] GDPR basics: ảnh hưởng đến data handling như thế nào

**Tuần 3–4: Tối Ưu Chi Phí AI**
- [ ] Token optimization: prompt compression, cắt bỏ redundant text
- [ ] Model selection: dùng model rẻ hơn cho task đơn giản (GPT-4o-mini)
- [ ] Caching LLM responses: identical queries không gọi API
- [ ] Semantic caching với Redis: queries tương tự dùng cached response
- [ ] Batch processing: xử lý nhiều requests cùng lúc
- [ ] Monitoring cost với OpenAI usage dashboard
- [ ] Budget alerts: tự động tắt khi vượt budget
- [ ] Self-hosted LLM với Ollama (cho use cases phù hợp)
- [ ] Tính ROI: cost per user, cost per request

#### 📦 Project Output Tháng 21
```
Project 4.3: Secure & Cost-Optimized AI App
- Implement semantic caching với Redis
- Cost dashboard: hiển thị chi phí real-time
- Budget limit per user per day
- Security audit report (OWASP checklist)
- Rate limiting nâng cao (per user, per IP)
- Audit log: ai làm gì, khi nào
```

---

### 📅 Tháng 22 — Performance, Observability & Scale

#### Nội dung học

**Tuần 1–2: Performance Optimization**
- [ ] Web performance metrics: LCP, FCP, CLS, TTI (Core Web Vitals)
- [ ] Lighthouse audit và cách cải thiện điểm
- [ ] Code splitting và lazy loading trong React
- [ ] Image optimization: WebP, lazy loading, CDN
- [ ] Bundle analysis: webpack-bundle-analyzer
- [ ] API performance: N+1 problem và cách giải quyết
- [ ] Database query optimization: EXPLAIN ANALYZE
- [ ] Connection pooling với PgBouncer
- [ ] Redis caching cho API responses

**Tuần 3–4: Observability**
- [ ] Logging đúng cách: Winston/Pino, structured logs
- [ ] Log levels: debug, info, warn, error — khi nào dùng cái nào
- [ ] Metrics: request rate, error rate, latency (RED method)
- [ ] Distributed tracing cơ bản
- [ ] Sentry: error tracking và performance monitoring
- [ ] Grafana + Prometheus cơ bản (tự tìm hiểu thêm)
- [ ] Alerting: nhận thông báo khi có vấn đề
- [ ] LLM observability: LangSmith/Langfuse cho AI apps

#### 📦 Project Output Tháng 22
```
Project 4.4: Observability Dashboard
- Sentry tích hợp cho error tracking
- Custom metrics: request count, LLM cost/request
- Structured logging với correlation IDs
- Lighthouse score ≥ 90 cho tất cả metrics
- Database query log: identify slow queries
- Uptime monitoring với alerts
```

---

### 📅 Tháng 23 — Portfolio, Open Source & Thương Hiệu Cá Nhân

#### Nội dung học

**Tuần 1: Hoàn Thiện Portfolio**
- [ ] Chọn 3–4 project tốt nhất để showcase
- [ ] Viết case study cho mỗi project: vấn đề, giải pháp, kết quả
- [ ] README chuẩn: demo, tech stack, setup, screenshots/gif
- [ ] Demo video 2–3 phút cho mỗi project
- [ ] Portfolio website cập nhật với thông tin mới nhất
- [ ] GitHub profile README hấp dẫn

**Tuần 2: LinkedIn & Mạng Lưới**
- [ ] LinkedIn profile tối ưu: headline, about, experience, skills
- [ ] Post về tech 2–3 lần/tuần (những gì bạn học)
- [ ] Kết nối với developers Việt Nam và quốc tế
- [ ] Tham gia Vietnam Web/AI community
- [ ] Meetup: DevDay, BarCamp, Google DevFest Vietnam

**Tuần 3: Open Source & Blog**
- [ ] Tìm project phù hợp để contribute: good first issue
- [ ] Submit ít nhất 1 PR được merge
- [ ] Viết technical blog: Viblo.asia, Dev.to, hashnode.dev
- [ ] Chia sẻ kiến thức: giải thích concept bạn học theo ngôn ngữ của mình

**Tuần 4: Thực Hành Phỏng Vấn**
- [ ] Ôn lại data structures & algorithms cơ bản (LeetCode Easy/Medium)
- [ ] System design cơ bản: thiết kế URL shortener, chat app
- [ ] Behavioral questions: STAR method
- [ ] Giải thích project của mình trong 2 phút
- [ ] Mock interview với bạn bè hoặc mentor

#### 📦 Project Output Tháng 23
```
Deliverables:
- Portfolio website v2 với case studies đầy đủ
- LinkedIn profile được tối ưu
- Ít nhất 1 merged PR trong open source project
- 5+ technical blog posts
- 50+ LeetCode problems solved (Easy/Medium)
- Đã apply ít nhất 10 công ty
```

---

### 📅 Tháng 24 — Apply Việc & Negotiation

#### Nội dung học

**Tuần 1–2: Job Search Strategy**
- [ ] Thị trường việc làm Việt Nam: ITviec, TopDev, VietnamWorks
- [ ] Remote jobs quốc tế: LinkedIn, Wellfound, Remote.co, Toptal
- [ ] Cách đọc job description và đánh giá phù hợp
- [ ] Cover letter cho tech jobs: ngắn gọn, specific
- [ ] Referral: hỏi kết nối để giới thiệu
- [ ] Freelance: Upwork, Fiverr cho AI/web projects

**Tuần 3: Phỏng Vấn Thực Chiến**
- [ ] Phỏng vấn technical: coding test, system design
- [ ] Phỏng vấn culture fit và behavioral
- [ ] Code challenge take-home: cách làm đẹp và đúng hạn
- [ ] Hỏi ngược lại: câu hỏi thể hiện bạn serious
- [ ] Quy trình phỏng vấn điển hình: HR → Technical → Manager

**Tuần 4: Offer, Negotiation & Onboarding**
- [ ] So sánh offer: lương, thưởng, equity, benefits
- [ ] Cách negotiate lương không awkward
- [ ] Mức lương tham khảo thị trường Việt Nam 2024–2025
- [ ] Thư cảm ơn sau phỏng vấn
- [ ] Chuẩn bị cho 3 tháng đầu đi làm: onboarding mindset

#### 📦 Project Output Tháng 24 — Project Tốt Nghiệp Cuối Khoá

```
Project 4.5 (FINAL CAPSTONE): AI-Powered SaaS Product
Đây là sản phẩm MVP thực sự — không phải side project

VÍ DỤ: AI Writing Assistant cho nội dung tiếng Việt
- Multi-tenant: nhiều user, mỗi user có workspace riêng
- Subscription: free tier (giới hạn) + paid tier
- Payment tích hợp: Stripe hoặc VNPay
- AI Features: viết, chỉnh sửa, dịch, tóm tắt
- RAG: học từ brand voice của từng user
- Analytics dashboard: usage stats
- Admin panel: quản lý users, billing
- Bảo mật đầy đủ: rate limiting, audit log
- CI/CD hoàn chỉnh
- Monitoring: Sentry + uptime
- Documentation: API docs + user guide

MỤC TIÊU: Đây là thứ bạn có thể pitch cho employer
hoặc launch thực sự để kiếm tiền
```

---

### ✅ Milestone Kiểm Tra — Cuối Giai Đoạn 4

#### Kiểm Tra Lý Thuyết
- [ ] Giải thích OWASP Top 10 và cách phòng chống trong dự án của bạn
- [ ] Thiết kế hệ thống xử lý 10.000 concurrent users (system design)
- [ ] Tính toán chi phí infrastructure và AI API cho 1.000 users/tháng
- [ ] Giải thích CI/CD pipeline của bạn từng bước
- [ ] Describe cách debug production incident: từ alert đến root cause

#### Kiểm Tra Thực Hành
- [ ] Deploy ứng dụng với zero downtime
- [ ] Phát hiện và fix memory leak trong Node.js
- [ ] Viết incident postmortem sau khi debug lỗi production
- [ ] Refactor code từ junior-level sang senior-level
- [ ] Whiteboard system design trong 45 phút

#### Tiêu Chí Pass — Tốt Nghiệp Lộ Trình
```
✅ Có SaaS product đang live, dù nhỏ
✅ GitHub có ít nhất 10 repos với code quality cao
✅ Đã nhận ít nhất 1 job offer (internship, fresher, hoặc junior)
✅ Có thể giải thích mọi dòng code mình viết
✅ Hiểu chi phí thực của hệ thống mình xây dựng
✅ Portfolio website live với case studies chi tiết
✅ LinkedIn có ≥ 500 connections trong tech
✅ Đã contribute ít nhất 1 open source project
```

---

### 📚 Tài Nguyên Học — Giai Đoạn 4

| Loại | Tên | Link | Chi phí |
|------|-----|------|---------|
| Sách | Clean Code — Robert Martin | (ebook) | Mua |
| Sách | The Pragmatic Programmer | (ebook) | Mua |
| Video | TechWorld with Nana (Docker/K8s) | youtube.com | Miễn phí |
| Khóa học | GitHub Actions — YouTube | youtube.com | Miễn phí |
| Thực hành | LeetCode | leetcode.com | Free tier |
| Thực hành | System Design Primer | github.com/donnemartin | Miễn phí |
| Cộng đồng | ITviec Blog | blog.itviec.com | Miễn phí |
| Cộng đồng | TopDev Blog | topdev.vn/blog | Miễn phí |

---

## 📊 Tổng Hợp Kỹ Năng Theo Giai Đoạn

| Kỹ năng | GĐ1 | GĐ2 | GĐ3 | GĐ4 |
|---------|-----|-----|-----|-----|
| HTML/CSS | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| JavaScript | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| TypeScript | — | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| React | — | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Node.js/Express | — | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| SQL/Database | — | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Git/GitHub | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| LLM API | — | — | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Prompt Engineering | — | — | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| RAG/Vector DB | — | — | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| Security | ⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Testing | — | ⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
| Docker/CI/CD | — | ⭐ | ⭐⭐ | ⭐⭐⭐⭐ |
| Cost Optimization | — | — | ⭐⭐ | ⭐⭐⭐⭐⭐ |

---

## 💰 Mức Lương Tham Khảo Sau Khi Hoàn Thành

| Vị trí | Tại Việt Nam | Remote Quốc Tế |
|--------|-------------|----------------|
| Intern/Fresher (6–12 tháng) | 7–15 triệu/tháng | $500–$1.500/tháng |
| Junior Developer (1–2 năm) | 15–30 triệu/tháng | $1.500–$3.000/tháng |
| Junior AI Engineer | 20–40 triệu/tháng | $2.000–$4.000/tháng |
| Freelancer Web+AI | 30–80 triệu/tháng | $3.000–$8.000/tháng |

> **Ghi chú:** Số liệu tham khảo năm 2024–2025, thực tế phụ thuộc vào kỹ năng, portfolio, và thị trường.

---

## 🛠️ Tech Stack Tổng Hợp Theo Lộ Trình

```
FRONTEND
├── HTML5, CSS3, JavaScript (ES2022+)
├── TypeScript
├── React 18 + React Router v6
├── Tailwind CSS / Bootstrap 5
├── Zustand (State Management)
├── TanStack Query (Server State)
├── React Hook Form + Zod
└── Vite (Build Tool)

BACKEND
├── Node.js + Express.js
├── TypeScript
├── PostgreSQL + Prisma ORM
├── Redis (Caching)
├── JWT + bcrypt (Auth)
├── Socket.io (Real-time)
└── Zod (Validation)

AI / ML
├── OpenAI API (GPT-4o, Embeddings, Whisper, TTS)
├── Anthropic Claude API
├── LangChain.js / Vercel AI SDK
├── Chroma DB / Supabase pgvector
├── LangSmith / Langfuse (Monitoring)
└── Groq / Together.ai (Cheaper LLM)

DEVOPS & TOOLS
├── Git + GitHub
├── Docker + Docker Compose
├── GitHub Actions (CI/CD)
├── Vercel (Frontend Deploy)
├── Railway / Render (Backend Deploy)
├── Supabase (PostgreSQL Cloud)
├── Cloudinary / S3 (File Storage)
└── Sentry (Error Monitoring)
```

---

## ⚠️ Những Lỗi Phổ Biến Cần Tránh

### Giai Đoạn 1
- ❌ Copy code mà không hiểu — hãy luôn gõ tay và hiểu từng dòng
- ❌ Bỏ qua HTML semantic — SEO và accessibility phụ thuộc vào đây
- ❌ Không dùng Git ngay từ đầu — commit mỗi tính năng nhỏ

### Giai Đoạn 2
- ❌ Viết tất cả logic trong component React — tách service layer ra
- ❌ Lưu password plain text — luôn dùng bcrypt
- ❌ Expose database trực tiếp ra internet — không bao giờ

### Giai Đoạn 3
- ❌ Expose API key ở frontend — luôn qua backend proxy
- ❌ Không set budget limit — có thể mất tiền rất nhanh
- ❌ Tin tưởng 100% output của LLM — luôn validate và có fallback

### Giai Đoạn 4
- ❌ Apply hàng trăm nơi không có customize — chất lượng hơn số lượng
- ❌ Nói lương quá thấp sợ bị reject — negotiate tự tin
- ❌ Bỏ học sau khi có việc — tech thay đổi rất nhanh

---

## 📅 Lịch Học Gợi Ý Hàng Tuần

```
THỨ 2 – THỨ 5:  Học lý thuyết mới + làm bài tập nhỏ (2–3 giờ/ngày)
THỨ 6:          Review lại tuần, ghi notes, đọc blog tech (2 giờ)
THỨ 7:          Làm project, code thực hành (4–5 giờ)
CHỦ NHẬT:       Làm project tiếp hoặc nghỉ ngơi, xem tech video nhẹ (2–3 giờ)

TỔNG: ~15–20 giờ/tuần
```

---

## 🎯 KPI Theo Dõi Tiến Độ

### Hàng Tuần
- [ ] Học được ít nhất 1 concept mới
- [ ] Commit code ít nhất 5 ngày
- [ ] Đọc 1 technical article/blog
- [ ] Giải 2–3 bài tập coding (từ tháng 20 trở đi)

### Hàng Tháng
- [ ] Hoàn thành project output của tháng đó
- [ ] Update portfolio với project mới
- [ ] Viết 1 blog post hoặc ghi chép tóm tắt những gì học
- [ ] Review lại milestone và điều chỉnh kế hoạch nếu cần

### Hàng Quý (Mỗi 3 Tháng)
- [ ] Demo project cho người khác (mentor, bạn bè, community)
- [ ] Nhận feedback và cải thiện
- [ ] Cập nhật CV và LinkedIn
- [ ] Đặt mục tiêu cho quý tiếp theo

---

> **🌟 Lời Kết:** 24 tháng là hành trình dài, sẽ có lúc bạn muốn bỏ cuộc. Hãy nhớ: mỗi developer giỏi bạn thấy hôm nay đều đã từng là người mới bắt đầu. Quan trọng không phải là học nhanh — mà là học **đều đặn** và **thực hành liên tục**. Chúc bạn thành công trên con đường trở thành Web + AI Developer! 🚀