前面已經完成專案初始化以及 Google OAuth 的設定,接下來就可以開始建立後端開發環境。
今天會先完成資料庫與部署環境的配置,之後就能正式開始開發 API。
資料庫我最後選擇使用 Turso。
一開始其實也考慮過 PostgreSQL,不過這個專案目前沒有複雜的關聯查詢,也沒有大量寫入的需求,SQLite 就已經足夠了。
既然如此,我更希望可以直接使用 SQLite 的開發方式,同時又不用自己管理資料庫,因此最後就選擇了 Turso。
另外,目前免費方案提供 100 個 Database 與 5 GB Storage,對這個專案來說已經很夠用了。
更多方案資訊可以參考 Turso Pricing。
建立資料庫後,需要取得兩個資訊:
後面的 API 就會透過這兩個資訊連線到資料庫,因此最後會放到 .dev.vars。
我平常習慣直接透過 CLI 建立資料庫,整個流程如下:
# macOS
brew install tursodatabase/tap/turso
# 註冊 / 登入
turso auth signup
turso auth login
# 建立資料庫
turso db create <DB_NAME>
# 取得連線資訊
turso db show <DB_NAME> --url
turso db tokens create <DB_NAME>
最後把資料庫資訊放到 .dev.vars:
TURSO_DATABASE_URL=libsql://dbname-dbaccount.turso.io
TURSO_AUTH_TOKEN=
資料庫準備完成後,就可以開始配置 Cloudflare Workers。
資料庫準備好之後,接著就是部署後端。
我最後選擇 Cloudflare Workers,主要原因是整個專案本來就使用 Hono,兩者整合得很好,不需要另外準備主機,也不用自己維護 Node.js Server,對 Side Project 來說很省事。
另外,Cloudflare 免費方案每天提供 10 萬次 Request,對目前的專案來說也很夠用了。
第一次使用時,只要安裝 Wrangler 並登入 Cloudflare 即可:
npm install -D wrangler
npx wrangler login
之後 Worker 的名稱、環境變數等設定都會放在 wrangler.toml 中管理。
平常開發最常用到的只有三個指令。
本地開發:
npx wrangler dev
部署:
npx wrangler deploy
查看線上 Log:
npx wrangler tail
基本上整個開發過程,大部分時間都只會用到這三個指令。
和一般 Node.js 專案使用 .env 不同,Cloudflare Workers 本地開發使用的是 .dev.vars。
目前專案使用到的環境變數如下:
ENVIRONMENT=development
TURSO_DATABASE_URL=libsql://<YOUR_URL>
TURSO_AUTH_TOKEN=xxxxxxxx
GOOGLE_CLIENT_ID=4xxxxxxxx.apps.googleusercontent.com
ACCESS_TOKEN_SECRET=xxxxxxxxx
執行 wrangler dev 時,Cloudflare Workers 會自動讀取 .dev.vars,因此本地開發不需要再額外設定。
正式部署時,則改用 Cloudflare Secret 儲存敏感資訊:
wrangler secret put KEY_NAME
另外,也別忘了將 apps/api/.dev.vars 加入 apps/api/.gitignore,避免不小心把 Token 或金鑰提交到 GitHub。
到這裡為止,後端開發環境就準備完成了,明天開始要實作定位與地圖顯示。