このプロジェクトは、デジタル創作サークルUniProjectのためのOIDC認証基盤です。 Discord連携機能やアナウンス機能などを持ち合わせており、サークルの円滑な運営のために用いられています。
このプロジェクトはマイクロサービスアーキテクチャの思想を取り入れ、主に5つのコンポーネントに分離しています。
Goで作られたリソースAPIサーバーです。 ここで、UniQUEに保存されたすべてのデータを管理できます。
認証・認可サーバーです。 ここでは、Open ID Connect 1.0 / OAuth 2.0に基づいた処理を行っています。 また、フロントエンドから受け取る認証リクエストを処理しています。
フロントエンドです。 ユーザーは基本的のこのコンポーネントを経由しWebUIを用いてアクセスします。 Next.jsで制作されており、このコンポーネントからデータベースへのアクセスは許可されていません。
メールを送るためだけのシステムです。 ここであらゆる種類のメールのテンプレートと変換し、APIサーバー等から送信されたリクエストをもとにメールを配信します。
これは、マイグレーションファイルが含まれたデータベースマイグレーション用のコンポーネントです。 KubernetesのCronJobにより、1日1回、GitからCloneしたマイグレーションファイルをデータベースに反映します。
また、DBはMySQL互換です。
デプロイにはKustomizationを用いています。 kuatomizationsディレクトリ内のファイルをArgoCDを用いてデプロイしています。
暗号化のためには、下記条件を指定してください。
- mode - strict
- namespace - unique
- public key - cert.pem
コントリビュートに興味をお持ちいただき、ありがとうございます!
開発環境はdocker-composeを用いて整えることができます。
タグについては、下記のルールに従いましょう。
- semver 2.0を採用しています。
- 下記のprefixを必ずつけましょう
- front/v
- auth/v
- api/v
- mail/v
- db/v
このプロジェクトは、AGPL-3.0ライセンスの下で公開されています。詳しくは、LICENSEファイルをご覧ください。
このプロジェクトにおいて、大きな変化をもたらしてくださった方々です。 本当にありがとうございました。
- @sibapybot - サーバーを提供していただき、多くのアイデアを提供してくださいました。
- 倉林 雅 氏 - セキュリティ・キャンプ 2025 全国大会にて、様々なことを教えてくださいました。
その他すべてのコントリビューターおよびUniProjectメンバーに感謝します。
このリポジトリはmonorepoになる前の分離されたバージョンが存在します。 過去のバージョンを追うには下記リポジトリを参照してください。