← Back to site
Admin Panel
Enter your password to manage content.
👁
Incorrect password.
Connecting…
Works
Manage portfolio projects.
| # | Title | Year | Category | Featured | Status | Actions |
|---|
Quiet
Manage blog posts.
| # | Title | Date | Category | Actions |
|---|
Hero Section
Edit homepage hero text.
Enter → xuống dòng
Contact Page
Edit contact info, socials, and page text.
Label · Value (email, phone number, ...)
Name · URL
Career
Manage career timeline.
| Role | Company | Period | Current | Actions |
|---|
About Page
Edit profile photo, bio, skills and links.
Recommended: 3:4 ratio · min 600px
Double Enter = new paragraph
One item per line
Hướng dẫn sử dụng
Cách cập nhật nội dung đúng cách, hạn chế lỗi.
✦ Quy trình cập nhật đúng
01
Chỉnh nội dung trong tab tương ứng
Sửa text, upload ảnh, thêm/xóa project hoặc bài viết tùy ý. Hệ thống sẽ tự động lưu khi chuyển tab.
02
Kiểm tra badge ở góc trên phải
● Synced ✓ — xong, website tự cập nhật sau ~2 giây.
⚠ Local only — chưa lên cloud, làm thêm bước 03.
● Sync failed — lỗi mạng hoặc Supabase, làm thêm bước 03.
⚠ Local only — chưa lên cloud, làm thêm bước 03.
● Sync failed — lỗi mạng hoặc Supabase, làm thêm bước 03.
03
Chỉ khi badge không xanh: nhấn Backup
Nhấn nút Backup → tải về
data.js → replace file /assets/data.js trong project → deploy lại. Bước này chỉ cần thiết khi Supabase có vấn đề.
⚠ Lỗi thường gặp & cách xử lý
Badge luôn hiện "Local only" dù có mạng
Có 2 nguyên nhân: (1) Supabase free tier tự pause sau 1 tuần không dùng → vào supabase.com/dashboard → mở project → đợi 30 giây → quay lại admin và refresh. (2) File
/assets/cloud.js chưa điền key Supabase, hoặc code mới chưa được deploy lên GitHub.Website hiển thị nội dung cũ dù đã save
Hard refresh trang web:
Cmd+Shift+R (Mac) hoặc Ctrl+Shift+R (Windows). Nếu vẫn cũ → làm bước Backup & deploy.Upload ảnh không hiện lên
Kiểm tra toast thông báo ở góc dưới — nếu hiện "Upload failed" thì kiểm tra kết nối mạng và thử lại. Ảnh upload qua Cloudinary, không cần deploy mới có tác dụng.
Lỡ xóa hoặc sửa nhầm nội dung
Nhấn nút Reset ở topbar → load lại từ file
data.js gốc. Lưu ý: mọi thay đổi chưa Backup sẽ mất.Mở admin trên máy khác không thấy data mới
Bình thường — admin dùng localStorage của từng máy. Chỉ cần đợi Supabase sync (~2 giây sau khi mở trang) hoặc nhấn
Reset rồi reload.
📅 Nên làm định kỳ
✓
Mỗi tháng 1 lần: vào Supabase dashboard để giữ project active (tránh bị pause).
✓
Sau mỗi đợt update lớn: nhấn Backup, lưu file
data.js vào Google Drive hoặc Desktop để có bản dự phòng.
✓
Khi thấy badge màu vàng hoặc đỏ: không ignore — xử lý ngay theo hướng dẫn bên trên trước khi tiếp tục edit.
🚀 Force push data lên Supabase
Dùng khi: chỉnh trực tiếp data.js ngoài admin (thêm sections, sửa nội dung dài...) và cần đẩy lên Supabase để web live thấy được.
01
Mở trang Admin này trên browser, nhấn F12 (Windows) hoặc Cmd + Option + I (Mac) để mở DevTools.
02
Click tab Console ở thanh trên cùng của DevTools.
03
Nếu thấy dòng cảnh báo màu vàng "Don't paste code..." → gõ tay chữ
allow pasting rồi Enter. (Bước này chỉ cần làm 1 lần.)
04
Copy đoạn lệnh bên dưới, paste vào Console, nhấn Enter:
window._sb.from('site_data').upsert({key: 'works', value: DW}).then(r => console.log('Done!', r))
05
Đợi vài giây, thấy
Done! {success: true, status: 200} là thành công — data đã lên Supabase.
💡 Lưu ý: Lệnh này push từ
DW (default data trong data.js) — không phải từ localStorage. Nên đảm bảo đã lưu đúng nội dung vào data.js trước khi chạy.
🔗 Quick Links — Các service đang kết nối
⌨ Phím tắt hữu ích
Cmd / Ctrl + S
Save tab hiện tại
Ctrl + B / I / K
Bold / Italic / Link trong blog
Enter
Xuống dòng trong Hero title
Bôi đen text
Hiện floating toolbar định dạng
Unsaved changes