Skip to content

cm-ayf/comiacapay

Repository files navigation

Comiacapay

同人誌即売会用のレジアプリです.Kiradopay および Kiradopay2 を原型としています.

以下の説明は開発者向けです.利用者向けの説明はこちら

技術スタック

  • TypeScript
  • Next.js:フロントエンドおよびバックエンド
  • React:フロントエンド
  • MUI:UI フレームワーク
  • Apollo:GraphQL サーバー・クライアント
  • Prisma:ORM

開発

  • 準備
    • Node.js をインストールしてください.
    • npm installを実行してください.
    • 環境変数の項を参照して.env.localを作成してください.
  • 実行:npm run devを実行してください.

デプロイ

ホスティング

ホスティングにはVercelを利用することを想定しています.
デプロイ方法については公式ドキュメントを参照してください.

また,Next.js の SSR および API Route が動作する他のプラットフォームでも動作すると考えられます.

データベース

データベースにはSupabaseを利用することを想定しています.なお,データベース以外の機能は利用しません.
デプロイするには,プロジェクトを作成し,Prismaで利用するための公式のガイドを参照してください.

また,VercelとのIntegrationが公式に提供されています.

なお,Prisma スキーマを変更することで,他のデータベースでも動作すると考えられます.スキーマは Supabase 向けに調整されていることに注意してください.

マイグレーション

マイグレーションは自動化されていません.適宜npm run migrate:deployを実行してください.詳しくは公式ドキュメントを参照してください.

認証

認証にはDiscordを利用します.
通常の Discord ボットとは異なり,Client ID と Client Secret を利用して OAuth2 認証を行います.
Discord Developer Portalでアプリケーションを用意してください.

環境変数

Vercel 上で設定し,Vercel CLIでダウンロードすることを想定しています.

データベースの接続情報は,Production向けにはVercelとSupabaseとのIntegrationにより自動的に設定されます.Development向けには,Vercel上で設定するか,ダウンロードした後に手動で設定してください.

設定する

  • NEXT_PUBLIC_HOST:OAuth2 認証に利用するホスト名です.スキーマとホスト名を含んでください.
    • Vercel 上では,Production および Preview 環境では Vercel のホスト名を,Development 環境ではhttp://localhost:3000を指定してください.
  • DISCORD_CLIENT_ID:Discord の OAuth2 認証に利用します.
  • DISCORD_CLIENT_SECRET:Discord の OAuth2 認証に利用します.
  • KEY_PAIR:JWT の署名・検証に利用する鍵のペアです.
    • node scripts/key.mjsを実行すると,鍵のペアが生成され,環境変数に設定すべき値が表示されます.

ダウンロードする

  • vercel loginが完了していることを確認してください.
  • vercel linkを実行してください.
  • vercel env pull .envを実行してください.

ライセンス

MIT License