システム概要
yukuyuku-appは、Next.js 15とFirebaseを使用したモダンな旅行管理アプリケーションです。 PWA対応により、モバイルアプリのような体験を提供します。
技術スタック
フロントエンド
- • Next.js 15 (App Router)
- • React 18
- • TypeScript
- • Tailwind CSS
- • Lucide React Icons
- • next-pwa (PWA)
バックエンド・インフラ
- • Firebase Authentication
- • Firestore Database
- • Vercel (デプロイ)
- • GitHub Actions (CI/CD)
ディレクトリ構造
src/
├── app/ # Next.js App Router
│ ├── docs/ # 開発者向けドキュメント
│ ├── join/[code]/ # 旅行招待ページ
│ ├── trip/[tripId]/ # 旅行詳細ページ
│ ├── globals.css # グローバルスタイル
│ ├── layout.tsx # ルートレイアウト
│ └── page.tsx # ホームページ
├── components/ # 再利用可能コンポーネント
│ ├── Header.tsx
│ ├── LoginModal.tsx
│ ├── CreateTripModal.tsx
│ └── ...
├── contexts/ # React Context
│ └── AuthContext.tsx # 認証状態管理
├── lib/ # ユーティリティ・設定
│ ├── firebase.ts # Firebase設定
│ ├── firestore.ts # Firestore操作
│ └── constants.ts # 定数・ヘルパー
└── types/ # TypeScript型定義
└── index.ts
データフロー
認証フロー
データフロー
旅行管理フロー
- ユーザーが旅行を作成(招待コード自動生成)
- 招待URLで他のユーザーを招待
- メンバーがスケジュール・メモ・チェックリストを編集
- リアルタイムでFirestoreに変更を保存
認証・認可
アクセス権限
- 読み取り: メンバーのみ(memberIds に含まれるユーザー)
- 作成: 認証済みユーザー
- 更新: メンバーのみ
- 削除: 作成者のみ
- ゲスト: 閲覧専用(招待URL経由のみ)
パフォーマンス最適化
フロントエンド
- • Next.js App Router(サーバーコンポーネント)
- • 動的インポートによるコード分割
- • PWAによるオフライン対応
- • 画像最適化(next/image)
バックエンド
- • Firestoreインデックス最適化
- • バッチ処理によるwrite操作効率化
- • CDN配信(Vercel Edge Network)
デプロイメント
CI/CD パイプライン
- GitHub mainブランチへのpush
- Vercelが自動でビルド・デプロイ
- プレビューデプロイメント(Pull Request時)
- 本番環境への自動反映
今後の拡張予定
機能拡張
- しおり印刷機能
- PDFのオフライン対応
- 日付未定欄設置
- ブックマーク機能
- ダークモード対応
- 言語共通化(i18n)