#001カロリーチ

カロリーチ

カロリーチ

毎日のカロリーを管理するWebアプリです。

Next.js、Supabase、Honoを使用し、認証機能やCRUD機能を実装しました。データベース設計からバックエンドAPIの実装まで、一貫して担当しています。

制作期間:120日

制作のきっかけ

毎日のカロリー管理を簡単にしたい

スクールのオリジナルアプリ制作課題として、身近な課題を解決できるアプリを作りたいと考えました。

友人がメモ帳アプリで日々の摂取カロリーを管理しているのを見て、食事ごとのカロリー検索や目標値までの計算に手間がかかることを知りました。

そこで、1食ごとの記録をより簡単に行えるWebアプリを制作しました。

こだわりポイント

レギュラーフードの登録

毎日摂取するものを予め登録して、ワンタップで記録できる機能を実装しました。頻繁に摂取する、白米250gやプロテイン100gなどを簡単に記録が可能となりました。

食事検索機能

食品マスタを作成し、検索後該当した食品のカロリーを自動計算する機能を実装しました。摂取した食事のカロリーをWeb検索をして、食べた量から摂取カロリーを計算する作業を一括で行えるようにしました。

苦労したこと

データのキャッシュ管理

課題

食事記録の追加・編集・削除に伴い、記録一覧や合計カロリーなど、複数の関連データをユーザー操作に合わせて更新する必要がありました。

また、初回表示で取得したデータと、クライアント側で管理するデータをどのように連携させるかが課題となりました。

解決

TanStack QueryのqueryKeyをデータの種類ごとに整理し、CRUD操作後に関連するキャッシュを無効化して、必要なデータを再取得するように実装しました。

また、サーバー側で取得したデータをHydrationによってクライアント側のキャッシュへ引き継ぎました。

認証付きAPI実装

課題

Hono.js導入後、サーバーコンポーネントとクライアントコンポーネントでは実行環境が異なるため、認証付きAPIを共通の実装で利用できず、リクエストで認証エラーが発生しました。

解決

実行環境ごとにSupabaseからJWTを取得するHono RPCクライアントを作成し、API呼び出し関数もサーバー用・クライアント用に分けました。

これにより、SSR・CSRの両方から認証付きAPIを利用できるようにしました。