Kiradopay2の開発はComiacapayに引き継がれて停止しました.
同人誌即売会用のレジアプリです.Kiradopayを原型としています.
- カスタムサーバーを排除
- Kiradopay では,WebSocket を利用するためにカスタムサーバーが必要でした.
- Vercel でのデプロイを想定し,Next.js の API Route を利用することで,カスタムサーバーを排除しました.
- 認証機能を導入
- Kiradopay では,認証は行われていませんでした.
- Discord の OAuth2 機能を利用し,認証機能を導入しました.
- Discord を選定した理由は以下の通りです:
- 招待制である
- OAuth2 に対応している
- 東京大学きらら同好会は基幹コミュニティとして Discord を利用している
- 同好会内での権限管理をロールで行うことができる
- イベント情報・商品情報を管理する UI を実装
- Kiradopay では,イベント情報・商品情報を管理する UI は存在しませんでした.
- そのため,データベースに直接アクセスする必要がありました.
- 適切な UI と API を実装し,イベント情報・商品情報を簡単に管理することができるようになりました.
- Kiradopay では,イベント情報・商品情報を管理する UI は存在しませんでした.
- 準備
- Node.js をインストールしてください.
npm install
を実行してください.- 環境変数の項を参照して
.env.local
を作成してください.
- 実行:
npm run dev
を実行してください.
ホスティングにはVercelを利用することを想定しています.
デプロイ方法については公式ドキュメントを参照してください.
また,Next.js の SSR および API Route が動作する他のプラットフォームでも動作すると考えられます.
データベースにはVercel Postgresを利用することを想定しています.
デプロイ方法については公式ドキュメントを参照してください.
また,Prisma スキーマを変更することで,他のデータベースでも動作すると考えられます.スキーマは Vercel Postgres 向けに調整されていることに注意してください.
マイグレーションは自動化されていません.適宜npm run migrate:deploy
を実行してください.詳しくは公式ドキュメントを参照してください.
認証にはDiscordを利用します.
通常の Discord ボットとは異なり,Client ID と Client Secret を利用して OAuth2 認証を行います.
Discord Developer Portalでアプリケーションを用意してください.
Vercel 上で設定し,Vercel CLIでダウンロードすることを想定しています.
データベースの接続情報は Vercel Postgres により自動的に設定されます.
HOST
:OAuth2 認証に利用するホスト名です.スキーマとホスト名を含んでください.- Vercel 上では,Production および Preview 環境では Vercel のホスト名を,Development 環境では
http://localhost:3000
を指定してください.
- Vercel 上では,Production および Preview 環境では Vercel のホスト名を,Development 環境では
DISCORD_CLIENT_ID
:Discord の OAuth2 認証に利用します.DISCORD_CLIENT_SECRET
:Discord の OAuth2 認証に利用します.JWT_SECRET
:JWT の署名・検証に利用する共通鍵です.crypto.randomBytes(64).toString('base64')
などとして生成してください.
DISCORD_GUILD_ID
:サインインを許可する Discord サーバーの ID です.DISCORD_{READ,REGISTER,WRITE}_ROLE_ID
(省略可):- その Discord サーバーにあるロールの ID です.
- それぞれ,以下の権限を誰に付与するかを管理します:
READ
権限は,画面を表示し,情報を取得するために必要です.REGISTER
権限は,レジ画面を表示し,購入情報を登録するために必要です.WRITE
権限は,イベント情報・商品情報を管理するために必要です.
- 設定した場合,そのロールを持っているユーザーだけが対応する権限を与えられます.
- 省略した場合,サーバーの全てのユーザーがその権限を与えられます.
vercel login
が完了していることを確認してください.vercel link
を実行してください.vercel env pull .env
を実行してください.
- icons: UTKiraraCircle