- Node.jsのv18.17.1をインストールします
- 本リポジトリをクローンします
$ cp .env.example .env
$ npm install
$ npm run db:create
package.json
の"type": "module",
を一時的に消す- これはマイグレーションとシーダーがESMではなく、CommonJSのため
$ npm run db:migrate
$ npm run db:seed
package.json
の変更を元に戻す
$ npm run dev
$ brew install ngrok
- https://dashboard.ngrok.com/login にアクセスしてログインする
$ ngrok config add-authtoken <your authtoken>
$ ngrok http 3000
$ open https://xxxx.ngrok-free.app
# ngrokのダッシュボードの確認
$ open http://127.0.0.1:4040
$ npm run db:drop
$ npm run db:migrate:clear
$ npm run db:seed:clear
-
GET /question
ランダムに問いを取得curl --location 'localhost:3000/question'
{ "id": 1, "question": "人はなぜ争うのか?", "createdAt": "2023-08-19T05:12:20.896Z", "updatedAt": "2023-08-19T05:12:20.896Z" }
-
POST /answer
考えた問いを保存- サーバーサイドでトークンを付与
curl --location 'localhost:3000/answer' \ --header 'Accept: application/json' \ --header 'Content-Type: application/json' \ --data '{ "question_id": 1, "step_count": 1024, "wallet_address": "hoge", "answer": "動物としての本能です。" }'
// empty response
- サーバーサイドでトークンを付与
-
POST /cunning
指定した問いの答えをカンニング- クライアント側で支払いが完了した後でリクエスト
curl --location 'localhost:3000/cunning' \ --header 'Content-Type: application/json' \ --data '{ "question_id": 1 }'
{ "id": 1, "questionId": 1, "answer": "坊やだからさ", "createdAt": "2023-08-19T05:12:20.904Z", "updatedAt": "2023-08-19T05:12:20.904Z", "Question": { "id": 1, "question": "人はなぜ争うのか?", "createdAt": "2023-08-19T05:12:20.896Z", "updatedAt": "2023-08-19T05:12:20.896Z" } }
- クライアント側で支払いが完了した後でリクエスト
IERC20.json
は uyupun/dct-cng-token-issuer にてスマートコントラクトをコンパイルした際に生成されるファイルですartifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json
を本リポジトリにコピーしています