プラットフォームプラットフォーム
🎯 サービス概要
誰でも「投稿プラットフォーム」を簡単に作成できるサービス。
テキスト・リンク投稿を中心に、いいね等のリアクション機能やランキング表示を備えたシンプルなプラットフォームを手軽に構築可能。
🧑💻 ユーザー種別と権限
table:_
種別 権限
プラットフォームオーナー プラットフォームの作成・管理(タイトル・説明・カバー画像・投稿形式設定・公開設定・URL指定など)
一般ユーザー アカウント登録後、各プラットフォームで投稿・閲覧・リアクションが可能
管理者(運営) 不正利用対応・法的準拠監視・障害対応(将来的に実装)
🔧 機能要件
プラットフォーム作成・管理
タイトル・説明・カバー画像設定
投稿可能形式(初期はテキスト・リンクのみ)
公開設定(基本は公開、将来的に下書きステータスあり)
URL指定(サブディレクトリまたはランダムURL)
投稿機能
投稿形式:テキスト(Markdown / プレーン)、外部リンク
メタデータ:タグ、投稿日、作成者名
投稿はアカウントありのみに制限
リアクションボタン(いいね等)
コメント機能はプロトタイプではなし
ランキング
更新方式は実装しやすい方法(リアルタイム or バッチ)
レコメンド
プロトタイプでは未実装
将来的に機械学習ベースで実装予定(疎結合設計)
通知
プロトタイプでは未実装
将来的にWeb/メール通知対応(モバイル通知は検討段階)
🛠 技術・運用方針
table:_
項目 初期対応 将来的に検討
投稿の保存形式 テキスト・リンクのみ 画像・音声・動画アップロード
投稿ストレージ 不要(外部埋め込み対応) S3等クラウドストレージ
認証方式 メール+パスワード / OAuth(オーナー・一般ユーザー必須) SNSログイン等の追加
インフラ Cloudflare(予定、制約確認中) AWS/GCP等への移行検討
バックアップ なし 本番運用時に導入
スケーラビリティ 設計段階で考慮 必要時に実装
セキュリティ 法律遵守(著作権・個人情報保護法) ガイドライン・通報機能導入
💸 マネタイズ方針(将来)
プラットフォームオーナーが収益化できる仕組みを提供(例:投げ銭、広告、サブスク)
サービス手数料モデルを想定
📌 補足設計指針
PWA・アプリ化は不要(Webベースで完結)
プラットフォーム間の連携機能は不要
初期はスモールスタートを前提に、スケールアップ可能な構成で設計
レコメンドや収益化は将来的なフェーズで優先
code:marmaid
erDiagram
USERS ||--o{ PLATFORMS : "owns"
USERS ||--o{ POSTS : "authors"
PLATFORMS ||--o{ POSTS : "has"
POSTS ||--o{ POST_REACTIONS : "receives"
USERS ||--o{ POST_REACTIONS : "adds"
REACTIONS ||--o{ POST_REACTIONS : "catalog"
POSTS ||--o{ POST_EVENTS : "events"
USERS ||--o{ POST_EVENTS : "by user"
REACTIONS ||--o{ POST_EVENTS : "for reaction events"
USERS {
bigint id PK
varchar email "UNIQUE"
varchar name
varchar password_hash
}
PLATFORMS {
bigint id PK
bigint owner_user_id FK "-> USERS.id"
varchar title
text description
varchar image
varchar slug UK
}
POSTS {
bigint id PK
bigint platform_id FK "-> PLATFORMS.id"
bigint user_id FK "-> USERS.id"
enum type "text, link"
blob body
varchar title
varchar thumbnail_image
enum status "draft, published"
}
REACTIONS {
bigint id PK
varchar name
varchar image
}
POST_REACTIONS {
bigint id PK
bigint post_id FK "-> POSTS.id"
bigint user_id FK "-> USERS.id"
bigint reaction_id FK "-> REACTIONS.id"
%% UNIQUE "post_id, user_id, reaction_id"
}
POST_EVENTS {
bigint id PK
bigint platform_id FK "-> PLATFORMS.id"
bigint post_id FK "-> POSTS.id"
bigint user_id FK "-> USERS.id"
varchar session_id
enum type "view, reaction"
bigint reaction_id FK "-> REACTIONS.id"
}