家族専用のプライベートな写真・動画バックアップ&閲覧プラットフォーム。 祖父母や家族が、難しいアカウント登録やアプリインストールなしで、スマホからでも手軽に思い出のバックアップ・共有を行えることを目的に開発したフルスタックWebアプリケーションです。
- アクセシビリティ: スマホ操作に詳しくない祖父母でも、URLアクセスと共通パスワードのみで簡単にバックアップ。
- モバイルファースト: スマホからでも手軽にバックアップ&閲覧。
- プライバシー: 家族内でも個別のプライバシーを確保できるよう、フォルダごとに独自のパスワード設定が可能。
その他にも
- USBなどのハードにバックアップすると再閲覧や取り出しが面倒(PCに挿して読み込みなど)
- 既存のクラウドサービスでは大体アカウントが必要 -> 祖父母が忘れてしまうし設定が面倒
- アカウントが消えてしまったら写真も消えてしまう
- 一つの場所で、バックアップもできて、家族みんなで写真を見れて思い出共有できたら良いのでは?
- アプリとしてインストールするのも手間!
これらを解決するべく開発しました。
- Framework: Next.js 15 (App Router)
- Runtime: Cloudflare Pages (Edge Runtime)
- Storage: Cloudflare R2 (S3互換オブジェクトストレージ)
- Language: TypeScript
- Styling: Tailwind CSS
- Authentication: NextAuth.js
- Library: aws4fetch
CloudflareのEdge Runtime環境では、標準のAWS SDKがNode.js固有のAPIに依存しているため動作しないという課題がありました。本プロジェクトでは、Web標準のFetch APIベースで動作する軽量ライブラリaws4fetchを採用し、署名付きURL(Presigned URL)の生成ロジックを独自に実装することで、ランタイムの制約を回避しつつセキュアなファイル操作を実現しました。
インフラコストの最小化と運用の簡素化のため、あえて外部データベースを採用していません。R2ストレージのオブジェクトパスにメタデータ(フォルダ属性やパスワード情報)を埋め込む独自の命名規則を設計することで、ステートレスかつメンテナンスフリーなシステムを構築しました。
Cloudflare R2を採用することで、一般的なクラウドストレージで課題となるデータ転送量(Egress)課金を排除し、完全に無料で大容量(無料枠内10GB)のストレージ運用を可能にしています。
Developed by Takuto Okubo (Tokyo Denki University Graduate School)