ClusTime
ClusTimeは、共通の趣味や興味を持つ人々が「クラスタ」と呼ばれるコミュニティを形成し、活発に交流できるSNSアプリケーションです。FlutterとFirebaseを駆使して開発されており、リアルタイムなコミュニケーションを実現します。
ここではソースコード本体は公開せず、設計のみ公開します。
✨ 主な機能
- ユーザー認証: メールアドレス、Google、Appleアカウントによる安全なサインアップとログイン機能を提供します。
- クラスタ(コミュニティ):
- ユーザーは自由にクラスタを作成し、参加できます。
- 公開/非公開(承認制)の設定が可能です。
- クラスタごとにプロフィール(バナー、アイコン、説明、ルール)をカスタマイズできます。
- 投稿:
- テキスト、複数画像の投稿が可能です。
- いいね、返信、リポスト、引用リポストといった基本的なSNS機能を網羅しています。
- 投稿のエンゲージメント(いいね、リポストしたユーザー)を確認できます。
- 通知:
- いいね、リプライ、リポストなどのアクションをリアルタイムで通知します。
- Firebase Cloud Messaging (FCM) を活用し、アプリがバックグラウンドや終了状態でも通知を受け取れます。
- 管理機能:
- 不適切な投稿やユーザーを通報する機能があります。
- 管理者向けのレビューパネルで、通報内容の確認と対応(承認、削除など)が可能です。
📱 スクリーンショット





🧑💻 技術情報
技術スタックや設計の詳細は、GitHub の README をご覧ください。
🧩 ケーススタディ
役割・体制・責務
本プロジェクトは エンジニア2名+デザイナー1名 の体制で開発しました。私はエンジニアとしてフロントエンド全般とiOS版の実装を担当し、Dartコードの設計から実装までをリードしました。もう一名のエンジニアは Firebase Cloud Functions を中心に、投稿取得やプロフィール管理などのサーバーサイド処理を担当しました。Feature‑Driven Design とレイヤードアーキテクチャを徹底し、機能単位の関心分離と責務の明確化によって保守性を高めています。
目標・制約・意思決定
実質2名という限られた体制とスケジュールの中で、開発速度・運用容易性・マルチプラットフォーム対応を優先しました。そのため、ネイティブ個別実装ではなく Firebase × Flutter を採用。認証・リアルタイムデータ・サーバーサイドロジック・通知は Firebase(Auth / Firestore / Functions / FCM)に集約し、クライアントはユーザー体験に専念できる構成としました。