main
Deploy / deploy (push) Successful in 2s
- apps-script.gs: doPost lưu xong mới gọi notify() (UrlFetchApp, JSON publish, topic loichuc); token/URL lấy từ Script Properties; lỗi chỉ log; tối đa 5 push/phút, dư thì gộp +N - ghi nhãn site vào cột E "Trang"; testNtfy() để cấp quyền và thử - app.js gửi kèm site: location.hostname Co-Authored-By: Claude Opus 5.5 <[email protected]>
luyentoan
Thiệp cưới Luyến & Toàn. Static site trong public/, lời chúc lưu vào Google Sheet qua Apps Script (không cần backend).
Nội dung cần điền
-
public/index.html: các chỗ[...](họ tên, giờ, địa điểm, link bản đồ, cha mẹ, timeline). -
Video: sửa
data-video(ID YouTube) và link ảnh--thumbở#yttrongpublic/index.html. -
Ảnh đặt trong
public/img/(thiếu file nào thì khung đó hiện placeholder có ghi tên):File Vị trí Tỉ lệ nên dùng hero.jpgKhung vòm ở bìa, cạnh thẻ tên dọc 3:4 family-bg.jpg,date-bg.jpgNền phần Gia đình, Ngày giờ (phủ màu kem mờ) ngang video-l.jpg,video-r.jpgKhung vòm cô dâu (trái) / chú rể (phải) cạnh video dọc 2:3 wish-bg.jpg,footer.jpgNền phần Lời chúc, chân trang (phủ màu tối/đỏ) ngang co-dau.jpg,chu-re.jpgẢnh oval trên thẻ nhà gái / nhà trai dọc 4:5, mặt ở giữa band.jpgDải ảnh ngang có câu trích ngang 16:9 timeline-1.jpg…timeline-6.jpgPolaroid trong "Hành trình yêu thương" vuông 1:1 album-1.jpg…album-31.jpgCollage "Khoảnh khắc của chúng mình", bấm để xem phóng to (class tall= ảnh dọc,wide= ảnh ngang)— deco/*.pngRồng, phượng, 囍, con dấu, trầu cau cắt từ thiệp giấy PNG nền trong Nên nén ảnh chiều dài nhất ~1600px, JPG chất lượng ~80.
Kết nối Google Sheet
- Tạo Google Sheet mới, vào Extensions > Apps Script, dán nội dung
apps-script.gs, lưu. - Deploy > New deployment > Web app: Execute as Me, Who has access Anyone. Cấp quyền.
- Copy URL
https://script.google.com/macros/s/.../execvào secretSHEET_APIcủa repo trên Gitea (Settings > Actions > Secrets). CI thay__SHEET_API__trongpublic/app.jslúc deploy, không commit URL vào repo. - Lời chúc mới vào tab
LoiChuc; tick cột Duyệt để hiện lên trang. Muốn hiện ngay không cần duyệt: đặtREQUIRE_APPROVAL = falserồi deploy lại (Manage deployments > Edit > New version). - Push về điện thoại khi có lời chúc mới (ntfy, topic
loichuc):- Apps Script > Project Settings > Script properties: thêm
NTFY_URL=https://ntfy.okeluon.io.vnvàNTFY_TOKEN= token write-only (ssh vps 'sudo cat /etc/ntfy/publish_token' | pbcopy, dán, không in ra terminal). - Trong trình soạn, chạy hàm
testNtfymột lần để cấp quyền gọi URL ngoài; điện thoại phải nhận tin. - Manage deployments > Edit > New version (giữ nguyên URL, không cần sửa secret
SHEET_API). - App ntfy: thêm server
https://ntfy.okeluon.io.vn, đăng nhậpadmin, subscribeloichuc. - Push gửi sau khi đã lưu; ntfy lỗi thì lời chúc vẫn lưu, lỗi xem ở Executions. Tối đa 5 push/phút, quá thì gộp "+N" vào tin sau.
Hai site dùng chung một script;
app.jsgửisite: location.hostname, script ghi nhãn vào cột Trang.
- Apps Script > Project Settings > Script properties: thêm
Hiệu ứng 3D
public/three-scene.js (Three.js + Lenis, tự host trong public/vendor/) chỉ được tải khi máy đủ mạnh:
đoạn script đầu <head> kiểm tra WebGL2, GPU, số nhân/RAM, "giảm chuyển động", mạng chậm. Đang chạy mà dưới
24fps thì tự gỡ 3D về giao diện thường và nhớ trong phiên. Thử: ?3d=1 ép bật, ?lite=1 ép tắt.
Xem thử
python3 -m http.server -d public 8080 # http://localhost:8080
Languages
JavaScript
40.1%
CSS
34.7%
HTML
22.3%
Makefile
2.9%