以下TwiHikaは私の作っているちょっとしたツール群の名前です。
自分で使うツールやスニペットを再利用可能な単位で分割してmonorepoで開発してます。
※ 個人開発なので、実務で使うコードの半分くらいのクオリティで書かれている前提で見てください。絶賛リファクタ中。
実現したかったシステム
-
ログインやユーザー管理は中央集権的に行いたいので、GoogleやTwitter、KeyCloakをIdProviderとして各サービスに対してユーザー情報を共有する。FirebaseAuthentication事態がStorageなので楽。
-
個人開発でminimalな機能を持ったサービスをリリースしていきたいので、1サービス1ドメインで別のソースを参照してます。
-
共通する処理などはmonorepoでソースコードを共有する仕組み。
-
バッチ処理を書くと大体オーバーヘッド高くなったり、バッチ処理の順番の制御など暗黙知が多くなるのでChange Data Captureベースを中心としたシステム間の連携。
- Prisma
- Next.js
- TanStack(旧React Query)
- ElasticSearch
- Debezium
- RDB(CloudSQL)
- Hasura
- ChakraUI
- tweetの除外機能 (対象のツイートのみの除外、特定のユーザーが投稿したツイート全ての除外)
- ひとこと: 除外機能は、動機的に削除するのはElasticSearchのデータのみで、あとは、非同期に削除できる場所を用意。
- 検索機能(ページング、日付絞り、取得したカテゴリベースの検索)
- ひとこと:elasticsearchで検索用のリードモデルを作成しているの要件次第で柔軟な検索を作ることができる。
- ログインしてない場合に除外機能のボタンを押すと、クライアントサイドでリダレクトする。他はログインユーザーへの提供機能に同じ
- Prisma
- Next.js
- RDB(CloudSQL)
- Firebase Authentication
- CloudFunctions
- ChakraUI
- Googleを使ったログイン(FirebaseAuthentication)
- メールアドレスでのログイン(FirebaseAuthentication)
- KeyCloakを使ったOIDCログイン(サービス管理者)(FirebaseAuthentication)
- パスワードリセット(FirebaseAuthentication)
- メールアドレスでの新規登録(FirebaseAuthentication)
- CookieベースでトップレベルのドメインでJwtSessionを共有
- リダイレクトURLの検証とリダイレクト