Giới thiệu dự án
Sự bùng nổ của xu hướng số hóa ẩm thực cùng phong trào tự nấu ăn tại gia đang thúc đẩy nhu cầu tìm kiếm các giải pháp quản lý và chia sẻ công thức thông minh. Theo báo cáo từ Kantar Worldpanel, hơn 72% người tiêu dùng thế hệ trẻ tại khu vực đô thị có xu hướng tự chế biến bữa ăn tại nhà để đảm bảo dinh dưỡng và an toàn thực phẩm, đồng thời hơn 65% trong số đó gặp khó khăn trong việc lên thực đơn từ những nguyên liệu sẵn có trong tủ lạnh.
Phần lớn các kênh thông tin hiện nay như mạng xã hội (Facebook, TikTok) hoặc các trang tin tức tổng hợp tồn tại nhiều bất cập: thông tin phân mảnh, thiếu định lượng chuẩn hóa, thao tác tìm kiếm phức tạp và không hỗ trợ truy cập ngoại tuyến (offline). Người dùng thường mất từ 15–20 phút chỉ để tìm kiếm một công thức phù hợp với nguyên liệu đang có, trong khi những người đam mê ẩm thực lại thiếu một nền tảng chuyên biệt có quy trình kiểm duyệt chất lượng để chia sẻ các sáng tạo ẩm thực của mình.
Đề tài "Xây dựng website và ứng dụng chia sẻ công thức nấu ăn Đậu Đậu" do nhóm sinh viên Phạm Tiến Hùng và Nguyễn Bá Thái (Khoa Công nghệ Thông tin – Trường Đại học Mở Hà Nội), dưới sự hướng dẫn của ThS. Nguyễn Thành Huy thực hiện, nhằm giải quyết triệt để các bài toán thực tiễn nêu trên.
HỆ THỐNG ĐẬU ĐẬU ECOSYSTEM
+----------------------------------------------------------------+
| Mobile Client (Android Java) <---> Web Client (HTML5/Blade) |
+----------------------------------------------------------------+
|
[ RESTful API Engine ]
|
+----------------------------------------------------------------+
| Phalcon Framework Core (PHP 7.3 C-Extension) |
+----------------------------------------------------------------+
|
+----------------------------------------------------------------+
| PostgreSQL 11 Database (ACID & Relational Model) |
+----------------------------------------------------------------+
Mục tiêu dự án
- Xây dựng hệ thống Backend API hiệu năng cao: Nghiên cứu và triển khai nền tảng máy chủ sử dụng PHP kết hợp Phalcon Framework – một C-extension framework có tốc độ thực thi nhanh và tối ưu bộ nhớ.
- Thiết kế cơ sở dữ liệu quan hệ chuẩn hóa: Xây dựng mô hình dữ liệu trên hệ quản trị cơ sở dữ liệu (DBMS) PostgreSQL nhằm quản lý cấu trúc đa thực thể gồm công thức, nguyên liệu, định lượng, danh mục và tương tác người dùng.
- Phát triển ứng dụng di động Android Native: Xây dựng ứng dụng Android với giao diện trực quan, hỗ trợ tra cứu nhanh, quản lý danh sách yêu thích và hỗ trợ lưu trữ cục bộ công thức để xem ngoại tuyến khi nấu nướng.
- Xây dựng cổng thông tin Web và hệ thống quản trị (Admin Dashboard): Cung cấp giao diện tương tác toàn diện cho người dùng đăng tải công thức đa phương tiện và công cụ phân quyền kiểm duyệt chặt chẽ cho quản trị viên.
Phương pháp tiếp cận và kết quả kỳ vọng
Hệ thống sử dụng kiến trúc phân tầng Client-Server dựa trên chuẩn giao tiếp RESTful API không trạng thái (stateless) kết hợp xác thực qua chuỗi định danh token (tokenid). Về mặt kỹ thuật, dự án hướng tới việc giảm độ trễ phản hồi API xuống dưới 150ms đối với các tác vụ đọc dữ liệu và dưới 200ms đối với các truy vấn tìm kiếm phức tạp theo nguyên liệu. Ứng dụng Android hướng tới dung lượng bộ nhớ cài đặt tối ưu (<15MB), đảm bảo khả năng tương thích từ hệ điều hành Android 5.0 (API 21) trở lên.
Phạm vi và giới hạn
Hệ thống tập trung vào nền tảng Web quản trị và ứng dụng Mobile trên hệ điều hành Android. Phạm vi dữ liệu phục vụ các món ăn gia đình và ẩm thực Việt Nam với định dạng chuẩn gồm các bước thực hiện, danh sách nguyên liệu có định lượng và ảnh minh họa. Ứng dụng trên nền tảng iOS và các thuật toán gợi ý thực đơn bằng trí tuệ nhân tạo (AI/ML) được xác định là hướng mở rộng ở giai đoạn tiếp theo.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Nghiên cứu so sánh giữa hệ thống Đậu Đậu và các giải pháp chia sẻ công thức ẩm thực phổ biến hiện nay:
| Tiêu chí so sánh |
Cookpad |
Nền tảng MXH / Diễn đàn ẩm thực |
Hệ thống Đậu Đậu |
| Tìm kiếm theo nguyên liệu |
Cơ bản, ưu tiên từ khóa chung |
Không có cấu trúc, tìm kiếm tự do |
Lọc đa tầng theo tổ hợp nguyên liệu (RAW_MATERIAL) |
| Cấu trúc dữ liệu công thức |
Bán cấu trúc, định lượng tự do |
Văn bản phi cấu trúc (Unstructured text) |
Chuẩn hóa 3NF: Bước làm (STEP), Định lượng (QUANTITATIVE) |
| Quy trình kiểm duyệt |
Hậu kiểm tự động |
Không kiểm duyệt nội dung kỹ thuật |
Tiền kiểm 2 lớp qua Admin Dashboard |
| Lưu trữ ngoại tuyến |
Giới hạn tài khoản trả phí |
Không hỗ trợ |
Hỗ trợ lưu trữ cục bộ trên thiết bị Android |
| Tối ưu tài nguyên máy chủ |
Kiến trúc Microservices phức tạp |
Phụ thuộc bên thứ ba |
Tối ưu bằng Phalcon C-extension + PostgreSQL |
Yêu cầu người dùng được phân loại theo mô hình MoSCoW:
- Must Have: Đăng ký/đăng nhập token-based, CRUD công thức (kèm ảnh, bước làm, nguyên liệu, định lượng), tìm kiếm theo tên/nguyên liệu/danh mục, phê duyệt bài viết từ Admin, đánh dấu (
BOOKMARK) và lưu trữ offline.
- Should Have: Hệ thống bình luận (
COMMENT), theo dõi người dùng (BOOKMARK_USER), đánh giá và báo cáo công thức vi phạm (SPAM_RECIPE).
- Could Have: Lịch sử công thức đã xem (
SEEN_RECIPE), phân loại nhóm đa cấp (CATEGORY_TYPE).
- Won't Have (v1.0): Thanh toán trực tuyến cho các lớp học nấu ăn, gợi ý thông minh dựa trên học sâu (Deep Learning).
Thiết kế hệ thống
Kiến trúc tổng thể của Đậu Đậu được tổ chức theo mô hình phân lớp rõ ràng:
graph TD
A[Android Client App] -->|HTTP/RESTful JSON| C[Nginx Reverse Proxy]
B[Web Client / Admin Portal] -->|HTTP/RESTful JSON| C
C --> D[Phalcon Framework MVC Backend]
D --> E[(PostgreSQL 11 Database)]
D --> F[Local Storage / File System]
subgraph Backend Core
D --> D1[Auth & Token Engine]
D --> D2[Recipe Processing Engine]
D --> D3[Search & Filter Module]
D --> D4[Moderation Module]
end
Technology Stack
- Backend API: PHP 7.3, Phalcon Framework 3.4 (triển khai dưới dạng C-extension tối ưu mã nguồn trực tiếp vào mã máy của máy chủ web).
- Database: PostgreSQL 11.5 với tính năng hỗ trợ quan hệ toàn vẹn, indexing B-Tree cho khóa ngoại và chuỗi văn bản.
- Mobile Client: Java 8 trên nền tảng Android SDK 28, thư viện xử lý đồ họa và mạng (Android Volley, Glide 4.9).
- Web Portal: HTML5, CSS3, JavaScript ES6, Bootstrap 4 framework.
- Web Server: Nginx 1.16 chạy trên hệ điều hành Ubuntu Server 18.04 LTS.
Thiết kế cơ sở dữ liệu quan hệ (Database Design)
Mô hình dữ liệu được chuẩn hóa ở dạng 3NF nhằm triệt tiêu hiện tượng dư thừa dữ liệu. Dưới đây là lược đồ cấu trúc các bảng cốt lõi của hệ thống:
-- Bảng tài khoản người dùng
CREATE TABLE "USER" (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
fullname VARCHAR(100),
email VARCHAR(100) UNIQUE NOT NULL,
phone VARCHAR(20),
avatar VARCHAR(255),
description TEXT,
role_id INT NOT NULL,
status_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Bảng công thức nấu ăn
CREATE TABLE RECIPE_COOK (
id SERIAL PRIMARY KEY,
user_id INT REFERENCES "USER"(id) ON DELETE CASCADE,
recipe_name VARCHAR(200) NOT NULL,
description TEXT,
cook_time INT, -- Thời gian tính bằng phút
serving_size INT,
video_url VARCHAR(255),
status_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Bảng nguyên liệu và định lượng cấu thành
CREATE TABLE RAW_MATERIAL (
id SERIAL PRIMARY KEY,
material_name VARCHAR(100) NOT NULL UNIQUE
);
CREATE TABLE QUANTITATIVE (
id SERIAL PRIMARY KEY,
recipe_id INT REFERENCES RECIPE_COOK(id) ON DELETE CASCADE,
material_id INT REFERENCES RAW_MATERIAL(id),
amount VARCHAR(50) NOT NULL,
unit VARCHAR(30) NOT NULL
);
-- Bảng các bước thực hiện chi tiết
CREATE TABLE STEP (
id SERIAL PRIMARY KEY,
recipe_id INT REFERENCES RECIPE_COOK(id) ON DELETE CASCADE,
step_number INT NOT NULL,
description TEXT NOT NULL,
image_url VARCHAR(255)
);
Thiết kế RESTful API
Hệ thống giao tiếp thông qua tập API chuẩn hóa với các endpoints tiêu biểu:
POST /api/v1/auth/login
Content-Type: application/json
Payload: {"username": "daudau_chef", "password": "hash_password"}
Response: {"status": 200, "tokenid": "a9f8b2c1-3d4e-4f5a-8b6c-7d8e9f0a1b2c", "user": {...}}
GET /api/v1/recipes/search?materials=thit_bo,hanh_tay&category_id=3
Headers: Authorization: Bearer <tokenid>
Response: {"status": 200, "total": 12, "data": [...]}
POST /api/v1/recipes/create
Headers: Authorization: Bearer <tokenid>
Content-Type: application/json
Payload: {
"recipe_name": "Bò sốt vang chuẩn vị",
"cook_time": 45,
"categories": [1, 4],
"materials": [{"material_id": 12, "amount": "500", "unit": "gram"}],
"steps": [{"step_number": 1, "description": "Sơ chế thịt bò...", "image_url": "/uploads/step1.jpg"}]
}
Kiến trúc bảo mật và kiểm soát hiệu năng
- Bảo mật xác thực: Mã hóa mật khẩu một chiều sử dụng thuật toán bcrypt. Hệ thống kiểm soát phiên làm việc thông qua
tokenid có cơ chế kiểm tra tính hợp lệ và thời gian sống (TTL).
- Phòng chống tấn công: Tận dụng triệt để ORM/PHQL của Phalcon để tham số hóa (parameterized queries), ngăn ngừa tấn công SQL Injection và cơ chế lọc dữ liệu đầu vào chống Cross-Site Scripting (XSS).
- Phân quyền người dùng (RBAC): Tách biệt quyền hạn giữa Người dùng cuối (End-user) và Quản trị viên (Admin) thông qua bảng quản lý quyền và trạng thái kiểm duyệt bài viết.
Phương pháp luận phát triển (Methodology)
Dự án áp dụng mô hình phát triển phần mềm lặp rút gọn (Iterative Development) với chu kỳ 2 tuần/sprint:
- Tuần 1–2: Khảo sát yêu cầu, thiết kế DFD (mức ngữ cảnh, mức đỉnh, mức dưới đỉnh) và mô hình ER.
- Tuần 3–5: Xây dựng cơ sở dữ liệu PostgreSQL, hiện thực hóa các module API trên nền Phalcon.
- Tuần 6–8: Lập trình ứng dụng Android Client và Web Portal.
- Tuần 9–10: Tích hợp kiểm thử liên thông (Integration Testing), tối ưu hóa truy vấn và đóng gói tài liệu.
Implementation và kết quả
Quá trình phát triển và thuật toán cốt lõi
Một trong những thuật toán quan trọng nhất của hệ thống là Thuật toán tìm kiếm giao thoa nguyên liệu (Ingredient Intersection Matching Algorithm). Thuật toán cho phép người dùng nhập vào một danh sách $M$ nguyên liệu sẵn có và hệ thống sẽ truy vấn các công thức chứa toàn bộ hoặc phần lớn các nguyên liệu này với độ phức tạp truy vấn tối ưu $O(N \log K)$ nhờ vào cơ chế Indexing trên PostgreSQL:
<?php
use Phalcon\Mvc\Controller;
class RecipeSearchController extends Controller
{
public function searchByIngredientsAction()
{
$materialIds = $this->request->getQuery('materials', 'string');
$materialsArray = explode(',', $materialIds);
$totalInput = count($materialsArray);
// Truy vấn PHQL tìm kiếm công thức khớp số lượng nguyên liệu tối đa
$phql = "SELECT r.id, r.recipe_name, r.cook_time, COUNT(q.material_id) as match_count
FROM RECIPE_COOK r
JOIN QUANTITATIVE q ON r.id = q.recipe_id
WHERE q.material_id IN ({ids:array}) AND r.status_id = 2
GROUP BY r.id, r.recipe_name, r.cook_time
HAVING COUNT(q.material_id) = :totalInput:
ORDER BY match_count DESC";
$recipes = $this->modelsManager->executeQuery($phql, [
'ids' => $materialsArray,
'totalInput' => $totalInput
]);
return $this->response->setJsonContent([
'status' => 'success',
'data' => $recipes->toArray()
]);
}
}
Phía máy khách Android, tầng truy xuất mạng sử dụng kiến trúc không đồng bộ (Asynchronous Task) kết hợp lưu trữ bộ đệm nhằm giảm tải băng thông:
public class RecipeRepository {
private Context context;
private DatabaseHelper dbHelper;
public RecipeRepository(Context context) {
this.context = context;
this.dbHelper = new DatabaseHelper(context);
}
public void fetchRecipeDetails(int recipeId, final RecipeCallback callback) {
// Kiểm tra dữ liệu trong Local SQLite Cache trước khi gọi API
Recipe localRecipe = dbHelper.getLocalRecipeById(recipeId);
if (localRecipe != null) {
callback.onSuccess(localRecipe);
return;
}
String url = AppConstants.API_URL + "/recipes/detail?id=" + recipeId;
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
response -> {
Recipe recipe = RecipeParser.parseJson(response);
// Lưu vào SQLite phục vụ xem ngoại tuyến
dbHelper.saveRecipeOffline(recipe);
callback.onSuccess(recipe);
},
error -> callback.onError(error.getMessage())
);
VolleySingleton.getInstance(context).addToRequestQueue(request);
}
}
Kết quả kiểm thử và nghiệm thu (Testing & Benchmarks)
Hệ thống đã trải qua quá trình kiểm thử hộp đen (Black-box testing) và kiểm thử hiệu năng chịu tải với công cụ Apache JMeter trên môi trường máy chủ giả lập 2 vCPU, 4GB RAM:
[Hiệu năng xử lý yêu cầu - Request Throughput Benchmark]
Phalcon C-Extension Engine : [====================================] 2,450 req/sec
Framework PHP thông thường : [=======] 480 req/sec
- Hiệu năng API (Throughput & Response Time):
- Tốc độ xử lý yêu cầu đạt trung bình 2,450 requests/second với độ trễ phản hồi (Response Latency) dao động từ 35ms – 85ms đối với các API đọc danh sách.
- Truy vấn tìm kiếm lọc nguyên liệu trên tập dữ liệu mẫu 50,000 công thức hoàn tất trong 92ms.
- Độ ổn định ứng dụng Android:
- Ứng dụng chạy mượt mà ở mức khung hình ổn định 60 FPS trên các thiết bị Android từ phiên bản 5.0 đến 9.0.
- Mức tiêu thụ bộ nhớ RAM khi mở chi tiết công thức chứa 10 hình ảnh độ phân giải cao chỉ chiếm trung bình 42MB – 58MB nhờ cơ chế tái sử dụng View và xử lý nén ảnh Bitmap của Glide.
- Mức độ hoàn thiện chức năng:
- Hoàn thành 29/29 chức năng phân tích đặc tả, bao gồm quản lý tài khoản, tạo sửa xóa công thức, phân loại danh mục, tương tác xã hội (thích, đánh dấu, bình luận, theo dõi) và module kiểm duyệt của quản trị viên.
Đổi mới và đóng góp
- Tối ưu hóa tài nguyên phần cứng bằng C-Extension Architecture: Thay vì sử dụng các framework PHP truyền thống tiêu tốn nhiều bộ nhớ trong quá trình thông dịch, việc lựa chọn Phalcon Framework giúp hệ thống giảm 65% mức sử dụng CPU và 40% dung lượng RAM ở cùng mức tải, chứng minh tính khả thi của việc xây dựng các hệ thống web có chi phí vận hành thấp nhưng chịu tải cao.
- Chuẩn hóa mô hình dữ liệu ẩm thực 3NF: Tách biệt rõ ràng thực thể
RAW_MATERIAL và QUANTITATIVE. Cách tiếp cận này loại bỏ hoàn toàn hiện tượng nhập liệu tự do sai lệch (ví dụ: "thịt bò", "bò phi lê", "thịt thăn bò" được quy chuẩn hóa), tạo nền tảng vững chắc cho các thuật toán tìm kiếm chính xác và phân tích dinh dưỡng tự động sau này.
- Mô hình truy cập lai (Hybrid Online-Offline Sync): Ứng dụng Android kết hợp cơ chế lưu trữ cục bộ, cho phép người dùng đánh dấu công thức yêu thích và xem lại toàn bộ hướng dẫn từng bước mà không cần kết nối Internet – mang lại trải nghiệm tối ưu khi người dùng thực hiện nấu nướng tại các môi trường bếp không có sóng Wi-Fi ổn định.
Ứng dụng thực tế và triển khai
Kịch bản sử dụng thực tế (Use Case Scenarios)
- Người nội trợ thông minh: Khi chuẩn bị bữa tối, người dùng chỉ cần chọn các nguyên liệu còn lại trong tủ lạnh (ví dụ: "trứng", "cà chua", "đậu phụ"); ứng dụng sẽ ngay lập tức trả về danh sách các món ăn có thể chế biến mà không cần mua thêm nguyên liệu.
- Tác giả ẩm thực (Culinary Creators): Đăng tải các công thức gia truyền kèm hình ảnh từng công đoạn cụ thể, nhận phản hồi, lượt yêu thích và xây dựng cộng đồng người theo dõi trên nền tảng.
- Ban biên tập / Quản trị viên: Quản lý quy chuẩn nội dung, sàng lọc các bài viết không đạt tiêu chuẩn an toàn hoặc trùng lặp trước khi phát hành công khai.
Yêu cầu triển khai và hướng dẫn cấu hình
Yêu cầu hệ thống máy chủ (Server Hardware & Software)
- CPU: Tối thiểu 2 Cores (Khuyến nghị 4 Cores).
- RAM: Tối thiểu 2GB (Khuyến nghị 4GB DDR4).
- Ổ cứng: 20GB SSD trống.
- Hệ điều hành: Ubuntu 18.04 LTS hoặc 20.04 LTS.
- Môi trường phần mềm: PHP 7.3, Phalcon Extension v3.4.4, PostgreSQL v11.5, Nginx v1.16+.
Hướng dẫn cài đặt Backend nhanh
# 1. Cài đặt các gói phụ thuộc và extension Phalcon trên Ubuntu
sudo apt-get update
sudo apt-get install -y php7.3-fpm php7.3-pgsql php7.3-curl php7.3-gd php7.3-json
curl -s https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh | sudo bash
sudo apt-get install php7.3-phalcon=3.4.4-1+php7.3
# 2. Khởi tạo cơ sở dữ liệu PostgreSQL
sudo -u postgres psql -c "CREATE DATABASE daudau_db;"
sudo -u postgres psql -c "CREATE USER daudau_admin WITH PASSWORD 'secure_password';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE daudau_db TO daudau_admin;"
psql -U daudau_admin -d daudau_db -f /path/to/schema.sql
# 3. Cấu hình Nginx Virtual Host và phân quyền thư mục
sudo chown -R www-data:www-data /var/www/daudau_project
sudo systemctl restart php7.3-fpm nginx
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Hệ thống mới hỗ trợ nền tảng ứng dụng khách trên Android, chưa có ứng dụng bản địa dành riêng cho hệ điều hành iOS.
- Thuật toán tìm kiếm nguyên liệu dựa trên đối sánh chính xác trong cơ sở dữ liệu, chưa áp dụng xử lý ngôn ngữ tự nhiên (NLP) để hiểu các từ đồng nghĩa hoặc ngữ cảnh thay thế nguyên liệu tương đương.
- Hệ thống xử lý media mới hỗ trợ tải lên hình ảnh tĩnh và lưu trữ link video liên kết từ YouTube, chưa xây dựng hạ tầng máy chủ streaming video chuyên dụng.
Hướng phát triển và mở rộng
- Phát triển ứng dụng đa nền tảng: Sử dụng Flutter hoặc React Native để đồng bộ trải nghiệm người dùng trên cả hai nền tảng Android và iOS.
- Tích hợp mô hình Trí tuệ nhân tạo (AI Engine): Tích hợp công cụ tính toán calo tự động và gợi ý thực đơn cá nhân hóa dựa trên chỉ số khối cơ thể (BMI) và lịch sử sở thích của người dùng.
- Liên kết thương mại điện tử (E-Commerce Integration): Kết nối với các chuỗi bán lẻ thực phẩm để cung cấp tính năng "Một chạm mua đủ nguyên liệu" trực tiếp từ trang chi tiết công thức.
Đối tượng hưởng lợi
+-----------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
+-----------------------------------------------------------------------+
| Sinh viên CNTT -> Tham khảo kiến trúc chuẩn DFD, ERD & C-Ext |
| Lập trình viên -> Tái sử dụng mẫu RESTful API & Android Cache |
| Doanh nghiệp F&B -> Tiết kiệm 50% chi phí hạ tầng máy chủ ban đầu|
| Cộng đồng người dùng -> Rút ngắn 70% thời gian tìm kiếm món ăn |
+-----------------------------------------------------------------------+
- Sinh viên chuyên ngành CNTT / Kỹ thuật phần mềm: Đồ án cung cấp tài liệu tham khảo chi tiết từ khâu khảo sát nghiệp vụ, thiết kế sơ đồ luồng dữ liệu (DFD các mức), mô hình thực thể liên kết (ERD) đến triển khai thực tế trên công nghệ C-extension framework.
- Lập trình viên Web & Mobile: Tiếp cận kỹ thuật tối ưu hóa hiệu năng máy chủ với Phalcon, kỹ thuật xây dựng tầng lưu trữ ngoại tuyến trên Android và xử lý đồng bộ dữ liệu ảnh đa phương tiện.
- Doanh nghiệp và Nhà đầu tư lĩnh vực F&B: Cung cấp mô hình giải pháp khả thi với chi phí vận hành máy chủ thấp hơn 50% so với các giải pháp thông thường, dễ dàng đóng gói để phát triển thành ứng dụng thương mại.
- Người tiêu dùng và cộng đồng nội trợ: Rút ngắn đến 70% thời gian tìm kiếm món ăn mỗi ngày, xây dựng thói quen tự nấu ăn lành mạnh và khoa học.
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để triển khai toàn bộ hệ thống là gì?
Hệ thống máy chủ yêu cầu tối thiểu 2 vCPU, 2GB RAM, chạy hệ điều hành Linux (Ubuntu 18.04/20.04), cài đặt PHP 7.3 với module php7.3-phalcon (v3.4.4) và DBMS PostgreSQL 11. Ứng dụng di động yêu cầu thiết bị chạy hệ điều hành Android từ phiên bản 5.0 (Lollipop) trở lên và tối thiểu 1GB RAM.
2. Hệ thống có khả năng mở rộng (Scalability) như thế nào khi lượng người dùng tăng cao?
Nhờ kiến trúc RESTful API không trạng thái (stateless) và việc lưu trữ phiên qua Token, hệ thống có thể dễ dàng mở rộng theo chiều ngang (Horizontal Scaling). Có thể đặt nhiều phiên bản máy chủ PHP-FPM phía sau bộ cân bằng tải Nginx (Load Balancer) và cấu hình cơ chế sao chép dữ liệu PostgreSQL Master-Slave (Read-Replicas) để giải tỏa áp lực đọc dữ liệu khi có hàng chục nghìn người dùng truy cập đồng thời.
3. Khả năng tích hợp với các hệ thống bên thứ ba ra sao?
Hệ thống Đậu Đậu được thiết kế theo chuẩn RESTful JSON API mở, cho phép dễ dàng tích hợp với các dịch vụ xác thực bên ngoài (Google/Facebook OAuth 2.0), các cổng thanh toán điện tử (VNPay, Momo), hệ thống gửi thông báo tự động (Firebase Cloud Messaging) và các dịch vụ giao hàng thực phẩm thông qua việc mở rộng các endpoints.
4. Quy trình bảo trì và nâng cấp hệ thống định kỳ cần chú ý điều gì?
Cần lưu ý kiểm tra tính tương thích của Phalcon C-extension khi nâng cấp phiên bản PHP của máy chủ. Cơ sở dữ liệu PostgreSQL cần được lập lịch tự động sao lưu định kỳ (cronjob với pg_dump) và định kỳ chạy VACUUM ANALYZE để duy trì hiệu suất tối ưu của các chỉ mục tìm kiếm.
5. Dự toán chi phí hạ tầng và thời gian thu hồi vốn (ROI) khi thương mại hóa?
Với kiến trúc tối ưu của Phalcon và PostgreSQL, chi phí hạ tầng Cloud VPS chỉ dao động khoảng $15 – $30/tháng cho quy mô 20,000 người dùng tích cực hàng tháng (MAU). Khi thương mại hóa qua hình thức quảng cáo thương hiệu nguyên liệu thực phẩm và tài trợ ẩm thực, dự án có khả năng đạt điểm hòa vốn và sinh lời trong vòng 6–9 tháng sau khi vận hành chính thức.
Kết luận
Đồ án tốt nghiệp "Xây dựng website và ứng dụng chia sẻ công thức nấu ăn Đậu Đậu" của nhóm tác giả Phạm Tiến Hùng và Nguyễn Bá Thái đã giải quyết thành công bài toán chia sẻ và tìm kiếm công thức ẩm thực có cấu trúc thông qua một hệ sinh thái toàn diện Web – Mobile.
Bằng việc kết hợp hiệu quả giữa công nghệ máy chủ hiệu năng cao Phalcon Framework, hệ quản trị cơ sở dữ liệu mạnh mẽ PostgreSQL 11 và ứng dụng di động Android Native, đề tài không chỉ đạt được những chuẩn mực khắt khe về mặt học thuật và kỹ thuật phần mềm mà còn mang lại giá trị ứng dụng thực tiễn cao cho xã hội. Đây là tiền đề vững chắc để tiếp tục phát triển hệ thống thành một nền tảng dịch vụ ẩm thực và dinh dưỡng thông minh toàn diện trong tương lai.