NISHIO Hirokazu[日本語][English]

SimpleGrants

フィアットQuadratic Fundingするツール https://github.com/supermodularxyz/simplegrants

手元で動かそうと試行錯誤したログ

これを見る

BackendのREADMEを見る

You have to use Node version >= 17.5! % node -v v21.2.0

all you need to do is to change the payment provider in provider.service.ts to the provider you want to use.

ts

export class ProviderService {
  constructor(private readonly prisma: PrismaService) {
    this.paymentProvider = new StripeProvider({
      prisma,
      secret: process.env.PAYMENT_KEY,
      country: 'US',
    });
  }

Stripeを使うためにはこの設定をする必要があるがとりあえず無視

% npm install :

npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: 'next-auth@4.18.8',
npm WARN EBADENGINE   required: { node: '^12.19.0 || ^14.15.0 || ^16.13.0 || ^18.12.0' },
npm WARN EBADENGINE   current: { node: 'v21.2.0', npm: '10.2.3' }
npm WARN EBADENGINE }

Dockerを立ち上げるのになんでnpmでnext-authをインストールするんだ? とりあえず無視

$ npm run docker:up image image

コンテナは立ち上がった

frontend

$ npm install -g yarn $ yarn install $ cp .env.example .env.local $ yarn dev -p 3001

とりあえず起動はした image API key requiredとは何か

この辺のどこかで本家からcloneしたのを消して https://github.com/Naokiakazawa/simplegrants/tree/verification からやることにした(akazawaさんが隣の席にいたのでその方が効率的と判断)

Sign upを動くようにする

.envのサンプルにはないけどcodeprocess.envから設定を読んでる。

  • GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET だけ設定することにした
  • OAuth 2.0

Setting up OAuth 2.0 - Google Cloud Platform Console Help 雑に設定してGOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETを入れたが'"ikm" must be at least one byte in length'になってしまった

redirect_uri_mismatch

ここまでできた

  • image
  • redirect urlを設定する必要があるのだな
  • サンプルもらった
    • image

frontendもdockerで動かす必要がある

READMEにそんなことは一言も書いてない

  • yarn installしてyarn dev -p 3001しろと書いてるのでいかにも普通に動きそう
  • しかしfrontendの.envでDATABASE_CONTAINERを参照しており(なぜ?Prismaは何をしてる?) .env.local
# Prisma ENV
DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DATABASE_CONTAINER}:5432/${POSTGRES_USER}?schema=public&connect_timeout=300"
  • そのためfrontendからコンテナの名前でアクセスが通る必要がある
    • docker-compose.yamlなどでnetworks: simplegrants的な設定をしている、これが大事、多分
    • frontendを起動した時に「Network Error」とトースターが出るのはこれが原因、多分

project rootでdocker composeする

  • $ docker compose -f docker-compose.dev.yml up --build

その後root/backendでDB初期化

  • $ cd backend
  • $ yarn setup :
All migrations have been successfully applied.
Environment variables loaded from .env
Running seed command `ts-node prisma/seed` ...

An error occurred while running the seed command:
Error: Command failed with ENOENT: ts-node prisma/seed
spawn ts-node ENOENT
  • こんなエラーが出るのだけど???

redirect_uri_mismatchの続き

  • 一度http://https://にするミスをした
  • 一歩進んだ
    • image

    • Publishing status: In productionにした

no PostgreSQL user name specified in startup packet

  • ログインダイアログはエラーにならずに完了したが
    • 2024-01-31 02:44:34.623 UTC [93] FATAL: no PostgreSQL user name specified in startup packet
    • ユーザデータを書き込もうとして死んでる...
  • 原因
    • $ docker compose -f docker-compose.dev.yml up --build
    • ここではdocker-compose.dev.ymlを使ってるのだから.env.productionではなく.env.localが読まれる
    • FIX: .env.productionに書いてたPOSTGRES_USER/POSTGRES_PASSWORDを.env.localにも書く

docker composeからやり直したらできた!

  • image
    • サンプルデータが入ってないぞ?
  • localhost:3000/apiでSwaggerが出るのは確認した
  • まだやってないこと: Stripeの設定

(C)NISHIO Hirokazu / Converted from Markdown (ja)
Source: [GitHub] / [Scrapbox]