Skip to content
This repository has been archived by the owner on Nov 27, 2023. It is now read-only.

cm-ayf/kiradopay2

Repository files navigation

Kiradopay2の開発はComiacapayに引き継がれて停止しました

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

更新点

  • カスタムサーバーを排除
    • Kiradopay では,WebSocket を利用するためにカスタムサーバーが必要でした.
    • Vercel でのデプロイを想定し,Next.js の API Route を利用することで,カスタムサーバーを排除しました.
  • 認証機能を導入
    • Kiradopay では,認証は行われていませんでした.
    • Discord の OAuth2 機能を利用し,認証機能を導入しました.
    • Discord を選定した理由は以下の通りです:
      • 招待制である
      • OAuth2 に対応している
      • 東京大学きらら同好会は基幹コミュニティとして Discord を利用している
      • 同好会内での権限管理をロールで行うことができる
  • イベント情報・商品情報を管理する UI を実装
    • Kiradopay では,イベント情報・商品情報を管理する UI は存在しませんでした.
      • そのため,データベースに直接アクセスする必要がありました.
    • 適切な UI と API を実装し,イベント情報・商品情報を簡単に管理することができるようになりました.

技術スタック

開発

  • 準備
    • 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を指定してください.
  • 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を実行してください.

ライセンス

MIT License

About

同人誌即売会用のレジアプリ

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages