Bỏ qua để đến Nội dung

Build Phần Mềm Custom Bằng Claude Code, Quy Trình 7 Bước Thực Chiến

Quy trình build phần mềm custom bằng Claude Code, 7 bước từ spec đến production

Cuối 2024, mình nhận một brief: "Em cần phần mềm quản lý sales qua Zalo, tích hợp OA, có dashboard realtime." Estimate ban đầu của team outsource: 8-10 tháng, 200-300 triệu. Kết quả thực tế dùng Claude Code: 3 tháng, chi phí thấp hơn khoảng 70%, và quan trọng hơn, mình kiểm soát hoàn toàn codebase.

Bài này là bản ghi lại quy trình đó, đã được refine qua 4 dự án phần mềm custom tiếp theo. Không phải tutorial "hello world", mà là flow thực chiến cho doanh nghiệp SME muốn tự build hoặc supervise đội kỹ thuật.

Key Takeaways - 76% developer đã hoặc đang lên kế hoạch dùng AI coding tool trong workflow (Stack Overflow Developer Survey 2024). Quy trình 7 bước biến lợi thế tốc độ này thành phần mềm có thể bảo trì. - GitHub research đo được dev hoàn thành task nhanh hơn 55% khi dùng AI assistant (GitHub, 2022). Bước 3-5 (Scaffold, Feature Loop, Testing) hưởng lợi nhiều nhất. - Bước 1-2 và 7 vẫn cần human judgment, đặc biệt domain knowledge của doanh nghiệp Việt Nam.

Trước khi đọc: nếu bạn chưa quen Claude Code là công cụ gì, đọc qua Claude Code là gì? So sánh với Cursor và Copilot, bài đó giải thích architecture và workflow cơ bản.


Mục lục

  1. Tại sao phần mềm custom lại cần quy trình riêng?
  2. Bước 1: Viết spec đúng cho AI thế nào?
  3. Bước 2: Chọn architecture stack ra sao?
  4. Bước 3: Project Scaffold, khởi tạo codebase
  5. Bước 4: Feature Loop hoạt động như thế nào?
  6. Bước 5: Testing layer, viết test gì cho đủ?
  7. Bước 6: Refactor pass trước production
  8. Bước 7: Deploy và Handoff
  9. Những sai lầm thường gặp
  10. FAQ

Tại sao phần mềm custom lại cần quy trình riêng?

Phần mềm custom doanh nghiệp đòi hỏi quy trình rõ ràng vì 3 lý do: domain logic phức tạp, vòng đời nhiều năm, và surface tích hợp lớn. Theo DORA 2024 State of DevOps Report, team áp dụng AI coding tool có throughput tăng nhưng instability cũng tăng nếu thiếu quy trình review. Một flow chuẩn hóa biến tốc độ AI thành code maintainable.

Nhiều người dùng Claude Code theo kiểu "hỏi đâu code đó", prompt từng tính năng riêng lẻ, không có cấu trúc. Sau 2-3 tuần có đống code không kết nối được với nhau, style lộn xộn, không test được.

Phần mềm custom đặc biệt nhạy cảm vì:

  • Domain complexity cao: Quy trình nghiệp vụ của từng doanh nghiệp khác nhau hoàn toàn. Claude không tự biết logic riêng của bạn.
  • Long-term maintainability: Khác side project, phần mềm doanh nghiệp cần chạy và phát triển nhiều năm.
  • Integration surface lớn: Kết nối với CRM, kế toán, Zalo, email. Càng nhiều điểm tích hợp thì càng cần architecture rõ ràng.

Quy trình 7 bước dưới đây giải quyết đúng 3 vấn đề này. Bạn đã sẵn sàng chưa? Bắt đầu từ bước 1.


Bước 1: Viết spec đúng cho AI thế nào?

Spec tốt = code tốt. Theo GitHub research 2022, developer dùng AI assistant hoàn thành task nhanh hơn 55% khi context được cung cấp đầy đủ. Claude Code cũng vậy. Nó sẽ làm tốt hơn nhiều nếu hiểu ngữ cảnh nghiệp vụ, không chỉ yêu cầu kỹ thuật. Spec mơ hồ luôn ra code mơ hồ.

Template spec phần mềm custom: cấu trúc context doanh nghiệp, must-have features, data model

Template spec mình dùng:

# Product Spec: [Tên phần mềm]

## Context doanh nghiệp
- Loại hình: B2B SaaS / nội bộ / marketplace
- Người dùng chính: [role, số lượng, technical level]
- Quy trình nghiệp vụ hiện tại: [mô tả flow thủ công đang làm]
- Pain point lớn nhất: [1-2 câu cụ thể]

## Must-have features (MVP)
1. [Feature A] - User story: "Là [role], tôi muốn [action] để [kết quả]"
2. [Feature B] - ...

## Nice-to-have (V2+)
- ...

## Out of scope
- [Những gì KHÔNG làm trong dự án này]

## Data model sơ bộ
- Entity 1: [field list]
- Entity 2: ...
- Relationships: ...

## Constraints
- Budget API/hosting: [con số]
- Timeline: [deadline cứng nếu có]
- Compliance: [GDPR, dữ liệu nội địa VN, etc.]

Mẹo quan trọng: Phần "Out of scope" thường bị bỏ qua nhưng cực kỳ quan trọng. Không có nó, Claude hay đề xuất feature "thêm cho đầy đủ" làm scope creep từ tháng 1. Trong kinh nghiệm của mình, ZaloCRM ban đầu có 12 feature MVP, sau khi liệt kê "out of scope" rút còn 7. Ship sớm hơn 5 tuần.


Bước 2: Chọn architecture stack ra sao?

Architecture quyết định 80% cost vận hành 3 năm tới. Theo Stack Overflow Developer Survey 2024, PostgreSQL là database được yêu thích nhất 4 năm liên tiếp với 49% dev sử dụng. Đưa spec vào Claude Code (mode architect) để it đề xuất stack, sau đó bạn quyết định dựa trên team capacity và compliance.

Prompt mẫu:

claude --model opus

"Dựa trên spec này [paste spec], hãy:
1. Đề xuất 2-3 tech stack phù hợp
2. Phân tích pros/cons của mỗi stack với context doanh nghiệp VN (latency, cost, talent pool)
3. Recommend stack cuối cùng và giải thích tại sao
4. Sketch sơ bộ folder structure"

Cho dự án ZaloCRM, Claude đề xuất và mình chọn:

Stack được chọn:
- Backend: Node.js + TypeScript + Fastify (nhanh hơn Express 2-3x)
- Database: PostgreSQL + Prisma ORM
- Queue: BullMQ (Redis), cho async Zalo messaging
- Frontend: Next.js 14 (App Router)
- Auth: Lucia auth + Zalo OAuth
- Deploy: Railway (simple, giá rẻ, VN latency ổn)

Folder structure:
apps/
  api/          # Fastify backend
  web/          # Next.js frontend
packages/
  db/           # Prisma schema + migrations
  zalo/         # Zalo SDK wrapper
  shared/       # Types shared giữa api + web

Sơ đồ architecture phần mềm custom: từ spec đến tech stack đến deployment

Sai lầm cần tránh ở bước này: Chọn stack theo trend, không theo team capacity. Nếu team bạn toàn Python dev, đừng để Claude thuyết phục bạn dùng Go chỉ vì nó nhanh hơn. Mình đã thấy 2 dự án phải rewrite vì lý do này.


Bước 3: Project Scaffold, khởi tạo codebase

Scaffold là khâu Claude Code làm tốt nhất. Theo GitHub Octoverse 2024, số lượng repo TypeScript tăng 37% năm 2024, phần lớn là boilerplate được sinh tự động. Đầu tư 30-60 phút scaffold đúng giúp tiết kiệm hàng tuần debug cấu trúc sau này.

Sau khi chốt stack, dùng Claude Code để scaffold toàn bộ boilerplate:

# Khởi tạo session Claude Code trong thư mục project
cd your-project
claude

# Trong session Claude Code:
> "Scaffold dự án theo folder structure này [paste structure].
  Tạo: package.json, tsconfig, .env.example, Dockerfile,
  Prisma schema cơ bản với 3 model đầu tiên [User, Contact, Deal],
  Fastify app với health check endpoint,
  Prettier + ESLint config chuẩn TypeScript.
  Đừng viết business logic, chỉ cần boilerplate sạch chạy được."

Scaffold phase thường mất 30-60 phút với Claude Code. Kết quả: một codebase compile được, test được, deploy được, nhưng chưa có tính năng gì.

Verify scaffold xong:

npm install && npm run build  # phải build clean, 0 errors
npm run dev                   # server khởi động được
curl http://localhost:3000/health  # {"status":"ok"}

Nếu build fail ở bước này, dừng lại fix ngay. Đừng để debt cấu hình tích tụ qua nhiều feature.


Bước 4: Feature Loop hoạt động như thế nào?

Feature loop chiếm 60-70% thời gian dự án và là nơi prompting kỹ năng tạo khác biệt lớn. Theo Anthropic Engineering Blog (2025), pattern "plan-code-test-commit" cho ra code có ít bug regression hơn so với code monolith được generate một lượt. Mỗi feature làm theo mini-loop:

Plan -> Code -> Test manual -> Fix -> Commit

Prompt pattern hiệu quả nhất cho feature loop:

"Implement [feature name].

Context:
- Existing code: [list relevant files]
- Related models: [User, Contact, Deal]
- Business rule: [mô tả logic nghiệp vụ cụ thể]

Acceptance criteria:
1. API endpoint POST /contacts tạo contact mới
2. Validate: phone required + unique, name required
3. Tự động tạo Deal với stage='new_lead' khi contact tạo
4. Emit event 'contact.created' để queue gửi Zalo welcome message

Code style: TypeScript strict, async/await, throw AppError class cho lỗi.
Test file: viết unit test cho business logic (không cần test HTTP layer)."

Một số lưu ý về feature loop với Claude Code:

Thứ nhất, commit sau mỗi feature nhỏ. Đừng để Claude code 3-4 features liên tiếp rồi mới commit. Nếu có bug, bạn sẽ không biết feature nào gây ra.

Thứ hai, đọc code trước khi chấp nhận. Claude hay viết code đúng logic nhưng bỏ qua edge case. Ví dụ: không xử lý concurrent request tạo contact trùng số điện thoại (race condition).

Thứ ba, giữ CLAUDE.md trong project. File này cho Claude biết coding convention, business rule, và những quyết định architecture đã chốt. Đầu tư 30 phút viết file này tiết kiệm nhiều giờ giải thích lặp đi lặp lại.

# CLAUDE.md, Project Rules

## Business Rules
- Phone number: always stored as international format (84XXXXXXXXX, no +)
- All money values: stored as integer (VND cents), display divided by 100
- Soft delete only: never hard delete Contact or Deal records

## Code Conventions
- Error handling: throw AppError(message, statusCode), never throw raw Error
- Database: always use transaction when modifying >1 table
- Logging: use structured logger, never console.log in production code

Bước 5: Testing layer, viết test gì cho đủ?

Test không phải optional với phần mềm doanh nghiệp. Theo Stack Overflow Developer Survey 2024, 82% professional developer xác nhận testing là một phần không thể tách rời của workflow họ. Mình dùng Claude Code generate test, nhưng theo strategy phân tầng rõ ràng. Đừng test mọi thứ, hãy test thứ thật sự gãy.

Testing pyramid phần mềm custom: unit, integration, E2E với coverage targets

Unit tests:    Business logic functions (service layer), ~70% coverage
Integration:   API endpoints + database, happy path + 2-3 error case
E2E:           Critical user flows, login -> tạo deal -> chốt deal

Prompt generate test hiệu quả:

"Viết unit tests cho ContactService.createContact():
- File: apps/api/src/contacts/__tests__/contact.service.test.ts
- Test framework: Vitest + @faker-js/faker
- Cần cover:
  1. Happy path: tạo contact thành công
  2. Error: phone đã tồn tại -> throw AppError 409
  3. Error: phone format sai -> throw AppError 400
  4. Side effect: verify event 'contact.created' được emit
- Mock: prisma client, event emitter
- Đừng mock business logic, chỉ mock external dependencies"

Tip thực tế: cho Claude xem 1-2 test file có sẵn để nó học style trước khi sinh test mới. Coverage tăng đều khi style consistent.


Bước 6: Refactor pass trước production

Refactor là khâu hay bị skip nhưng quyết định cost bảo trì 12 tháng tới. Theo nghiên cứu của DORA 2024, elite team có change failure rate dưới 5% nhờ dành thời gian cleanup giữa các phase phát triển. Sau khi tất cả feature hoạt động và test pass, dành 1-2 ngày chỉ để refactor, không thêm feature mới.

> "Review toàn bộ apps/api/src/ và identify:
  1. Code duplication (>5 dòng lặp lại >=3 lần)
  2. Functions dài hơn 50 dòng nên tách
  3. Any/unknown types cần type đúng
  4. Missing error handling
  5. N+1 query patterns trong Prisma

  Output: danh sách issues ưu tiên theo impact,
  đừng tự sửa, chỉ report để mình review trước."

Tại sao yêu cầu Claude report trước, sửa sau? Vì refactor sai có thể phá test pass đang có. Mình review từng issue, chốt cái nào sửa, sau đó mới cho Claude apply. Quy tắc: 1 commit = 1 issue được fix.

Workflow 7 bước build phần mềm custom với Claude Code từ spec đến production


Bước 7: Deploy và Handoff

Deploy là điểm yếu của AI coding tool, vẫn cần human review nghiêm túc. Theo State of DevOps 2024, team có deployment frequency cao nhất giữ change failure rate dưới 5% bằng cách tự động hóa kiểm tra trước khi release. Claude Code có thể generate checklist nhưng người duyệt deploy phải hiểu hệ thống.

Checklist deploy với Claude Code:

# Generate production checklist
> "Tạo deployment checklist cho stack Node.js + PostgreSQL + Railway.
   Include: environment variables cần set, database migration steps,
   health check endpoints, monitoring alerts cần cài,
   rollback procedure nếu deploy fail."

Mình deploy ZaloCRM lên Railway. Cost khoảng $20-30/tháng cho production traffic nhỏ, scale tự động, không cần quản lý server. Phù hợp cho phần mềm nội bộ SME. Với traffic lớn hơn, chuyển sang Fly.io hoặc tự host VPS có ECONOMICS tốt hơn.

Handoff documentation: Dùng Claude Code generate: - README.md với setup instructions - Architecture Decision Records (ADR) cho các quyết định quan trọng - API documentation từ code (TypeDoc hoặc OpenAPI)

Đọc thêm về cách tích hợp phần mềm custom với Odoo ERP nếu bạn cần kết nối với hệ thống quản trị doanh nghiệp.


Những sai lầm thường gặp

1. Bỏ qua bước spec. Đây là sai lầm tốn kém nhất. Không có spec rõ ràng, Claude code đúng kỹ thuật nhưng sai nghiệp vụ. Refactor sau tốn gấp 3 lần.

2. Dùng context window như bộ nhớ. Claude không nhớ conversation cũ. Sau mỗi session dài, re-brief context quan trọng. CLAUDE.md giải quyết 80% vấn đề này.

3. Skip code review. Claude thi thoảng viết code có security issue (SQL injection nếu bạn không dùng ORM đúng cách, hoặc miss input validation). Theo OWASP Top 10 (2021), injection và broken access control vẫn nằm top. Luôn review trước khi merge.

4. Over-engineer sớm. Claude hay suggest microservices, Redis cache, message queue từ ngày 1. Với MVP dưới 100 users, monolith PostgreSQL là đủ. YAGNI.


FAQ

Q1: Không biết code có dùng được quy trình này không?

Được, nhưng cần người review code ở bước 4 và 6. Theo Stack Overflow 2024, 76% developer đã hoặc đang lên kế hoạch dùng AI tool. Nếu bạn là non-technical founder, thuê 1 developer part-time làm "code reviewer" rẻ hơn nhiều so với outsource full project. Claude Code làm 70% công việc, developer human làm 30% còn lại.

Q2: Mất bao lâu để build phần mềm theo quy trình này?

MVP đơn giản (5-10 tính năng) cần 4-8 tuần với 1 developer + Claude Code. So với outsource truyền thống thường 3-6 tháng cho cùng scope. Phần mềm phức tạp (ZaloCRM với 30+ tính năng) cần 3-4 tháng. Số liệu phù hợp với benchmark của GitHub research, task hoàn thành nhanh hơn 55% với AI assistant.

Q3: Chi phí so với thuê outsource?

Claude Code API cost cho 1 dự án 3 tháng: $200-500 (tuỳ model và token usage). Cộng developer cost nếu cần. Tổng thường thấp hơn outsource 60-75%. Theo McKinsey State of AI 2024, 65% organization dùng generative AI báo cáo cost reduction trong các function technology liên quan.

Q4: Claude Code có support tiếng Việt cho comment/documentation không?

Có. Mình luôn prompt bằng tiếng Việt, Claude viết comment và documentation tiếng Việt tốt. Chỉ cần chỉ định rõ trong CLAUDE.md: "Comments: tiếng Việt, code: English". Theo nội bộ team, tỷ lệ comment tự nhiên ngữ pháp đúng đạt khoảng 95% trên 5 dự án thực tế.

Q5: Cần dùng model nào, Sonnet hay Opus?

Bước 1-2 (spec, architecture) nên dùng Opus 4.7 vì cần suy luận sâu. Bước 3-5 (code, test) dùng Sonnet 4.6 đủ tốt, nhanh hơn, rẻ hơn. Tỷ lệ thực tế mình dùng: 80% Sonnet, 20% Opus. Anthropic công bố Sonnet 4.6 có tốc độ output nhanh hơn Opus khoảng 2x với mức cost thấp hơn 5x.

Q6: Có thể áp dụng cho phần mềm trong ngành cụ thể như logistics, BĐS không?

Được. Key insight: domain logic phức tạp hơn thì spec phải chi tiết hơn. Với logistics (tracking, routing) hay BĐS (hợp đồng pháp lý, thuế), bước spec cần thêm 1-2 ngày để document đầy đủ nghiệp vụ trước khi giao Claude code. Mình đã áp dụng quy trình này cho 1 startup logistics và 1 nền tảng BĐS, kết quả tương đương ZaloCRM về timeline.


Kết luận

Quy trình 7 bước này không phải magic. Claude Code vẫn viết code có bug, vẫn cần human review, vẫn cần architecture decision của người hiểu nghiệp vụ. Điều nó làm được là giảm 55-70% thời gian viết code lặp đi lặp lại (GitHub research, 2022) như boilerplate, CRUD, test generation, để bạn tập trung vào phần tạo ra giá trị thực sự.

ZaloCRM là bằng chứng cụ thể nhất mình có. Mình đang dùng quy trình tương tự cho 3 dự án phần mềm nội bộ khác.

Quay về hub: Phần mềm Custom, Toàn bộ guide

Đọc tiếp trong cluster: - Claude AI trong quy trình doanh nghiệp, 5 use case - Claude Free vs Pro vs Team, So sánh đầy đủ - Claude AI cho data analysis - Claude Code là gì? So sánh với Cursor và Copilot

Tích hợp ERP: Nhiều phần mềm custom cần kết nối với Odoo ERP. Mình có hướng dẫn chi tiết về API bridge giữa custom app và Odoo modules.


Tác giả: Loc Nguyen Data Team, Đội ngũ tư vấn chuyển đổi số và AI integration cho SME Việt. Quy trình này được distill từ 5 dự án phần mềm custom thực tế 2024-2026.

Cập nhật lần cuối: 30/04/2026.

trong Claude AI
Cài Đặt ZaloCRM Step By Step, Từ Zero Đến Chạy Trong 30 Phút