# Kỳ 3: Full Stack

<details>

<summary>Tổng quan</summary>

**JavaScript** là một trong những ngôn ngữ lập trình phổ biến nhất. Môi trường thời gian chạy Node.js mạnh mẽ đã được xếp hạng là công nghệ được các nhà phát triển chuyên nghiệp sử dụng phổ biến nhất. **Node.js** là một JavaScript chạy theo hướng sự kiện. Node có vô số cách sử dụng tiềm năng để phát triển JavaScript, bao gồm cả việc trở thành một môi trường tuyệt vời để xây dựng các ứng dụng mạng hiệu quả.

Trong học phần này, học viên sẽ được tiếp cận với **khái niệm Back-end** và hiểu rõ hơn trong việc phát triển một ứng dụng web từ việc thiết kế Database MongoDB, thiết kế API với NodeJS, Express, xác thực và phân quyền người dùng, xử lý logic và đổ dữ liệu về phía Front-end như thế nào. Cuối học phần này, học viên sẽ áp dụng tất cả kiến thực được học từ React và NodeJS để hoàn thành dự án FullStack Web.

</details>

<details>

<summary>Mục tiêu</summary>

* Khóa học này là một giới thiệu tuyệt vời về các khái niệm phát triển web phía máy chủ. Bạn sẽ tìm hiểu các phần khác nhau tạo nên phần cuối của trang web hoặc ứng dụng web và bạn sẽ làm quen với môi trường thời gian chạy Node.js. Sau đó bạn sẽ có thể xây dựng các API bằng JavaScript và triển khai chức năng CRUD (tạo, truy xuất, cập nhật và xóa) vốn tạo thành xương sống của các ứng dụng hiện đại.
* Bạn sẽ được tìm hiểu về Hệ cơ sở dữ liệu MongoDB, giúp bạn kết nối máy chủ với cở sở dữ liệu, kết nối API với phía Front-end React mà bạn đã được học trước đó để xây dựng một ứng dụng web hoàn chỉnh, thiết lập những chức năng thực tế từ việc truy vấn dữ liệu trong Database.

</details>

<details>

<summary>Điều kiện đầu vào</summary>

* Vượt qua bài thi đầu vào
* Học viên đã có kiến thức về HTML, CSS và JavaScript ES6.
* Có kiến thức về React libary, Redux, CSS Design như Bootstrap, Tailwind,...
* Đảm bảo thời gian học mỗi ngày (trên lớp và về nhà)

</details>

<details>

<summary>Tiêu chuẩn đầu ra</summary>

* Hoàn thành Final Project theo nhóm (bắt buộc)
* Final Project: dự án website áp dụng những kiến thức về React, có request API hiển thị dữ liệu mẫu có sẵn

</details>

{% hint style="info" %}
[**Thời lượng**](#user-content-fn-1)[^1]

2 tháng - 16 buổi học, 2 buổi/tuần, 3h/buổi
{% endhint %}

{% hint style="info" %}
**Công nghệ**

NodeJS, MongoDB, Express, React.js
{% endhint %}

<table><thead><tr><th width="77.33333333333331">Bài học</th><th width="392">Lecture (Lý thuyết)</th><th>Thực hành</th></tr></thead><tbody><tr><td>1</td><td>Orientation Day <br>Khai giảng khoá học, giới thiệu về mục tiêu, yêu cầu, cơ hội việc làm sau cả lộ trình</td><td>NodeJS Introduction <br>Giới thiệu tổng quan về NodeJS</td></tr><tr><td>2</td><td>Express <br>Tạo web server cơ bản với ExpressJS. Hiểu các thành phần tham gia vào chu trình HTTP Request / Response</td><td>Practice <br>Thực hành về kiến thức đã học</td></tr><tr><td>3</td><td>Middleware Sử dụng middleware cho để xử lý những logic trên nhiều API</td><td>Practice <br>Thực hành về kiến thức đã học</td></tr><tr><td>4</td><td>Authenticaiton &#x26; Authorization <br>Xác thực người dùng với cơ chế JSON Web Token</td><td>Practice <br>Thực hành về kiến thức đã học</td></tr><tr><td>5</td><td>MongoDB <br>Sử dụng MongoDB làm hệ quản trị cơ sở dữ liệu cho ứng dụng.</td><td>Practice <br>Thực hành về kiến thức đã học</td></tr><tr><td>6</td><td>CRUD &#x26; MongoDB Aggregation CRUD một collection trong MongoDB</td><td>Practice <br>Thực hành về kiến thức đã học</td></tr><tr><td>7</td><td>Common Practise Một vài Practise thường dùng với ứng dụng ExpressJS</td><td>Practice <br>Thực hành về kiến thức đã học</td></tr><tr><td>8</td><td>Backend Deployment Deploy ứng dụng Express và MongoDB</td><td>Practice <br>Thực hành về kiến thức đã học</td></tr><tr><td>9</td><td>Review MongoDB + Setup Project</td><td>Practice <br>Thực hành về kiến thức đã học</td></tr><tr><td>10</td><td>CRUD với React và Redux</td><td>Practice <br>Thực hành về kiến thức đã học</td></tr><tr><td>11</td><td>Authentication với React và Redux</td><td>Final Project <br>Pitch Idea cùng phía Doanh Nghiệp</td></tr><tr><td>12</td><td>TDD and BDD - Unit testing</td><td>Final Project <br>Phát triển dự án cuối khoá</td></tr><tr><td>13</td><td>TDD and BDD - Unit testing</td><td>Final Project <br>Phát triển dự án cuối khoá</td></tr><tr><td>14</td><td>Deployment với Heroku</td><td>Final Project <br>Phát triển dự án cuối khoá</td></tr><tr><td>15</td><td>CV review Hướng dẫn xây dựng CV cho Fresher Developer</td><td>Final Project <br>Phát triển dự án cuối khoá</td></tr><tr><td>16</td><td>DEMO - Đánh giá từ Doanh Nghiệp (PM/PO hoặc UX/UI) >> trải nghiệm người dùng, tư duy sản phẩm</td><td></td></tr><tr><td></td><td>WORKSHOP DOANH NGHIỆP</td><td>Doanh nghiệp tham gia Workshop: Tư duy thiết kế (Design Thinking/UI/UX) trong lập trình Web/App</td></tr></tbody></table>

[^1]:
