同人誌即売会用のレジアプリです.Kiradopay および Kiradopay2 を原型としています.
以下の説明は開発者向けです.利用者向けの説明はこちら.
現在,このリポジトリには @TypeChangeBot[bot] という GitHub App が導入されています.この GitHub App はコミッターによる変更を観察し,その変更を何故行ったかを尋ねて記録します.
もし現時点以降の記録を望まないのであれば @TypeChangeBot[bot] OPTOUT と,もし今までの全ての記録を削除したいのであれば @TypeChangeBot[bot] REMOVE を,それぞれコメントしてください.
詳しくは,開発者による説明を参照してください.
- TypeScript
- React Router:フロントエンドおよびバックエンド
- React:フロントエンド
- MUI:UI フレームワーク
- Prisma:ORM
- 準備
- Node.js をインストールしてください.
npm installを実行してください.- 「環境変数」を参照して
.envを作成してください.
- 実行:
npm run devを実行してください.
ホスティングにはVercelを利用することを想定しています.
デプロイ方法については公式ドキュメントを参照してください.
また,React Router が動作する他のプラットフォームでも動作すると考えられます.
データベースにはSupabaseを利用することを想定しています.なお,データベース以外の機能は利用しません.
デプロイするには,プロジェクトを作成し,Prismaで利用するための公式のガイドを参照してください.
また,VercelとのIntegrationが公式に提供されています.
なお,Prisma スキーマなどを変更することで,他のデータベースでも動作すると考えられます.スキーマは Supabase 向けに調整されていることに注意してください.
以下の環境変数を設定してください:
POSTGRES_PRISMA_URL・POSTGRES_URL_NON_POOLING:データベースに接続する URL です.- Production 環境では Supabase の Integration が自動で設定します.
- Development 環境ではどちらも
postgres://$(whoami)@localhost:5432/comiacapayなどとしてください.
POSTGRES_CA_URL:データベースとの暗号化通信において信頼するルート証明書の URL です.- Supabase においては
https://supabase-downloads.s3-ap-southeast-1.amazonaws.com/prod/ssl/prod-ca-2021.crtです. - Production 環境・Preview 環境に手動で設定する必要があります.
- Development 環境では不要です.
- Supabase においては
マイグレーションは自動化されていません.適宜npm run migrate:deployを実行してください.詳しくは公式ドキュメントを参照してください.
認証にはDiscordを利用します.
通常の Discord ボットとは異なり,Client ID と Client Secret を利用して OAuth2 認証を行います.
Discord Developer Portalでアプリケーションを用意してください.
以下の環境変数を設定してください:
DISCORD_OAUTH2_ORIGIN:OAuth2 認証に利用するホスト名です.スキーマとホスト名を含んでください.- Vercel 上では,Production 環境では Vercel のホスト名を,Development 環境では
http://localhost:5173を指定してください.
- Vercel 上では,Production 環境では Vercel のホスト名を,Development 環境では
DISCORD_CLIENT_ID:Discord の OAuth2 認証に利用します.DISCORD_CLIENT_SECRET:Discord の OAuth2 認証に利用します.
また,コンソール上で以下の2つをリダイレクト URL として設定する必要があります.
${DISCORD_OAUTH2_ORIGIN}/auth/callback${DISCORD_OAUTH2_ORIGIN}/setup/callback
Preview 環境を使用するための追加設定
Discord は Production 環境以外にリダイレクトできないため,上の設定だけでは Preview 環境で OAuth2 認証ができません.
Comiacapay ではトランポリンという機構を利用して Preview 環境で OAuth2 認証を行うことができます.トランポリンでは,Production 環境が一度認可コードを受け取り,それを暗号化して Preview 環境に送信します.
トランポリンを利用するためには,以下の設定が必要です:
- Preview 環境の
DISCORD_OAUTH2_ORIGINに Production 環境のホスト名を設定する - 全環境共通で
DISCORD_OAUTH2_TRAMPOLINE_KEYに AES 鍵を設定する./scripts/generateTrampolineKey.mjsで生成できます.
トランポリンは /setup/callback では利用できないため,Preview 環境でサーバー設定を行うことはできません.
Vercel 上で設定し,Vercel CLIでダウンロードすることを想定しています.設定項目は「デプロイ」を参照してください.
vercel loginが完了していることを確認してください.vercel linkを実行してください.vercel env pull .envを実行してください.