---
# System prepended metadata

title: 通貨基盤サービス

---

## 通貨管理サービス

### Discord Roles

- OWNER
    - `1176520186044633229`
- モデレーター
    - `1176556668285370379`

### どんなことするのか？

#### actor
- 管理人
    - 通貨初期化
    - 通貨配布
    - 通貨の配布履歴
    - 賭け管理画面?
- ユーザ
    - ユーザー登録
    - 通貨残高確認
- 賭けサービス
    - ユーザの残高増減


### FrontEnd
まず何をしたいのか
それぞれの違いから選定する

#### 求められている機能
- admin側
    - 全ユーザの料金リセット
    - 

##### 11/23

- Webアプリ (Adminのみ)
	- （Discord認証でのログインなら簡単に弾けそう）
		- 運用開発陣の管理アクセスは？
		    - データベースで管理する？（sysテーブルで管理）
	- 賭けの作成など (CRUD)
	- ポイント付与処理
	- 賭け処理（モデサイド）
	- 宝くじ処理
	    - Discord IDでuniqueに管理？
	    - クジ側にIDを付けて管理？
	    - 一人一枚の想定か確認必要かと
	        - コインで購入できるようにするなどは要ヒアリング


#### 使用技術候補

~~- Vue(Nuxt.js)　
    - 双方向バインド（依存関係が複雑になる可能性）
    - NuxtAuthも一応ある~~
- Next.js(React.js)　←これで行く
    - 単方向バインド（依存関係が単一）
    - 認証周りが楽 (NextAuthを使う)
- UI
    - MUI ←これで行く
    ~~- Chakra~~
    ~~- Mantine (+ Tailwind)~~
    ~~- Tailwind~~
- StoryBook は作成する
    - Chromatic

```
npx create-next-app@latest
```

```
What is your project named?  my-app
Would you like to use TypeScript?  No / Yes → Yes
Would you like to use ESLint?  No / Yes → Yes
Would you like to use Tailwind CSS?  No / Yes → No
Would you like to use `src/` directory?  No / Yes → Yes
Would you like to use App Router? (recommended)  No / Yes → Yes
Would you like to customize the default import alias (@/*)?  No / Yes → Yes
```


- Pretter
- StoryBook
- MSW
- EditorConfig 
- (husky)
- (renovate bot)

#### ログイン認証関連

https://zenn.dev/yuto76/articles/discord-nextauth-login
https://discord.com/developers/docs/resources/user#get-current-user-guilds
https://discord.com/developers/docs/resources/user#get-current-user-guild-member

- Discordのロールを見る。
- 運用・開発陣用のロールも作ってもらう

### BackEnd
- (API)ユーザの登録
- (API)ユーザの通貨増減
    - 通貨増減が外向けなのでswaggerで定義してあげると良い？
    - 増/減 で二つ生やした方が良さそう？
- (API)送金履歴の閲覧

#### 使用技術
##### 言語
- node.js (TypeScript) ver.20
    - フレームワーク
        - Nest.js
    - npm
           
- Docker
    - Alpine linux
    - Multi-stage build

###### DB
- MySQL
- NoSQL (Dynamo)

###### 確認したいところ
- 各メンバーのスキル確認
- 実開発メンバーの確認（role）
- 結合時に必要な部分のすり合わせ（疎通確認）
- 交流会

### Discord Bot

#### 使う技術
- discord.js　前回こっちで行くみたいな話あり
- discord.py　ライブラリが充実

#### 何をするのか？
- ユーザー
    - ユーザー登録
    - ユーザの残高を確認する
    - ユーザー通貨の増減登録を行う
    - 定期コインの受け取り（Admin配布以外でもユーザーが期間内にコマンドを実行することでコインを受け取ることができる。イベントに参加しないユーザーのデータを作成しない方が管理的にみたいな話をしていた気が？）
- Admin
    - Adminからユーザーに対し一括で通貨配布
    - ユーザーの通貨残高の確認
    - ユーザーの個々の情報を取得（統合するなら、通貨残高。通貨の増減で参加したイベント情報。）

