LGTM画像を投稿・シェアするサービスをエッジな構成で作りました
はじめに
LGTM画像を投稿・シェアするサービスをプラハの有志メンバー達と一緒に作りました。
今回はこちらのサービスについて紹介させて頂きます。
サービスの紹介
LGTM画像を投稿・シェア出来るサービスです。
Goodの文字は変更可能で、下記のようにLooks Cat To Me
といった画像も投稿できます。
僕の愛猫「くるり」ちゃんです
LooksToMe
は下記のOrganizationの元で管理されており、AGPL3.0のOSSとして公開しています。
使い所
PRをApproveする際などに、「LGTM」とコメントする代わりに利用する事を想定しています。
Goodを通り越して神な時はLooks God To Me。
寿司食いてぇなって時はLooks Sushi To Meと、その時の気分に合わせて使う事ができます。
なぜ作ったのか
既存のLGTM画像サービスを個人的に利用していたのですが、下記のような不満点がありました。
- サービスがダウンしている事がそこそこある
- 不適切な画像が表示される事がそこそこある
- 文字が縁取りされていないので、背景によっては文字が見えなくなる
- に対応していないので都度ページリロードするしかない
- 投稿した後にレスポンスが無く、投稿できたのかどうかわからない
- 同じ画像が何度も投稿されている事があるのは恐らくこれが原因
CEOとの1on1の中で、LGTM画像サービスを作ってみたいという話をした際、「それは面白そうだね。週に1回、業務時間を使って取り組んでもいいよ」というありがたい提案をいただき、それに従いプロジェクトをスタートすることになりました。
追加予定の機能
現時点では最低限の機能しかなく、閲覧と投稿ができるのみとなっています。
- Tag機能
- 投稿にTagを付与出来るようにする機能です。
- Tagで投稿を検索できるようにする想定です。
- Star機能
- 投稿にStar(お気に入り)を付けれる機能です。
- GitHubのようにStarリストを作れるようにする想定です。
- Fork機能
- 投稿をFork(複製)できる機能です。
- Goodの文字部分を変更した投稿を複製できるようにする想定です。
- Block機能
- 投稿/アカウントをBlock(非表示)出来る機能です。
- Block数が多い投稿/アカウントは自動で削除する等の機能も考えています。
- ActivityPub対応
- Edge環境でActivityPubを実装するのが現実的に可能なのか不明
他にもこんな機能が欲しいという要望がありましたら、下記のレポジトリにissueを頂けると嬉しいです。
技術構成
Cloudflare上にNext.jsをデプロイしAppRouterフル活用で稼働しています。
下記が利用している技術スタックです。
- サーバー
- Cloudflare Pages
- 下記のライブラリ用いて、Next.jsをデプロイしています。
- https://github.com/cloudflare/next-on-pages
- Cloudflare Workers
- 画像合成Worker
- Cloudflare Imagesを用いた画像合成Workerが動いています。
- CDN Worker
- Cloudflare Imagesのコスト対策でCloudflare R2にキャッシュするCDN Workerが動いています。
- 画像合成Worker
- Cloudflare Pages
- 画像配信
- Cloudflare Images
- Cloudflare R2
- データベース
- Cloudflare D1
- 認証
- Supabase Auth
- NextAuthがEdge環境にまだ対応していなく、ここだけSupabaeを使っています。
- Edge対応のNextAuthが公開され次第乗り換えたいです。
- Supabase Auth
最後に
最後まで読んでいただきありがとうございました。
今後も継続して開発していく予定なので、ぜひ利用していだけると嬉しいです。
最後に、業務時間を利用する許可をくださったCEO、そして開発に参加してくれた有志メンバーの皆様に心から感謝申し上げます。
Discussion