🖥️ フロントエンドのセットアップとUI構築
このセクションから、ユーザーが実際に操作するフロントエンドアプリケーションを構築していきます。
バックエンドで準備したスマートコントラクトやゼロ知識証明の仕組みを、ユーザーが直感的に使えるように繋ぎこむ、非常に重要なパートです!
このプロジェクトのフロントエンドは、Next.js をベースに、TypeScript、Tailwind CSS、そしてUIコンポーネントライブラリの shadcn/ui を使用して、モダンで洗練されたUIを効率的に構築します。
最初のレッスンでは、フロントエンドプロジェクトの全体像を把握し、基本的なUIコンポーネントがどのように配置されているかを確認します。
📂 フロントエンドの構造
まず、pkgs/frontendディレクトリの構造を見て、どこに何が書かれているかを理解しましょう。
pkgs/frontend
├── public/ # 静的アセット
│ ├── logo.png # アプリケーションロゴ
│ └── zk/ # ゼロ知識証明関連ファイル
│ ├── PasswordHash.wasm # コンパイルされた回路
│ └── PasswordHash_final.zkey # 証明鍵
├── app/ # Next.js App Router - URLルーティングとページの定義
│ ├── api/ # API Routes
│ │ ├── generateProof/ # ZK証明生成API
│ │ │ └── route.ts
│ │ └── hash-password/ # パスワードハッシュAPI
│ │ └── route.ts
│ ├── dashboard/ # ダッシュボードページ("/dashboard")
│ │ └── page.tsx # ダッシュボードのメインコンポーネント
│ ├── layout.tsx # アプリケーション全体のレイアウト
│ ├── page.tsx # ルートページ("/")のコンポーネント
│ └── globals.css # グローバルスタイルとTailwind CSSのインポート
├── components/ # 再利用可能なUIコンポーネント
│ ├── ui/ # shadcn/uiの基本コンポーネント
│ │ ├── button.tsx # ボタンコンポーネント
│ │ ├── card.tsx # カードコンポーネント
│ │ ├── input.tsx # インプットコンポーネント
│ │ ├── label.tsx # ラベルコンポーネント
│ │ └── loading.tsx # ローディングコンポーネント
│ └── layout/ # レイアウト関連コンポーネント
│ └── header.tsx # ヘッダーコンポーネント
├── providers/ # React Context Providers
│ ├── privy-providers.tsx # Privyプロバイダー
│ └── toaster-provider.tsx # トーストプロバイダー
├── hooks/ # カスタムReactフック
│ └── useBiconomy.ts # Biconomyフック
├── lib/ # ユーティリティ関数とライブラリ設定
│ ├── utils.ts # 汎用ユーティリティ関数
│ ├── abi.ts # スマートコントラクトABI
│ └── zk-utils.ts # ゼロ知識証明関連のユーティリティ
├── types/ # TypeScript型定義ファイル