Lập trình · 22/09/2026

Học Laravel 13 – Bài 01: Lộ trình học Laravel 13 qua dự án TaskFlow

Đây là bài mở đầu của khóa học Laravel 13 từ cơ bản đến production, lấy TaskFlow làm dự án xuyên suốt để biến từng khái niệm thành một phần mềm có thể chạy, kiểm thử và cải tiến. Thay vì học các API rời rạc rồi quên cách ghép chúng, bạn sẽ đi qua một vòng đời phát triển có chủ đích: hiểu request, thiết kế dữ liệu, xây giao diện hoặc API, bảo vệ nghiệp vụ, xử lý tác vụ nền, viết test, triển khai và quan sát hệ thống.

Lộ trình học Laravel 13 qua dự án TaskFlow

Đây là bài mở đầu của khóa học Laravel 13 từ cơ bản đến production, lấy TaskFlow làm dự án xuyên suốt để biến từng khái niệm thành một phần mềm có thể chạy, kiểm thử và cải tiến. Thay vì học các API rời rạc rồi quên cách ghép chúng, bạn sẽ đi qua một vòng đời phát triển có chủ đích: hiểu request, thiết kế dữ liệu, xây giao diện hoặc API, bảo vệ nghiệp vụ, xử lý tác vụ nền, viết test, triển khai và quan sát hệ thống.

Bài này chưa yêu cầu tạo ngay một ứng dụng hoàn chỉnh. Mục tiêu là thống nhất điểm xuất phát, phạm vi TaskFlow, cách dùng series, bằng chứng học tập và tiêu chuẩn hoàn thành. Baseline của toàn khóa là Laravel 13 và PHP 8.3 trở lên. Các lệnh hoặc tính năng ở bài sau sẽ được đối chiếu với tài liệu Laravel 13 tại thời điểm viết; không nên áp dụng máy móc hướng dẫn dành cho major version cũ.

1. Khóa học dành cho ai?

Lộ trình phù hợp nhất với người đã biết cú pháp PHP nhưng chưa từng đưa một ứng dụng Laravel đi hết từ ý tưởng đến production. Lập trình viên đã dùng framework khác cũng có thể theo học để hiểu các quy ước, công cụ và cách tổ chức ứng dụng trong hệ sinh thái Laravel. Người đã làm Laravel ở mức CRUD sẽ hưởng lợi nếu muốn hệ thống hóa authorization, transaction, queue, test, CI, deploy và vận hành.

  • Người mới với Laravel: cần một đường đi tuần tự và một dự án đủ thực tế để hiểu vì sao framework cung cấp routing, middleware, validation, Eloquent, queue và service container.
  • Lập trình viên PHP: muốn chuyển từ script hoặc ứng dụng tự tổ chức sang framework có quy ước, kiểm thử và quy trình phát hành rõ ràng.
  • Backend developer: muốn dùng Laravel làm API backend cho SPA, mobile hoặc client khác, đồng thời giữ các nguyên tắc về contract, authentication và lỗi API.
  • Full-stack developer: muốn xây sản phẩm server-rendered với Blade, component và Vite trước khi cân nhắc Livewire, Inertia hoặc một frontend tách rời.
  • Nhóm kỹ thuật nhỏ: cần một chuẩn chung về Git, review, migration, test và checklist release.

Khóa học không hứa rằng chỉ cần đọc hết là có thể trở thành senior developer, nhận việc ngay hoặc vận hành mọi hệ thống quy mô lớn. Năng lực còn phụ thuộc vào nền tảng, thời gian luyện tập, chất lượng phản hồi và số lần bạn tự chẩn đoán lỗi. Kết quả thực tế mà series hướng tới là một repository TaskFlow có lịch sử phát triển dễ kiểm tra và một người học có thể giải thích các quyết định của mình.

2. Kiến thức và công cụ cần có trước khi bắt đầu

Bạn không cần thuộc mọi tính năng PHP, nhưng phải đọc được class, method, array, exception và type declaration. Hãy ôn object-oriented programming, namespace, interface, dependency cơ bản, HTTP request/response, HTML form, JSON, SQL và các thao tác Git thường dùng. Việc hiểu cookie, session, status code và quan hệ dữ liệu sẽ giúp bạn không nhầm cơ chế web với “phép màu” của framework.

Môi trường tối thiểu cần PHP 8.3+ cùng các PHP extension mà tài liệu deployment Laravel 13 liệt kê, Composer, Git, một database được Laravel hỗ trợ và Node.js/npm nếu học nhánh full-stack có Vite. Bạn cần terminal, editor hoặc IDE, trình duyệt và khả năng đọc log. Docker, Laravel Sail hoặc Laravel Herd có thể hữu ích, nhưng series không coi một công cụ cụ thể là điều kiện duy nhất; mục tiêu là cả nhóm dùng một môi trường có thể tái tạo.

Nền tảngMức cần thiếtTự kiểm tra
PHP và OOPĐọc class, interface, exception, type và Composer autoloadViết một class nhỏ, chạy bằng CLI và giải thích lỗi type
Web và HTTPPhân biệt GET/POST, header, cookie, session, JSON và status codeDùng DevTools quan sát một request form và một request JSON
DatabaseBiết bảng, khóa chính, khóa ngoại, index và transaction ở mức nhập mônVẽ quan hệ user-project-task và giải thích ràng buộc chính
GitBiết clone, branch, add, commit, diff, pull và xử lý conflict nhỏTạo branch thử nghiệm rồi xem lại diff trước khi commit
Command lineDi chuyển thư mục, chạy chương trình, đọc exit code và biến môi trườngKiểm tra phiên bản công cụ mà không ghi secret vào terminal history
Nếu một mục còn yếu, hãy coi đó là phần chuẩn bị cần bù, không phải lý do bỏ cuộc. Ghi rõ lỗ hổng vào nhật ký học tập và dành một phiên ngắn để củng cố trước khi tiến sâu.

3. Baseline Laravel 13 và PHP 8.3+

Tài liệu release chính thức xác nhận Laravel 13 yêu cầu tối thiểu PHP 8.3. Trong repository của khóa học, constraint dependency phải thể hiện đúng major version đang học; không đổi major hoặc sao chép một lệnh nâng cấp nếu chưa đọc release notes và upgrade guide liên quan. Minor và patch có thể tiếp tục thay đổi trong vòng đời 13.x, vì vậy file khóa dependency và kết quả test quan trọng hơn việc hai máy vô tình cài cùng “bản mới nhất”.

Baseline không có nghĩa mọi bài đều dùng tất cả tính năng mới của Laravel 13. Series ưu tiên các nền tảng bền vững: request lifecycle, routing, middleware, configuration, service container, validation, Eloquent, authorization, queue, cache, test và deployment. Những tính năng mới theo từng bản sẽ được đặt đúng ngữ cảnh, không gắn nhãn Laravel 13 cho một khả năng chưa được tài liệu chính thức xác nhận.

  • Dùng tài liệu nhánh 13.x khi tra cứu, và kiểm tra lại URL nếu trang tự chuyển sang phiên bản khác.
  • Giữ composer.json cùng file khóa dependency trong Git để cài đặt có thể lặp lại.
  • Không commit .env, token, mật khẩu, khóa ứng dụng hoặc dữ liệu production.
  • Chạy test sau khi cập nhật dependency; đọc changelog thay vì giả định patch luôn vô can với ứng dụng.
  • Ghi phiên bản PHP, Composer, Node và database vào tài liệu onboarding của dự án.

4. TaskFlow là dự án gì?

TaskFlow là ứng dụng quản lý công việc theo workspace và project. Người dùng tham gia workspace, tạo project, tổ chức task, gán người phụ trách, đặt trạng thái và thời hạn, trao đổi bằng comment, sau đó theo dõi hoạt động quan trọng. Phạm vi đủ rộng để học quan hệ dữ liệu, validation, authorization, truy vấn, queue và test, nhưng vẫn có thể chia thành các lát dọc nhỏ.

Ta không cố biến TaskFlow thành bản sao của một sản phẩm thương mại. Những khả năng như billing, chat thời gian thực quy mô lớn, Gantt nâng cao hay hệ thống plugin không thuộc phiên bản học tập ban đầu. Mỗi tính năng chỉ được thêm khi nó phục vụ một mục tiêu học tập và có tiêu chí chấp nhận. Cách giới hạn này ngăn dự án phình to trước khi nền móng ổn định.

Vai trò và luồng nghiệp vụ chính

  • Thành viên: xem project mình được phép truy cập, tạo hoặc cập nhật task theo quyền, bình luận và hoàn thành công việc.
  • Quản trị workspace: quản lý thành viên, project và các quyền thuộc phạm vi workspace.
  • Luồng task: tạo task, gán người, đổi trạng thái, đặt deadline, thêm nhãn, bình luận và lưu dấu vết thay đổi quan trọng.
  • Thông báo: một số sự kiện có thể tạo notification hoặc job nền; mọi side effect phải kiểm thử được và không làm request chính khó hiểu.

Ngay từ đầu, hãy viết assumption. Ví dụ: một task thuộc đúng một project; project thuộc một workspace; membership quyết định người dùng có quyền nhìn dữ liệu của workspace; trạng thái task dùng tập giá trị hữu hạn. Assumption chưa phải schema cuối cùng, nhưng nó buộc nhóm nhận ra điều cần xác minh trước khi viết migration.

5. Kiến trúc chức năng của phiên bản học tập

Kiến trúc chức năng mô tả ranh giới hành vi trước khi nói đến folder hoặc pattern. TaskFlow được chia thành các năng lực sau; mỗi năng lực sẽ đi qua route hoặc API contract, validation, use case, persistence, authorization, response và test.

Năng lựcDữ liệu chínhĐiều phải chứng minh
Identity và accessUser, session hoặc tokenĐăng nhập đúng, request trái phép bị từ chối, secret không rò rỉ
Workspace membershipWorkspace, Membership, roleKhông đọc hoặc sửa dữ liệu của workspace khác
Project planningProject, member assignmentQuyền tạo/sửa rõ ràng, dữ liệu đầu vào hợp lệ
Task executionTask, status, priority, due date, assigneeTransition hợp lệ, truy vấn có index và không N+1
CollaborationComment, label, activityPolicy đúng, nội dung được validate, lịch sử có ý nghĩa
Async communicationNotification, queued jobRetry an toàn, failure quan sát được, test không phụ thuộc dịch vụ thật
OperationsLog, health, metric, backupCó tín hiệu chẩn đoán và quy trình phục hồi đã diễn tập

Trong code, controller nên xử lý giao thức và điều phối ở mức mỏng; validation thuộc Form Request hoặc boundary tương đương; policy bảo vệ hành động; model thể hiện dữ liệu và quan hệ; nghiệp vụ nhiều bước có thể được đưa vào action/service rõ tên. Đây là định hướng để giảm coupling, không phải mệnh lệnh tạo thêm một layer cho mọi câu lệnh CRUD.

6. Chọn full-stack Laravel hay Laravel làm API backend

Full-stack Laravel trong series nghĩa là cùng ứng dụng chịu trách nhiệm routing web, session, CSRF, render giao diện và xử lý dữ liệu. Nhánh cơ bản dùng Blade, component và Vite để người học thấy trọn request-response mà không phải vận hành hai codebase. Bạn vẫn có thể dùng Livewire hoặc Inertia sau khi hiểu ranh giới, nhưng chúng không thay thế kiến thức nền về HTTP, validation và authorization.

Laravel làm API backend nghĩa là Laravel cung cấp endpoint stateless hoặc endpoint phục vụ SPA/mobile, thường trả JSON và có contract rõ ràng. Frontend được triển khai như một client riêng hoặc một lớp riêng, nên cần quyết định authentication, CORS, CSRF cho SPA, versioning, error format và quy trình thay đổi contract. Tài liệu cài đặt Laravel chính thức phân biệt hai hướng này; route API có thể được cài thêm bằng cơ chế được tài liệu 13.x mô tả thay vì giả định luôn tồn tại trong mọi skeleton.

Quyết địnhFull-stack LaravelAPI backend
Giao diệnRender trong ứng dụng LaravelClient web/mobile tách biệt tiêu thụ JSON
Trạng thái webSession, cookie và CSRF là luồng mặc địnhToken hoặc cookie SPA tùy mô hình và tài liệu authentication
Độ phức tạp ban đầuÍt ranh giới deploy hơn, phù hợp học end-to-endCần quản lý contract và tích hợp giữa nhiều thành phần
Kiểm thửFeature test response, view và hành vi formFeature/contract test status, JSON shape và authorization
Khi phù hợpSản phẩm web tập trung, nhóm muốn tiến nhanh với một stackNhiều client hoặc frontend có vòng đời độc lập

TaskFlow sẽ dùng cùng domain để minh họa cả hai góc nhìn, nhưng người học nên chọn một đường chính cho bài tập. Không xây đồng thời hai giao diện chỉ để “đủ công nghệ”. Hoàn thiện một lát dọc có test tốt đem lại nhiều giá trị học tập hơn hai implementation dở dang.

7. Sáu chặng học và bằng chứng cần tạo

Manifest chia series thành sáu phần. Số bài có thể dài, nhưng đơn vị tiến bộ không phải số trang đã đọc mà là bằng chứng lưu trong repository.

  1. Phần A — Nền tảng ứng dụng: cài môi trường, hiểu cấu trúc dự án và request lifecycle, cấu hình, log, routing, controller, middleware, Blade/Vite, Form Request và CSRF. Bằng chứng là một lát dọc web nhỏ chạy được và có test.
  2. Phần B — Dữ liệu và truy vấn: migration, factory, seeder, Eloquent CRUD, relationship, eager loading, filter, pagination, transaction và concurrency. Bằng chứng là schema có rollback, dữ liệu mẫu và test cho invariant quan trọng.
  3. Phần C — Tổ chức nghiệp vụ: service container, dependency injection, action/service/DTO khi cần, event, listener, observer, exception, cache, rate limit và atomic lock. Bằng chứng là dependency rõ, lỗi có chủ đích và race quan trọng được xử lý.
  4. Phần D — Identity và bảo mật: authentication, starter kit, gate, policy, session, cookie, CSRF và checklist production. Bằng chứng là ma trận quyền cùng các negative test chống truy cập chéo.
  5. Phần E — API và tác vụ nền: resource, validation, Sanctum, queue, scheduler, mail, notification, upload và realtime khi phù hợp. Bằng chứng là API contract, job idempotent và failure có đường quan sát.
  6. Phần F — Chất lượng và vận hành: test tự động, CI, hiệu năng, deploy, worker, scheduler, monitoring, backup, dependency upgrade và tổng kết Laravel 13. Bằng chứng là pipeline cùng runbook triển khai/phục hồi.

Sau mỗi chặng, hãy tạo một demo ngắn và một retrospective: điều gì đã hiểu, quyết định nào thay đổi, lỗi nào từng xảy ra và nợ kỹ thuật nào được chấp nhận. Một screenshot chỉ chứng minh UI từng hiển thị; test, commit, log và tài liệu quyết định mới giúp người khác tái hiện.

8. Cách dùng series để học thật, không chỉ đọc

Mỗi bài nên được xử lý theo vòng lặp đọc — dự đoán — làm — kiểm tra — giải thích. Trước khi chạy lệnh, hãy dự đoán file nào thay đổi và request sẽ đi qua đâu. Sau khi code chạy, đọc diff và viết lại bằng ngôn ngữ của bạn. Nếu chỉ copy kết quả, bạn khó phát hiện lúc assumption của bài khác môi trường thực tế.

  1. Đọc mục tiêu, thuật ngữ và link chính thức trước khi sửa code.
  2. Tạo một branch nhỏ, ghi tiêu chí chấp nhận và test case dự kiến.
  3. Thực hiện theo từng lát dọc; tránh gom migration, UI, API và refactor lớn trong một bước không kiểm soát.
  4. Chạy test liên quan, formatter hoặc static analysis đã thống nhất; kiểm tra log khi có lỗi.
  5. Dùng git diff để tự review secret, file sinh tự động, debug code và thay đổi ngoài phạm vi.
  6. Ghi một note giải thích quyết định, trade-off và câu hỏi chưa trả lời.
  7. Chỉ chuyển bài khi tiêu chuẩn hoàn thành đã đạt hoặc phần thiếu được ghi rõ như một backlog có chủ đích.

Khi gặp lỗi, đừng xóa project rồi làm lại ngay. Lưu message, xác định bước tái hiện tối thiểu, đọc stack trace từ ngoại lệ gốc, kiểm tra configuration và viết test hồi quy khi thích hợp. Khả năng chẩn đoán được hình thành từ những phiên như vậy.

9. Tiêu chuẩn hoàn thành khóa học

“Chạy được trên máy em” không đủ. Một TaskFlow hoàn thành ở mức khóa học cần đáp ứng các tiêu chí có thể kiểm chứng dưới đây. Chúng không đảm bảo sản phẩm sẵn sàng cho mọi quy mô production, nhưng tạo một baseline trung thực để tiếp tục phát triển.

  • Repository mới có thể được thiết lập từ README mà không cần chia sẻ secret; dependency được khóa và baseline phiên bản được ghi rõ.
  • Các luồng chính về workspace, project, task và collaboration đáp ứng acceptance criteria đã viết.
  • Validation, authentication và authorization được đặt ở boundary phù hợp; có test cho happy path lẫn hành vi bị từ chối.
  • Migration có thể chạy trên database sạch; seed/factory phục vụ development và test; rollback quan trọng đã được cân nhắc.
  • Truy vấn chính tránh N+1 đã biết, có pagination hoặc giới hạn hợp lý, và transaction bảo vệ invariant nhiều bước khi cần.
  • Job nền có chính sách retry/failure rõ ràng; side effect quan trọng được thiết kế idempotent hoặc có cách reconcile.
  • Test suite chạy ổn định trên máy sạch và CI; lỗi test không bị che bằng việc bỏ assertion hoặc skip tùy tiện.
  • Production configuration không bật debug, web server trỏ vào thư mục public, worker/scheduler được quản lý và health check có người tiêu thụ.
  • Có runbook deploy, rollback, backup và restore; ít nhất một lần restore được diễn tập trong môi trường an toàn.
  • Người học có thể trình bày vì sao chọn full-stack hoặc API backend, mô tả request lifecycle và nêu giới hạn còn lại của hệ thống.

10. Quản lý source và lịch sử Git

Giữ một repository TaskFlow chính làm nguồn sự thật. Commit cả source, migration, test, tài liệu và lockfile cần thiết; bỏ qua dependency cài cục bộ, cache, log, build artifact không cần lưu và file môi trường chứa secret. Cung cấp .env.example chỉ với tên biến và giá trị giả an toàn. Nếu secret từng bị commit, xóa file khỏi commit mới là chưa đủ: phải thu hồi hoặc xoay secret và xử lý lịch sử theo quy trình của nhóm.

Mỗi branch nên giải quyết một mục tiêu nhỏ, ví dụ feature/task-status hoặc test/workspace-isolation. Commit message mô tả thay đổi và lý do, không dùng chuỗi mơ hồ như “update”. Trước khi merge, rebase hay squash theo convention của nhóm, nhưng luôn giữ test xanh và tránh force-push vào nhánh được bảo vệ. Tag các mốc quan trọng nếu muốn quay lại so sánh sau từng phần.

  • Kiểm tra git status trước và sau phiên làm việc.
  • Đọc từng hunk trong git diff; không dùng git add . theo phản xạ khi workspace có file ngoài phạm vi.
  • Không commit database dump chứa dữ liệu thật, file upload người dùng, log có thông tin nhạy cảm hoặc credential.
  • Tách refactor cơ học khỏi thay đổi hành vi khi có thể để review và rollback dễ hơn.
  • Liên kết commit hoặc pull request với acceptance criteria và bằng chứng test.

11. Bài tập chuẩn bị môi trường

Bài tập của bài mở đầu là tạo một “environment report” có thể chia sẻ an toàn, chưa cần cài ứng dụng Laravel nếu bạn muốn chờ hướng dẫn chi tiết ở bài 2. Không dán toàn bộ biến môi trường hoặc cấu hình chứa token vào báo cáo.

  1. Tạo thư mục làm việc và một repository Git trống dành riêng cho TaskFlow; thêm README mô tả mục tiêu học tập của bạn.
  2. Chạy php -v, composer --version, git --version, node --versionnpm --version; ghi phiên bản, hệ điều hành và cách cài đặt.
  3. Chạy php -m, đối chiếu extension với mục Server Requirements trong tài liệu deployment Laravel 13. Chỉ ghi extension thiếu, không sao chép dữ liệu nhạy cảm.
  4. Chọn SQLite, MySQL hoặc PostgreSQL cho môi trường học; xác nhận bạn có thể kết nối bằng tài khoản development có quyền tối thiểu phù hợp.
  5. Chọn hướng chính: full-stack Laravel hoặc API backend. Viết ba lý do gắn với loại client, kỹ năng muốn học và cách triển khai.
  6. Vẽ sơ đồ đơn giản cho User, Workspace, Membership, Project và Task; đánh dấu các assumption cần xác minh ở bài dữ liệu.
  7. Viết năm acceptance criteria cho lát dọc đầu tiên, trong đó có ít nhất một trường hợp không đủ quyền.
  8. Commit README và tài liệu chuẩn bị bằng một commit có nội dung rõ ràng; tự kiểm tra diff trước commit.

Nếu một công cụ chưa đạt baseline, ghi trạng thái “blocked”, thông báo lỗi và cách bạn định xử lý. Đừng thay đổi ngẫu nhiên nhiều phiên bản cùng lúc. Một báo cáo tốt giúp bài cài đặt tiếp theo bắt đầu từ dữ kiện thay vì phỏng đoán.

12. Checklist trước khi sang bài tiếp theo

  • [ ] Tôi hiểu đối tượng, phạm vi và điều series không hứa hẹn.
  • [ ] Máy có PHP 8.3+ hoặc tôi đã ghi rõ kế hoạch nâng cấp an toàn.
  • [ ] Tôi đã kiểm tra Composer, Git, Node/npm và các PHP extension cần thiết.
  • [ ] Tôi đã chọn database development và không dùng credential production.
  • [ ] Tôi phân biệt được full-stack Laravel với Laravel làm API backend.
  • [ ] Tôi đã chọn một hướng triển khai chính cho TaskFlow.
  • [ ] Tôi có repository riêng, README, quy tắc secret và lịch sử commit đầu tiên.
  • [ ] Tôi đã phác thảo domain cùng acceptance criteria, bao gồm một negative case.
  • [ ] Tôi biết mỗi chặng phải tạo bằng chứng nào thay vì chỉ đánh dấu đã đọc.
  • [ ] Tôi đã lưu link tài liệu Laravel 13 chính thức để đối chiếu trong các bài sau.

Bài tiếp theo

Bài 2: Cài đặt Laravel 13 và môi trường phát triển. Bài này chưa gắn liên kết vì bài 2 chưa được xuất bản.

Nguồn chính thức

Điều hướng khóa học Laravel 13

Bài sau (02) · Mục lục trọn bộ 37 bài

Thảo luận

Bình luận 0

Đăng nhập để bình luận

Bạn cần có tài khoản để tham gia thảo luận và trả lời độc giả khác.

Đăng nhậpĐăng ký

Chưa có bình luận. Hãy là người đầu tiên chia sẻ ý kiến.