Skip to content

Road to Fullstack: Nơi tôi "vật lộn" với code, "vỡ lẽ" ra nhiều điều, và dần dần biến những ý tưởng điên rồ thành ứng dụng web thực tế. Hãy cùng tôi trên hành trình đầy thử thách nhưng cũng cực kỳ thú vị này. (Và có lẽ sẽ có vài lỗi nhỏ trên đường, nhưng đó là một phần của cuộc vui!)

Notifications You must be signed in to change notification settings

dangkhoa2004/Road-to-Fullstack

Repository files navigation

ROAD-TO-FULLSTACK: Hành Trình Chinh Phục Lập Trình Fullstack Từ Zero Đến Hero 🚀

Dự án này là một tài liệu sống 📖, một tập hợp các thành quả và trải nghiệm được tích lũy trong suốt quá trình tự học và thực hành lập trình Fullstack. Nó không chỉ đơn thuần là một sản phẩm cuối cùng, mà là một minh chứng cho hành trình học hỏi liên tục, từ những bước đi chập chững với các khái niệm cơ bản nhất đến việc xây dựng một hệ thống hoàn chỉnh, bao gồm cả các dịch vụ backend mạnh mẽ và giao diện người dùng frontend tương tác.

Mỗi dòng code 📝, mỗi cấu trúc thư mục 📁, và mỗi quyết định thiết kế trong dự án này đều phản ánh một bài học, một thử thách đã được vượt qua, hoặc một kỹ năng mới đã được rèn giũa. Mục tiêu chính là tạo ra một môi trường học tập thực tế, nơi lý thuyết được áp dụng trực tiếp vào việc xây dựng các thành phần của một ứng dụng, đồng thời phát triển tư duy giải quyết vấn đề và kỹ năng phát triển phần mềm toàn diện.

Mục tiêu Chi tiết của Dự án 🎯

Dự án này được xây dựng với những mục tiêu rõ ràng nhằm tối ưu hóa quá trình học tập và phát triển cá nhân:

  1. Nắm vững Kiến trúc Fullstack: Hiểu rõ cách các thành phần backend ⚙️, frontend 🖥️ và cơ sở dữ liệu 🗄️ phối hợp với nhau để tạo nên một ứng dụng hoàn chỉnh. Nghiên cứu sâu về kiến trúc RESTful APIs, quy trình giao tiếp giữa client-server và các mẫu thiết kế phổ biến.
  2. Thực hành Phát triển Backend chuyên sâu:
    • Ngôn ngữ và Framework: Thành thạo Java ☕ và framework Spring Boot 🌱 để xây dựng các dịch vụ RESTful API mạnh mẽ, ổn định và có khả năng mở rộng.
    • Quản lý Cơ sở dữ liệu: Học cách thiết kế lược đồ cơ sở dữ liệu hiệu quả, sử dụng SQL để thao tác dữ liệu, và tích hợp các công cụ ORM (Object-Relational Mapping) như JPA/Hibernate để tương tác với cơ sở dữ liệu một cách linh hoạt.
    • Bảo mật: Triển khai các biện pháp bảo mật cơ bản như xác thực (authentication) và ủy quyền (authorization) để bảo vệ dữ liệu và API 🔒.
    • Xử lý lỗi và Logging: Xây dựng cơ chế xử lý lỗi hiệu quả và tích hợp logging để theo dõi hoạt động của ứng dụng 📊.
  3. Xây dựng Giao diện Người dùng tương tác (Frontend):
    • Framework hiện đại: Sử dụng các framework JavaScript phổ biến như React ⚛️, Vue 💚, hoặc Angular 🅰️ để xây dựng giao diện người dùng động, phản hồi nhanh và dễ bảo trì.
    • Quản lý State: Hiểu và áp dụng các mô hình quản lý state hiệu quả để duy trì trạng thái của ứng dụng phức tạp.
    • Kết nối API: Học cách gửi yêu cầu HTTP (GET, POST, PUT, DELETE) đến backend API và xử lý dữ liệu trả về để cập nhật giao diện người dùng 📡.
    • Trải nghiệm người dùng (UX): Chú trọng vào việc tạo ra giao diện trực quan, dễ sử dụng và có trải nghiệm người dùng tốt ✨.
  4. Tối ưu hóa Quy trình Phát triển:
    • Quản lý Dependencies: Sử dụng các công cụ quản lý gói như Maven (backend) 📦 và npm/Yarn (frontend) để quản lý các thư viện và dependency một cách hiệu quả.
    • Công cụ Build: Hiểu và sử dụng các công cụ build hiện đại như Vite ⚡ để tối ưu hóa quá trình phát triển và triển khai frontend.
    • Kiểm soát Phiên bản: Áp dụng Git ➕ và GitHub 🐙 để quản lý mã nguồn, theo dõi lịch sử thay đổi và làm việc cộng tác (dù là với chính mình).
  5. Phát triển Tư duy Giải quyết vấn đề: Đối mặt và vượt qua các thách thức kỹ thuật, từ việc debug lỗi 🐛 đến việc tối ưu hóa hiệu suất, qua đó nâng cao khả năng phân tích và giải quyết vấn đề.
  6. Xây dựng Portfolio: Tạo ra một sản phẩm thực tế để trưng bày các kỹ năng và kiến thức đã học, là nền tảng vững chắc cho các dự án lớn hơn trong tương lai 💼.

Cấu trúc Dự án Chi tiết 📂

Dự án được tổ chức một cách logic, phản ánh các thành phần cơ bản của một ứng dụng Fullstack, giúp dễ dàng theo dõi quá trình phát triển và phân tách các module:

  • .vscode/: 💻 Chứa các file cấu hình dành riêng cho Visual Studio Code.
  • Database/: 🗄️
    • pos_app_data.sql: Script SQL dùng để tạo lược đồ cơ sở dữ liệu ban đầu.
    • pos_app_modified.sql: Các script SQL chứa các thay đổi, cập nhật hoặc bổ sung cho lược đồ cơ sở dữ liệu sau này.
  • Document/: 📑 Thư mục quan trọng chứa các tài liệu thiết kế và yêu cầu của dự án:
    • TÀI LIỆU THIẾT KẾ API.docx: Mô tả chi tiết các endpoint API.
    • TÀI LIỆU THIẾT KẾ CƠ SỞ DỮ LIỆU.docx: Mô tả các bảng, mối quan hệ và sơ đồ ERD.
    • TÀI LIỆU YÊU CẦU DỰ ÁN.docx: Tổng hợp các yêu cầu chức năng và phi chức năng.
  • pos-backend/: ⚙️ Chứa toàn bộ mã nguồn và cấu hình cho phần backend của ứng dụng.
    • .mvn/: 🛠️ Maven Wrapper.
    • src/: ☕ Mã nguồn Java của ứng dụng Spring Boot.
    • target/: 📦 Các file build đã biên dịch.
    • pom.xml: 📄 File cấu hình dự án Maven.
  • pos-frontend/: 🖥️ Chứa toàn bộ mã nguồn và cấu hình cho phần frontend của ứng dụng.
    • dist/: 🚀 Các file đã được tối ưu hóa sẵn sàng để triển khai.
    • node_modules/: 🧩 Các thư viện và dependency Node.js.
    • public/: 🖼️ Các tài nguyên tĩnh.
    • src/: ✨ Mã nguồn của ứng dụng frontend (component, logic JS/TS, CSS).
    • index.html: 🌐 File HTML chính của ứng dụng frontend.
    • package.json: 📜 File cấu hình dự án Node.js.
    • vite.config.js: ⚡ File cấu hình cho Vite.
  • run.bat: ▶️ Một script batch để tự động hóa quá trình khởi chạy toàn bộ ứng dụng.
  • .gitignore: 🚫 File quy định các file và thư mục mà Git sẽ bỏ qua.
  • README.md: 📖 File giới thiệu dự án này.

Các Công nghệ và Công cụ Chủ đạo 💻🛠️

Dự án này là cơ hội để làm quen và thành thạo một loạt các công nghệ và công cụ hiện đại được sử dụng rộng rãi trong phát triển Fullstack:

Phần Backend: ⚙️

  • Ngôn ngữ Lập trình: Java
  • Framework: Spring Boot 🌱
  • Công cụ Build: Apache Maven 📦
  • Cơ sở dữ liệu: SQL 🗄️ (ví dụ: MySQL, PostgreSQL, H2)
  • ORM: JPA / Hibernate
  • Web Server nhúng: Tomcat / Jetty

Phần Frontend: 🖥️

  • Ngôn ngữ Lập trình: JavaScript / TypeScript 📜
  • Framework/Thư viện UI: React.js ⚛️ / Vue.js 💚 / Angular 🅰️
  • Công cụ Build & Dev Server: Vite
  • Quản lý Gói: npm / Yarn 🧶
  • Markup & Styling: HTML5 <> & CSS3 🎨

Công cụ Chung: 🔗

  • Môi trường Phát triển Tích hợp (IDE): Visual Studio Code VSCode
  • Hệ thống Kiểm soát Phiên bản: Git
  • Nền tảng Lưu trữ Mã nguồn: GitHub 🐙

Hướng dẫn Khởi chạy Dự án (Quick Start) ▶️

Để bắt đầu và khám phá dự án này trên máy cục bộ của bạn, vui lòng làm theo các bước sau. Đảm bảo rằng bạn đã cài đặt các công cụ cần thiết trước khi bắt đầu.

Tiền điều kiện ✅

  • Java Development Kit (JDK): Phiên bản 11+ (khuyến nghị JDK 17).
  • Apache Maven: Phiên bản 3.6+.
  • Node.js: Phiên bản 16+ (bao gồm npm).
  • Một hệ quản trị cơ sở dữ liệu SQL: (ví dụ: MySQL, PostgreSQL, H2).
  • Một IDE: Visual Studio Code hoặc IntelliJ IDEA.

1. Sao chép (Clone) Dự án 📥

git clone <URL_repository_của_bạn>
cd ROAD-TO-FULLSTACK

2. Chuẩn bị Cơ sở dữ liệu 🗄️

  1. Tạo một cơ sở dữ liệu mới:
    • Tên cơ sở dữ liệu: Ví dụ: pos_app_db
    • Tên người dùng và mật khẩu: Ghi nhớ để cấu hình backend.
  2. Chạy các script SQL:
    • Mở Database/pos_app_data.sqlDatabase/pos_app_modified.sql.
    • Thực thi các lệnh SQL để tạo bảng và nhập dữ liệu mẫu.
    • Lưu ý: Chạy pos_app_data.sql trước.

3. Cấu hình và Khởi chạy Backend (pos-backend) ⚙️

  1. Điều hướng đến thư mục backend:
    cd pos-backend
  2. Cấu hình kết nối Cơ sở dữ liệu:
    • Mở src/main/resources/application.properties (hoặc application.yml).
    • Cập nhật các thuộc tính kết nối cơ sở dữ liệu:
      spring.application.name=pos-backend
      server.port=8080
      spring.datasource.url=jdbc:mysql://localhost:3306/pos_app?useSSL=false&serverTimezone=UTC&createDatabaseIfNotExist=true
      spring.datasource.username=root
      spring.datasource.password=
      spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
      spring.jpa.hibernate.ddl-auto=update
      spring.jpa.show-sql=false
      spring.jpa.properties.hibernate.format_sql=false
      logging.level.org.hibernate.SQL=WARN
      logging.level.org.hibernate.type.descriptor.sql=WARN
      spring.web.resources.add-mappings=false
      jwt.secret=Jg7KaDIbkEP+0RaMPoYz91Lo4hsRT7W2oHAfvZV5qL+JdngIFK5bKKg0RzP6KnPjmhxaVoiTDvp6bcT9s+PzwA==
      jwt.expiration=86400000
  3. Build và chạy ứng dụng Backend:
    ./mvnw clean install
    ./mvnw spring-boot:run
    • Backend sẽ khởi động, thường trên cổng 8080.

4. Cấu hình và Khởi chạy Frontend (pos-frontend) 🖥️

  1. Mở một terminal mới (giữ cho backend đang chạy).
  2. Điều hướng đến thư mục frontend:
    cd ../pos-frontend
  3. Cài đặt các dependencies:
    npm install # hoặc yarn install
  4. Cấu hình API Endpoint (nếu cần):
    • Kiểm tra file cấu hình frontend để đảm bảo nó trỏ đến đúng URL của backend API (thường là http://localhost:8080).
  5. Chạy ứng dụng Frontend:
    npm run dev # hoặc yarn dev
    • Frontend sẽ khởi động, thường trên cổng 5173. Trình duyệt của bạn sẽ tự động mở trang web.

5. Sử dụng Ứng dụng ✨

  • Mở trình duyệt web của bạn và truy cập vào URL mà frontend đã khởi động (ví dụ: http://localhost:5173).
  • Bây giờ bạn có thể tương tác với ứng dụng Fullstack của mình! 🎉

Học hỏi từ Dự án 🧠

Dự án này được thiết kế để trở thành một nguồn tài nguyên học tập phong phú. Hãy khám phá các phần sau:

  • Mã nguồn: Nghiên cứu mã nguồn trong pos-backend/src/pos-frontend/src/ để hiểu cách các tính năng được triển khai 🧩.
  • Tài liệu: Đọc các file tài liệu trong thư mục Document/ để nắm bắt các quyết định thiết kế và yêu cầu ban đầu 📚.
  • SQL Scripts: Phân tích các file SQL trong Database/ để hiểu cấu trúc cơ sở dữ liệu và cách dữ liệu được quản lý 📊.
  • Cấu hình: Xem xét các file cấu hình để hiểu cách các công nghệ được cấu hình ⚙️.
  • Thử nghiệm: Thử nghiệm các API bằng Postman/Insomnia và tương tác với giao diện người dùng để quan sát cách ứng dụng hoạt động 🧪.

Đóng góp và Phát triển trong Tương lai 💡

Mặc dù đây là một dự án học tập cá nhân, mọi sự đóng góp và ý tưởng đều được chào đón. Nếu bạn có bất kỳ gợi ý nào để cải thiện mã nguồn, tài liệu hoặc cách tổ chức dự án, vui lòng mở một issue hoặc gửi pull request.

Những ý tưởng cho phát triển tương lai có thể bao gồm:

  • Triển khai thêm các tính năng phức tạp hơn (ví dụ: quản lý người dùng 👥, phân quyền nâng cao).
  • Thêm các bài kiểm thử tự động (unit tests, integration tests) ✅.
  • Tối ưu hóa hiệu suất cho cả backend và frontend ⚡.
  • Triển khai dự án lên một nền tảng cloud (AWS, Azure, GCP, Heroku) ☁️.
  • Áp dụng các mẫu thiết kế phần mềm nâng cao 🏗️.

Cảm ơn bạn đã ghé thăm dự án ROAD-TO-FULLSTACK này! Hy vọng nó sẽ là một nguồn cảm hứng và học hỏi hữu ích cho hành trình lập trình của bạn. 🙏

About

Road to Fullstack: Nơi tôi "vật lộn" với code, "vỡ lẽ" ra nhiều điều, và dần dần biến những ý tưởng điên rồ thành ứng dụng web thực tế. Hãy cùng tôi trên hành trình đầy thử thách nhưng cũng cực kỳ thú vị này. (Và có lẽ sẽ có vài lỗi nhỏ trên đường, nhưng đó là một phần của cuộc vui!)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published