Avatar

Boilerplate #1: Sản phẩm mới

2 phút đọc

Trong quá trình build các sản phẩm cá nhân, tôi nhận ra một nghịch lý mà bản thân luôn gặp phải, đó là:

“Tính năng ăn tiền thì xong rồi, nhưng sản phẩm vẫn chưa thể launch”

Lý do thì cực kì đơn giản: Tôi bị kẹt lại ở những bước rườm rà như làm Authenticate, Profile hay tích hợp Payment. Kết quả là tôi có một mớ sản phẩm “suýt” hoàn thiện trong máy tính.

Về mặt kỹ thuật, các tính năng này không quá phức tạp. Bạn có thể tận dụng sự hỗ trợ của hàng tá thư viện, service miễn phí rồi trả phí để làm. Nhưng về mặt cảm hứng thì không, cứ làm đến đây là tôi bắt đầu… chán, khiến các dự án “tâm huyết” cứ thế đắp chiếu chờ launch.

Để chấm dứt tình trạng này, tôi đã chọn một hướng đi mới: Thay vì làm sản phẩm để giải quyết vấn đề của người khác, tôi sẽ giải quyết vấn đề của bản thân. Một SaaS boilerplate tập hợp những tính năng “lười làm” nhưng bắt buộc phải có.

Hệ thống sẽ đơn giản gồm các thành phần như sau:

Frontend

Chúng ta sẽ có 1 frontend app bao gồm landing page, admin portal và user portal. 3 page này là đủ cho nhu cầu của 1 saas cơ bản, với landing page phục vụ marketing, admin/user portal cung cấp các tính năng dành riêng cho admin và người dùng.

Backend

Ở phía backend sẽ gồm backend app, database và cache, tích hợp với 1 payment provider bên thứ 3.

Có thể sẽ cân nhắc thêm các thành phần hỗ trợ logging và metrics (tùy chọn).

Infrastructure

Reverse proxy sẽ nhận request từ trình duyệt của người dùng, route tới frontend hoặc backend tương ứng, đồng thời xử lý SSL.

Frontend app và backend app sẽ triển khai trên 2 domain khác nhau (sub-domain) thay vì sử dụng sub-path. Lựa chọn này khiến tôi phải giải quyết vấn đề CORS, Cookie ngay từ đầu do frontend và backend khác origin, tuy nhiên đổi lại nó sẽ linh hoạt hơn nếu muốn tích hợp các client khác như mobile app hay các dịch vụ bên ngoài.

Mục tiêu của tôi là vừa hoàn thiện boilerplate, vừa luyện tập khả năng coding. Quá trình thực hiện sẽ được cập nhật trên blog. Giờ thì bắt đầu thôi.