backend-coding

Installation
SKILL.md

Backend Coding (Supabase)

Khi nào cần skill này (không phải mọi task)

Chỉ trigger khi task thực sự cần logic phía server, KHÔNG trigger cho task chỉ là CRUD đơn giản (Supabase client SDK trong Flutter tự query/insert/update trực tiếp là đủ, không cần viết gì thêm ở đây):

  • Phân quyền dữ liệu phức tạp hơn "user chỉ xem của mình" đơn giản → viết RLS policy.
  • Tính toán không thể tin client (giá, tổng tiền, áp dụng voucher, số dư ví) → Edge Function hoặc Postgres function, không tính ở Flutter rồi gửi kết quả lên.
  • Webhook từ bên thứ 3 (Momo callback, xác nhận thanh toán) → Edge Function nhận request, xác thực chữ ký, cập nhật DB.
  • Job chạy định kỳ (nhắc lịch hẹn, dọn dữ liệu cũ) → Supabase Cron + Edge Function.
  • Validate business rule mà RLS đơn thuần không diễn đạt được (ví dụ: không cho đặt lịch trùng giờ) → Postgres function/trigger hoặc Edge Function.

Thiết kế Schema (Postgres)

  1. Đọc delta spec (openspec/changes/<change-name>/specs/) để lấy Data Model - đây là nguồn field/bảng, không tự bịa thêm cột ngoài spec.
  2. Map 1-1 sang bảng Postgres, dùng đúng kiểu dữ liệu (text, numeric cho tiền - KHÔNG dùng float cho tiền, timestamptz cho thời gian, uuid cho khóa chính mặc định).
  3. Khai báo foreign key rõ ràng cho quan hệ 1-nhiều/nhiều-nhiều thay vì nhúng mảng JSON tùy tiện - tận dụng đúng thế mạnh quan hệ của Postgres so với NoSQL.
  4. Nếu delta spec đánh dấu "BREAKING" (đổi field bảng đã có dữ liệu) → chuyển qua schema-migration/SKILL.md trước, viết migration SQL (ALTER TABLE) thay vì DROP+CREATE lại.
Installs
11
First Seen
Aug 14, 2026
backend-coding — hoangsoft90/ai_skills