ba-cafe

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

README.md (4066B)


      1 # Cafe Timer
      2 
      3 「Cafe Timer」は、ゲーム『ブルーアーカイブ』のカフェ機能を支援する非公式ファンメイドツールです。<br />
      4 生徒さんのカフェ訪問タイミングを通知でお知らせし、先生方の業務をサポートします。
      5 
      6 ### 主な機能
      7 - **高精度カウントダウン**: 生徒さんの再タップタイミング(3時間)および訪問タイミング(4:00/16:00 JST)をカウントダウン。
      8 - **招待券管理**: 招待券使用後のクールタイムを可視化。
      9 - **タップ履歴のアーカイブ**: 月ごとのタップ履歴をカレンダー形式で確認。画像として保存・共有も可能。
     10 - **プッシュ通知**: ブラウザを閉じていても、OneSignal 連携により次のタイミングを通知。
     11 
     12 ### 対応プラットフォーム
     13 PCおよびスマートフォンの最新ブラウザに対応。<br />
     14 PWA (Progressive Web App) に対応しているため、ホーム画面に追加することでネイティブアプリのような体験を提供します。
     15 <br /><br />
     16 
     17 ## 技術スタック
     18 
     19 | カテゴリ          | 技術                                |
     20 | :------------ | :-------------------------------- |
     21 | Framework | Next.js (App Router) |
     22 | Styling | Tailwind CSS |
     23 | Database/Auth | Supabase (PostgreSQL) |
     24 | Notification | OneSignal SDK |
     25 | Deployment | Cloudflare Pages |
     26 | Build Tool | @cloudflare/next-on-pages |
     27 | PWA | @ducanh2912/next-pwa |
     28 <br />
     29 
     30 ## セットアップ & 開発
     31 
     32 ### 1. 依存関係のインストール
     33 ```
     34 npm install
     35 ```
     36 
     37 ### 2. 環境変数の設定
     38 `.env.local` を作成し、以下のキーを設定してください。
     39 
     40 - `NEXT_PUBLIC_SUPABASE_URL`
     41 - `NEXT_PUBLIC_SUPABASE_ANON_KEY`
     42 - `NEXT_PUBLIC_ONESIGNAL_APP_ID`
     43 - `ONESIGNAL_REST_API_KEY`
     44 
     45 ### 3. 開発サーバーの起動
     46 ```
     47 npm run dev
     48 ```
     49 <br />
     50 
     51 ## ビルド & デプロイ
     52 Cloudflare Pages での動作に最適化されています。
     53 
     54 ### Cloudflare Pages ビルド設定
     55 - Build command: `npx @cloudflare/next-on-pages@1`
     56 - Build output directory: `.vercel/output/static`
     57 
     58 ## 主なディレクトリ構造
     59 - `src/app/`: Next.js メインロジック
     60   - `api/tap/route.ts`: カフェタップ記録、プロフィール更新、OneSignal 通知予約を行う Edge Runtime API
     61   - `layout.tsx`: アプリケーションの共通レイアウト構造
     62   - `page.tsx`: メインのダッシュボード画面。タブ切り替えやオーバーレイ表示を管理
     63   - `providers.tsx`: 認証やテーマなどのコンテキストプロバイダー
     64   - `manifest.ts`: PWA 設定を定義するマニフェストファイル
     65   - `globals.css`: スタイル定義
     66 - `src/components/`: 再利用可能な UI コンポーネント
     67   - `Header.tsx` / `BottomNavBar.tsx`: ナビゲーション UI
     68   - `TimerDashboard.tsx`: カウントダウン表示とタップ操作のメイン UI
     69   - `HistoryCalendar.tsx`: 月別タップ履歴を表示するカレンダー
     70   - `Settings.tsx`: 通知設定、データ削除、ログアウト、各種情報へのリンクを管理
     71   - `SidePanel.tsx`: 設定画面などを表示するスライドパネル
     72   - `pages.tsx`: 利用規約やプライバシーポリシーなどの定型文コンテンツを格納
     73   - `OneSignalInit.tsx`: OneSignal SDK の初期化コンポーネント
     74 - `src/hooks/`: カスタムフック
     75   - `useAuth.tsx`: Supabase Auth を利用した認証状態の管理
     76   - `useTheme.tsx`: ダークモードなどのテーマ切り替え管理
     77 - `src/lib/`: ユーティリティと定数
     78   - `timeUtils.ts`: ブルーアーカイブの仕様(4:00/16:00更新)に基づいた時刻計算ロジック
     79   - `messages.ts`: プッシュ通知で使用するランダムメッセージ集
     80 - `public/`: アイコン画像や静的アセット
     81 <br /><br />
     82 
     83 ## 免責事項
     84 本ツールは個人による非公式のファンメイド作品であり、株式会社NEXON、株式会社Yostar、および『ブルーアーカイブ』公式とは一切関係ありません。