Nhật ký.
Ghi chép từ thực chiến xây Rails SaaS với AI. Quy trình, đánh đổi, bài học.
2026.
Vol. 02Thêm semantic search vào app Rails với pgvector trong một cuối tuần
Embedding chỉ là một cột nữa, còn truy vấn là ORDER BY — không cần vector database, không cần SaaS. Quyết định chunking và dimension mới là thứ ngốn ngày thứ Bảy của bạn.
- #rails
- #pgvector
- #postgres
- #semantic search
- #ai
Routing LLM trong Rails: OpenRouter với chuỗi fallback và giới hạn ngân sách
Định tuyến lời gọi LLM qua OpenRouter bằng chuỗi fallback có thứ tự và một cổng chặn chi tiêu — chỉ cần một service object và file config, không cần gem.
- #rails
- #llm
- #openrouter
- #fallback
- #budget
Migration Rails zero-downtime: bốn nước đi xử lý 90% trường hợp
Một bộ quy tắc hiểu về locking để đổi schema Rails an toàn, kể cả lý do vì sao ADD COLUMN với default hằng số không còn rewrite bảng từ Postgres 11.
- #rails
- #postgres
- #migration
- #zero-downtime
- #devops
Mẫu multi-tenancy trong Rails: row-scoping, schema hay database per tenant
Bộ tiêu chí chọn giữa row-scoped, schema-per-tenant và database-per-tenant trong Rails — và cái giá phải trả khi một query quên rào chắn.
- #rails
- #multi-tenancy
- #postgres
- #saas
- #kiến trúc
Kamal vs Fly.io vs Render: rubric chọn deploy cho solo Rails founder
Bảng điểm 5 trục giúp solo Rails founder chọn giữa Kamal, Fly.io và Render khi tự vận hành app, DB và worker — không marketing fluff.
- #rails
- #deploy
- #kamal
- #fly.io
- #render
Devise vs Rodauth năm 2026: chọn auth cho một Rails app mới
Bộ tiêu chí 5 trục để chọn giữa Devise và Rodauth cho một SaaS Rails 8 green-field — kèm những đánh đổi bạn sẽ gánh ở ngày thứ 400.
- #rails
- #auth
- #devise
- #rodauth
- #saas
Hotwire hay React cho dashboard B2B SaaS: rubric của một Rails engineer
Năm câu hỏi tôi chấm điểm trước khi chọn Hotwire hay React SPA trên Rails API cho dashboard B2B SaaS — và những failure mode mỗi câu hỏi đang che giấu.
- #hotwire
- #react
- #rails
- #b2b-saas
- #kiến-trúc
Sidekiq hay Solid Queue năm 2026: khi nào nên chuyển, khi nào nên giữ
Bộ bốn câu hỏi để chọn giữa Sidekiq và Solid Queue trên Rails 8, kèm một luận điểm có thể phản biện về thời điểm việc chuyển đổi thực sự đáng công.
- #rails
- #sidekiq
- #solid-queue
- #background-jobs
- #saas
Báo giá trọn gói hay tính giờ cho MVP: bài toán phương sai mà ít ai chỉ ra
Chọn mô hình giá là chọn ai gánh rủi ro phương sai, không phải chọn rate. Đây là rubric tôi dùng trước khi báo giá một SaaS MVP, kèm ví dụ thực tế.
- #mvp
- #rails
- #saas
- #freelance
- #pricing
Agenda discovery call SaaS gói gọn trong 30 phút
Bảy block, mỗi block 3-5 phút, thay cho script tư vấn dài dòng — đây là agenda tôi chạy mỗi khi nhận discovery call từ solo founder.
- #saas
- #discovery call
- #solo founder
- #freelance
- #consulting
Thiết kế lại theo Atelier và chuyển chat sang Workers AI
Vứt thẩm mỹ glass-blur tím-AI để chọn hệ thống typography biên tập, rồi chuyển backend chat sang Cloudflare Workers AI trong một buổi chiều.
- #thiết-kế
- #ai
- #astro
- #cloudflare
RAG trên Postgres với pgvector: bỏ Pinecone, ship trên một box
Một setup Rails một box dùng pgvector và ruby_llm thay thế vector DB managed — 180 dòng code, 50k chunks, ba cú vấp.
- #rails
- #postgres
- #pgvector
- #rag
- #ruby-llm