supabase をローカルで動作させるため、Docker Desktop のインストールが必須になります。Windows の場合はこれに合わせて WSL のセットアップが必要になるため、合わせて行ってください。
参考:https://qiita.com/haveAbook/items/0d0ae20a19214f65e7cd
アプリケーションをローカルで動かすことを目標にします。
アプリ内で使用されている各種ライブラリをインストールします。
npm clean-install
# または
npm ci.env.example をコピーし、名前を .env にしてください。
ここにセンシティブな情報(Gemini の API キー)を設置していくことになります。
discord アプリケーションのシークレットトークンになります。
ここ に書いています。 (Organization 外の方で動作させたい方は @ulxsth に一言ください)
これは個人で作成することになります。 ここ から Google アカウントでログインし、サイドメニュー → "Get API Key" → "APIキーを生成" から API キーを生成してください。
生成した API キーを GEMINI_API_KEY にセットしたら OK です。
バックエンドは Supabase というサービスでまかなっていますが、ローカルで同じ環境を再現することによって、本番環境を汚さずに開発することができます。
以下のコマンドから、初期セットアップを行ってください、
npm run supabase:start処理には5分程度かかる場合があります。
処理が終了したら、様々な環境変数がコンソールに表示されます。その中から anon key の項目をコピーし、.env の REACT_APP_SUPABASE_ANON_KEY にセットしてください。
これはオプションですが、不要になった場合はコンテナを止めておくことをお勧めします。(けっこう重たいので)
npm run supabase:stopまた、バックエンドサーバーの動作が遅いなどの場合は一度リロードすることをお勧めします。
npm run supabase:reloadsupabase start した段階では、データベースは初期化されていません。以下のコマンドでデータベースを構築できます。
npm run db:resetこのコマンドは、データベースのデータを初期化したいときにも使えます。
Gemini などの機能を使用するためには、Edge Function 用のコンテナを起動する必要があります。React のサーバーを起動している場合は、新しくターミナルを開いて以下を実行して下さい。
npm run edge:devAPI は、デフォルトで認証による制限がついています。これは開発環境では邪魔になることが多いので、edge:dev では一時的に認証を外しています。
認証ありでデバッグしたい場合は、以下を使用してください。
npm run edge:serve最後に、React サーバーを起動します。
npm run start起動すると、http://localhost:3000 からアプリケーションにアクセスできます。
認証や各機能が問題なく使えれば OK です。お疲れさまでした。
以下は開発者用オプションです。特別な理由がない限り、行う必要はありません。
npx supabase functions new <function-name>supabase/finctions に対応する関数名のフォルダが作成されるため、index.ts の Deno.serve 内に動かしたいコードを書いてください。
scripts/debug にデバッグ用スクリプトをいくつか用意しています。デバッグにお役立てください。
npm run edge:<function-name>
#例
npm run edge:generate-diary事前に @ulxsth にプロジェクトへのアクセス権を申請してください。
npx supabase login
npx supabase functions deploy <function-name> --project-ref omxbtjfdqpkrvnqgjcnq