---
# System prepended metadata

title: 分散SNSを作りたい件

---

# Overview

- ActivityPubに準拠した分散SNSが作りたい
    - Twitterが終わりそうなので、misskey垢を作ったんですが、思いのほか良かった（他SNSとの連携、deckが標準、カスタムスタンプ利用可）
    - discordのようにクローズだけど、気軽に呟けるようなSNSが欲しい
    - (ActivityPubの実装をしている記事を見て、楽しそうだったから <- ここ重要)
- 久々にプライベートでチーム開発をしたい
- （転職、就活などで使える実績が欲しい）

# Scope

- SNSとして利用可能なWeb UI
- ActivityPubに対応したpublic API実装
    - 他SNSに認識されるための最小限構成があるようなので、最小限+αでどこまで実装するかは相談して決めたい
        - [最小構成のActivityPubサーバ](https://scrapbox.io/activitypub/%E6%9C%80%E5%B0%8F%E6%A7%8B%E6%88%90%E3%81%AEActivityPub%E3%82%B5%E3%83%BC%E3%83%90)
    - 他SNSと上手くやっていく上で実装しないといけないこともあるようなのでこちらも最小限構成に含めて実装を行う
        - [ActivityPub標準ではないwell-knownな拡張スキーマ](https://scrapbox.io/activitypub/ActivityPub%E6%A8%99%E6%BA%96%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84well-known%E3%81%AA%E6%8B%A1%E5%BC%B5%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%9E)
- フロントエンド <->　バックエンドのinternal API実装

# Schedule

- MVP出すまでに半年程
    - 来年1月頃？師走でバタバタしそうなので要相談かもしれない
- 公開後の機能追加やbug fix etc.
    - こちらは継続して参加したい人だけ

# Member

未定
- 人数が多い場合、実装に入るまでは人数の制限をする可能性があり
    - 設計で細かく分けると、コミュニケーションコスト高すぎてやってられなくなりそうなので

# Tech Stack

- 他に希望があれば変更しますが、一旦は以下のように考えてます
- frontend
    - language: TypeScript
    - framework: Next.js
- backend
    - language: Go
    - framework: 後から決めます(Goでやる場合あまりframeworkに頼らない構成になる)

# Other

- 曜日は相談ですが、週次で定例mtgを開いて、進捗の確認、困りごとの確認などを行う予定です
    - 皆さん忙しいと思うので、参加必須とはしないです（週報的なものを出すだけでok）
- 皆さんCTRL所属 or 社会人ということもあり、基本的に開発言語などは個人で学習してもらう前提です
    - とはいうものの勉強会は随時開催予定
- どのような形であれ締め切りを作って開発します
    - モチベーション維持のためです。締め切りが明確になっていないプライベートでのチーム開発は破綻します(経験談)
