我們都經歷過這種情況:你有一個很棒的、以社區為中心的專案想法,但是一想到要啟動資料庫、配置身份驗證和建置後端 API,你甚至還沒來得及執行npm init就停了下來。
這個週末,我決定省略繁瑣的步驟,直接出貨。
我想製作一幅「社區祈禱拼布」 ——一個數位空間,人們可以在這裡留下祈禱或願望,然後將其縫製成一幅視覺掛毯。我的目標是讓它在煮咖啡的時間內上線執行。
這是我用來建立prayerwall.club 的「簡易」架構,只花了大約 5 分鐘,後端使用了 Google Sheets,內容審核器使用了 Gemini 2.5 Flash-Lite。
{%twitter https://x.com/DynamicWebPaige/status/1988056184365216128 %}
當您需要在沒有伺服器的情況下快速收集用戶資料時,沒有什麼比Google生態系統的底層架構更勝一籌。
1. 資料庫及資料導入:Google 表單 + 表格
我沒有建立 React 表單並處理 POST 請求,而是建立了一個 Google 表單。
輸入方式:使用者透過表格提交祈禱內容。
儲存:回覆將自動匯入 Google 試算表。
2. API:Sheets CSV 匯出
這裡有一個我特別喜歡的黑客馬拉松小技巧。你不需要完整的 Google Sheets API(以及它的 OAuth 流程)來取得公開的唯讀資料。你可以將表格發佈到網路上,然後透過視覺化端點來存取它:
const SHEET_ID = 'YOUR_SHEET_ID';
const URL = `https://docs.google.com/spreadsheets/d/${SHEET_ID}/gviz/tq?tqx=out:csv`;
// Fetch and parse
const response = await fetch(URL);
const csvText = await response.text();
// ...parse CSV to JSON...
瞬間完成,零延遲的JSON端點。
公共留言牆的問題在於內容審核。我不想手動審核每一則留言,但也不想冒著被惡意使用者在祈禱牆上發布有害內容的風險。
透過 Google AI Studio 進入Gemini Flash-Lite 。
我需要一種快速且廉價的方法來對被子上的祈禱文進行「毒性檢查」。我連接了@google/genai SDK,在前端執行了一個快速的健全性檢查。
以下是我使用的提示邏輯:
const model = genAI.getGenerativeModel({ model: "gemini-flash-lite-latest" });
const prompt = `
Analyze the following prayer for safety.
It will be displayed on a public, all-ages community wall.
The prayer must not contain toxic language, hate speech, or violence.
Prayer: "${userPrayer}"
Return JSON: { "is_safe": boolean }
`;
如果is_safe傳回true ,則將補丁縫入到整體中。否則,將其靜默丟棄。這會增加一點點延遲,但能確保網站保持良好的氛圍,而無需我充當網路管理員。
前端設計我不想用簡單的列表,我想讓它看起來像一張拼布被。
我使用 React 和 HTML5 <canvas> API 來程式化地產生每個「補丁」。
種子生成:我對祈禱文進行哈希處理,產生一個唯一的種子。
圖案:該種子決定了織物顏色調色板、針跡圖案(正弦波)和「織物紋理」(隨機筆觸不透明度)。
這意味著每一次祈禱都會產生一個獨特的、確定性的視覺表現。
這算是「企業級」嗎?絕對不是。它能擴展到數百萬用戶嗎?可能不行(Google表格有速率限制)。
但它是直播的。
我們常常因為過度追求架構的純粹性而阻礙了產品的交付。透過將 Google Sheets 作為後端,並使用輕量級 AI 模型來處理原本需要人工完成的邏輯,我僅用了幾分鐘就實現了從「構思」到「部署」的轉變。
點這裡觀看直播: prayerwall.club
今天就去做點有趣的事吧。遷移到更強大的資料庫的事情以後再說。
原文出處:https://dev.to/googleai/how-i-built-a-community-prayer-quilt-in-5-minutes-5afk