Giới thiệu
Trong thời đại dữ liệu, việc trực quan hóa thông tin trở thành yếu tố then chốt giúp người dùng nhanh chóng nắm bắt tình hình kinh doanh hay hoạt động. Một dashboard thống kê không chỉ đẹp mắt mà còn phải linh hoạt, dễ cập nhật và dễ mở rộng. Supabase với khả năng cung cấp cơ sở dữ liệu PostgreSQL mạnh mẽ cùng các API Real-time, kết hợp với Chart.js – thư viện vẽ biểu đồ đa dạng và dễ tùy chỉnh, tạo nên bộ đôi hoàn hảo để xây dựng hệ thống dashboard chuyên nghiệp. Bài viết này sẽ hướng dẫn từng bước để bạn có thể tự tay tạo ra một dashboard sống động, tương tác và đầy đủ tính năng.
Chuẩn bị môi trường
Để bắt đầu, bạn cần có tài khoản Supabase (có thể tạo miễn phí tại supabase.com) và một dự án web đơn giản với HTML, CSS, JavaScript. Supabase sẽ cung cấp database, authentication, và Real-time cho ứng dụng của bạn. Chart.js có thể được thêm vào dự án thông qua CDN hoặc npm.
Bước đầu tiên là tạo bảng trong Supabase để lưu trữ dữ liệu mẫu. Ví dụ, bạn có thể tạo bảng sales với các cột: id, category, amount, created_at. Sau khi có bảng, bạn sẽ insert một số dữ liệu mẫu để test.
Tiếp theo, trong dự án web, bạn khởi tạo Supabase client bằng cách lấy project URL và public anon key từ dashboard của Supabase. Chart.js cũng cần được khai báo, hoặc qua CDN trong thẻ hoặc import nếu dùng module bundler.
Thiết kế dashboard
Giao diện dashboard nên được chia thành các khu vực rõ ràng: tiêu đề, các card hiển thị tổng quan (total sales, average, growth), và khu vực biểu đồ. Sử dụng CSS grid hoặc flexbox để layout gọn gàng. Chart.js hỗ trợ nhiều dạng biểu đồ: line, bar, pie, doughnut, radar… Tùy vào loại dữ liệu và mục đích mà chọn loại chart phù hợp.
Ví dụ, nếu muốn xem doanh số theo thời gian, line chart là lựa chọn tốt. Nếu so sánh doanh số giữa các danh mục, bar chart hoặc doughnut chart sẽ trực quan hơn. Chart.js cho phép tùy chỉnh màu sắc, label, legend, tooltip, giúp dashboard sinh động và dễ đọc.
Kết nối dữ liệu từ Supabase
Để dashboard luôn cập nhật, bạn cần fetch dữ liệu từ Supabase. Sử dụng hàm fetch hoặc thư viện supabase-js để query dữ liệu. Ví dụ, để lấy tổng doanh số và dữ liệu theo danh mục, bạn có thể query:
SELECT category, SUM(amount) as total
FROM sales
GROUP BY category;Với dữ liệu dạng thời gian, query:
SELECT date_trunc('day', created_at) as day, SUM(amount) as total
FROM sales
GROUP BY day
ORDER BY day;