weblo: 2人のための共有空間 — モバイル、デスクトップ、Web を横断して
weblo は、2人が共通のプライベートな空間を共有するプラットフォーム横断型アプリです。共同ジャーナル、チャット、ビデオ通話を、モバイル、デスクトップ、Web で同期しながら利用できます。この空間は主にカップル向けに考えられています。
ホーム画面:ビデオ通話、ジャーナル、チャットへのクイックアクセス
私の役割
企画から実装まで一貫したソロプロジェクト — プロダクト、アーキテクチャ、プラットフォーム横断のフロントエンド(Expo、Electron、Web)、そしてリアルタイム同期を備えたセルフホスト可能なバックエンド。
weblo でできること
- 共有ジャーナル — 2人がリアルタイムで編集する共同キャンバス付き
- チャット — 2人の間でのやり取り
- ビデオ通話 — 共有空間内で直接(WebRTC)
- パートナーシップモデル — ちょうど2人を結ぶプライベートな空間(主なユースケースはカップル)
- 多言語対応(ドイツ語、英語、日本語)およびライト/ダークテーマ
通話コントロールを備えたビデオ通話画面
オンボーディング:アカウントを作成してパートナーとつながる
技術的な課題
- リアルタイムコラボレーション — 共有キャンバスとジャーナルのドキュメントは、Yjs(CRDT)と Hocuspocus の WebSocket サーバーを通じて同期され、オフライン時や再接続時でも双方の変更が収束するようになっています。
- 1つのプロダクト、3つのプラットフォーム — Expo のモバイルアプリ、Electron のデスクトップアプリ、そして Web を、コードベースを3つに分けることなく、共通の TypeScript 基盤で実現しています。
- セルフホスト可能なバックエンド — Hono サーバー(Bun)に Drizzle/Turso を組み合わせ、ファイルアップロードは MinIO、認証は Better Auth で行っています。
技術スタック
- フロントエンド: React、React Native(Expo)、Electron、TanStack Router、Tailwind、shadcn/ui
- バックエンド: Hono(Bun)、Drizzle ORM、SQLite/Turso、Better Auth、MinIO
- リアルタイム: Yjs(CRDT)+ Hocuspocus(WebSocket 経由)、ビデオ通話は WebRTC
- モノレポ: Turborepo、加えて Astro/Starlight のドキュメント
ステータス
weblo は動作するプロトタイプで、現在は一時停止中です。ライブ版は weblo-webapp.vercel.app で公開されています。


