Skip to content

Takuto-Forge/PhotoCloud_CleanSecure

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PhotoCloud

家族専用のプライベートな写真・動画バックアップ&閲覧プラットフォーム。 祖父母や家族が、難しいアカウント登録やアプリインストールなしで、スマホからでも手軽に思い出のバックアップ・共有を行えることを目的に開発したフルスタック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

🔥 Technical Highlights(技術的アピールポイント)

1. Edge Runtimeにおける制約の克服

CloudflareのEdge Runtime環境では、標準のAWS SDKがNode.js固有のAPIに依存しているため動作しないという課題がありました。本プロジェクトでは、Web標準のFetch APIベースで動作する軽量ライブラリaws4fetchを採用し、署名付きURL(Presigned URL)の生成ロジックを独自に実装することで、ランタイムの制約を回避しつつセキュアなファイル操作を実現しました。

2. データベースレス(DBレス)アーキテクチャ

インフラコストの最小化と運用の簡素化のため、あえて外部データベースを採用していません。R2ストレージのオブジェクトパスにメタデータ(フォルダ属性やパスワード情報)を埋め込む独自の命名規則を設計することで、ステートレスかつメンテナンスフリーなシステムを構築しました。

3. コスト最適化(Egress料金ゼロ)

Cloudflare R2を採用することで、一般的なクラウドストレージで課題となるデータ転送量(Egress)課金を排除し、完全に無料で大容量(無料枠内10GB)のストレージ運用を可能にしています。


Developed by Takuto Okubo (Tokyo Denki University Graduate School)

About

自作Webサービス"PhotoCloud"のgithub 就活用に公開できるところだけ公開しています 家族専用の写真・動画クラウドです

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors