Giter Club home page Giter Club logo

i-hate-to-eat's Introduction

「Eat this 4 now」

概要

初回の転職時に使用したポートフォリオです。

食事が嫌い」「食事について考えることにさえ疲れた」、という方のための食事提案・リマインドツールです。


主な機能

  • 年齢・身長・体重等のパーソナルデータから、栄養摂取基準を算出
  • 日本食品標準成分表2020年版(八訂)を参考に、栄養価の高い食材を選別
    「最低限これだけでも食べませんか」という4つの食材を提案
  • 設定した時間に、食事内容の提案とともに食事を促すメッセージを送るリマインド機能
  • 提案した食材の記録をもとに、目標栄養摂取量に対する達成度を算出

app_line_description


ターゲット

  • 食事が嫌いで、メニューについて考えることすら負担と感じる方。
  • なにかに取り組んでいるとつい食事をとることを忘れてしまう、という方。
  • 既存の栄養管理サービスについて、機能が豊富すぎて逆に使いにくいと感じている方。

課題と背景

「食事は楽しいもの」……それが当たり前でない人も、世の中にはいます。
けれども実際問題、栄養はとらなければ生きていけません。
ならば少しでも、食事について考える時間を削減したいと考える方も多いのではないでしょうか。


注意

本サービスは、食事をとらないこと、または不健康な食生活を推奨・助長することを目的としたものではございません

また、食事メニューの提案機能に関しては「これさえ食べていれば健康を維持できることを保証するものではありません
あくまで「栄養素を多く含む」という点でおすすめの食材をレコメンドするものであり、
最終的な食事内容の決定は、皆様ご自身の意思と判断のもと行うようお願いいたします。


画面遷移図

https://figma.fun/9WCOQp


ER図

https://drive.google.com/file/d/1uh3RqokIwJ2ApwKBgfC2SGmrMDQr59AZ/view?usp=sharing


i-hate-to-eat's People

Contributors

bluegrass322 avatar

Stargazers

ogixxx avatar

Watchers

 avatar

i-hate-to-eat's Issues

Google Analyticsの導入

概要

アクセス解析ツールであるGoogle Analyticsを導入する。

タスク

  • Google Analytics登録
  • 設定用コードの追加

フロントエンドをリファクタリング

概要

フロントエンド、その中でもScriptをメインにリファクタリングを行う。
HTML & CSSについても明らかにおかしい点は修正するが、本格的な修正は後に回す。

タスク

  • リファクタリング
  • リントチェック
  • 動作確認

管理画面の作成

概要

ジェムを使用せず、管理者用画面を作成する。
また、既に作成したUserモデルのCRUD機能も実装する。

タスク

  • admin用コントローラーの作成
  • admin/usersコントローラーの作成
  • CRUD機能の作成
  • ビューの作成
    • index
    • show
    • new
    • edit
  • リントチェック
  • 動作確認

Github Actionsの設定

概要

Github Actionsを設定し、今後プルリクエストが投げられるごとに自動でリントチェックやテストの実行、Herokuへのデプロイが行われるようにする。

タスク

  • rubocopのインストール
  • ESLint・Prettierのインストール
  • 時現時点でのリントチェック
  • 設定ファイルの作成

バックエンドをリファクタリング

概要

ここまでで作成したバックエンドのコードのリファクタリングを行う。
大きく改善とまでいかなくとも、1行2行でも減らすことを目標とする。

タスク

  • モデル
  • apiコントローラー
  • lineコントローラー
  • rakeタスク
  • リントチェック
  • 動作確認

開発効率向上用のジェムのセットアップ

概要

i18nやデバッグなど、開発において最低限必要になるジェムをインストール。
それぞれについて初期設定を行う。

タスク

  • ジェムのインストール
  • 動作確認

VeeValidateで新規登録フォームにバリデーションを追加する

概要

vee-validateを導入し、フロントでのバリデーションを可能にする。
また、すでに作成したユーザー新規登録ページにバリデーションを適用する。

タスク

  • インストール
  • 設定ファイルの追加
  • 新規ユーザー登録用フォームにバリエーションを適用
  • リントチェック
  • 動作確認

READMEを修正

概要

開発開始以前に書いたREADMEの内容と、現在のアプリで実装できている内容の差異が大きいため、READMEを修正する。

食事提案内容参照画面の作成

概要

rakeタスクにより作成した食事内容の提案、およびそれにより摂取できる栄養の合計値と、目標に対する達成度を参照するための画面を作成する。

タスク

  • コントローラーの作成
  • バックエンドのルート定義
  • フロントのルート定義
  • ストアの作成
  • ページの作成
  • リントチェック
  • 動作確認

提案際作成機能の追加

概要

一度食事をとらないを選んでしまったがやはり食べようと思った時、また内容が気に入らなかったときのために、提案の際作成機能を追加する。

タスク

  • コントローラーにアクションの実装
  • ルーティングを定義
  • フロントに際作成ボタンを追加
  • リントチェック
  • 動作確認

バグを修正

概要

現状見つかっているバグを修正する。

タスク

  • health_savings通知機能が動かない
  • 食品詳細を表示するとUncaught RangeErrorが表示される
  • トライアルで表示された食品の詳細が見られない
  • create_タスクの成否
  • リントチェック
  • 動作確認

Vuetifyの導入

概要

フロントエンドのUIライブラリとしてVuetifyをインストールする。
また、基本的な設定を行う。

タスク

  • vuetifyと依存関係のインストール
  • 設定ファイルの作成
  • カラーの設定
  • アイコンフォントの設定
  • 動作確認

Vuexの導入

概要

ログイン機能の作成にあたり、vuexを導入し、基本的な設定を行う。
また、ユーザー新規登録の可否をvuexを用いたフラッシュメッセージとして作成する。

タスク

  • インストール
  • 設定ファイルの作成
  • フラッシュメッセージの作成
  • vuex-persistedstateのインストール
  • リントチェック
  • 動作確認

摂取したカロリーを「健康貯金」として加算し保存する機能の作成

概要

摂取したカロリーの量を「健康貯金」として貯蓄する機能を作成する。
MealRecord作成時にhealth_savingsカラムに加算され、HomePageもしくはLINEの通知機能により合計貯蓄額をチェックできるようにする。

タスク

  • usersテーブルにhealth_savingsカラムを追加
  • Userモデルに追記
  • homes_controllerに追記
  • HomePageにhealth_savingsの総額を表示
  • linebot_controllerに追記
  • 自動通知のrakeタスクを作成
  • リントチェック
  • 動作確認

マイページ / BMR算出機能の作成

概要

マイページの機能の1つである、身長・体重・年齢・性別からBMRを算出する機能を作成する。


タスク

  • userモデルにカラムを追加
    • 性別
    • 生年月日
    • 身長
    • 体重
  • バリデーションの追加
  • bmrs_controllerの追加
  • アクションの作成
  • 設定用フォームの作成
  • 管理画面の編集
  • リントチェック
  • 動作確認

食品詳細画面の作成

概要

食品提案参照画面から、各食品個別の詳細な栄養情報を確認することのできる機能を作成する。

タスク

  • コントローラーの作成
  • ルーティングの定義
  • コンポーネントの作成
  • リントチェック
  • 動作確認

トップページのお試し機能を作成

概要

ログイン前のトップページに、ユーザー登録をせずに使用できるお試し機能として、BMRの計算および単発での食事メニュー作成機能を追加する。


タスク

  • コントローラーの作成
  • ルーティングの定義
  • フロントの作成
  • リントチェック
  • 動作確認

アカウント情報変更機能の作成

概要

ユーザーのアカウント情報を編集できる機能を作成する。
なお、編集可能な項目は以下。

  • ユーザー名
  • メールアドレス
  • (LINE友達追加ボタンの追加)

また、emailカラムのLockboxによる暗号化の適用も合わせて行う。

タスク

  • user_accounts_controllerへの追記
  • フォームの追加作成
  • emailカラムのLockbox適用
  • リントチェック
  • 動作確認

sorceryに`remember_me`モジュールを追加

概要

ウィンドウを閉じた時点でバックエンドではログアウトしているのに、
フロントではログイン情報が残ってしまうという状態にある。

sorceryのremember_meサブモジュールをインストールすることで、設定した期限内はバックエンドでもログイン状態を保持するようにする。


タスク

  • remember_meサブモジュールを追加
  • ログインの有効期限を設定
  • vuexのauthUserに有効期限を設定
  • リントチェック
  • 動作確認

Vuetifyのスタイルが当たらなくなった問題の解決

概要

前回プルリクエストのマージ後、メインブランチに戻りgit pull origin main
その後ローカルサーバーを立てて画面を確認したところ、cssのスタイルが
聞かなくなってしまっていた。

#50

上記プルリク時のブランチからHerokuにデプロイしたが、それにはきちんと
スタイルが有効になっているため、ローカル環境の問題かと思われる。


解決

ローカルでbin/webpack-dev-serverコマンドを叩いてみると下記のエラーが発生。

error Command "webpack-dev-server" not found.

yarn run eslintを叩いても同様のエラーが発生したため、yarnの問題であると考えた。

確認すると、yarnのバージョンが1.22.15に上がっていた。
yarn installすることでエラーは解消。

新規ユーザー登録ページに性別・年齢用のフォームを追加する

概要

ユーザーの新規作成時にDRIの設定も同時に必要になったため、新規ユーザー登録ページに性別と生年月日のフォームを追加する。
またregistrations_controllerへの追記も行う。

タスク

  • コントローラーへの追記
  • フォームの追加
  • リントチェック
  • 動作確認

Vue Routerの導入

概要

フロントエンドのUIライブラリとしてVuetifyをインストールする。
また、基本的な設定を行う。

タスク

  • vuerouterと依存関係のインストール
  • 設定ファイルの作成
  • 404 Not found ルートの設定
  • 動作確認

Herokuへのデプロイ

概要

Hello Vue!の表示確認ができた現時点で、先にHerokuへのデプロイを行う。
以降の開発については常に作業を行ってはデプロイし、エラーの発生を監視しながら行う。

新規ユーザー登録の処理を追加

概要

新規ユーザー登録時に、オートログイン及びマイページへの誘導、suggestionの生成が自動で行われるよう変更する。

タスク

  • 自動ログイン
  • マイページに遷移
  • suggestionを生成する
  • リントチェック
  • 動作確認

サービス概要ページの作成

概要

仮リリース前に、簡単にサービスの概要を作成しておく。
現状デザインは考慮せず、文字のベタガキで良いr

タスク

  • サービス概要ページの作成
  • リンクの作成
  • リントチェック
  • 動作確認

マイページで投げているリクエストの整理

概要

現状マイページでは、「BMR設定用の情報を取得する」「栄養摂取基準を取得する」「PFCバランス情報を取得する」の
3つのリクエストをそれぞれ別のコントローラーに投げており、1ページ内で3リクエストを費やしてしまっている。
これらを1つのmypages_controllerにまとめる。

タスク

  • mypages_controllerの作成
  • 既存の処理の移植
  • 不要になったアクションの削除
  • ルーティングの再定義
  • フロントのメソッドの修正
  • 各ストアへのディスパッチの修正
  • リントチェック
  • 動作確認

LINE Messaging APIにより指定した時間に食事内容を通知する機能を作成

概要

ユーザーの設定した時間に当日の食事内容をLINEで通知する機能を作成する。
マイページのアカウント情報設定タブ内にまず通知機能を使用するか、次に使用するならば時間を設定できるフォームを作成する。

タスク

  • mealtime_firstカラムの追加
  • line_notification_enabledカラムの追加
  • バリデーションの追加
  • コントローラーの作成
  • ルーティングの定義
  • フォームの作成
  • rakeタスクの作成
  • リントチェック
  • 動作確認

新規ユーザー登録機能の作成

概要

新規ユーザー登録機能について、バックエンド及びフロントエンドの作成を行う。

タスク

  • Userモデルの作成
  • バックエンドの実装
  • フロントエンドの実装
  • リントチェック
  • 動作確認

PFCバランス保存用カラムをusersテーブルに追加

概要

PFCバランスの情報を保存するカラムをusersテーブルに追加する。
なお設定機能の作成は後回しにし、しばらくはデフォルトの割合を使用する。

タスク

  • マイグレーションの作成
  • バリデーションの追加
  • %からg数を計算するメソッドの追加
  • ロケールファイルへの追記
  • 管理画面に追記
  • リントチェック
  • 動作確認

FoodCategoryモデルの作成

概要

日本食品標準成分表2020年版(八訂)の食品群を基にしたFoodCategoryモデルを作成する。
また管理画面を作成する。しかし一般ユーザー用のカテゴリー一覧画面の作成は一旦後回しとする。


タスク

  • マイグレーションファイルの作成
  • モデルファイルの作成
  • seedデータの作成
  • seedデータの投入
  • 管理画面を作成
  • リントチェック
  • 動作確認

利用規約ページを作成

概要

利用規約を掲載するページを作成する。
なお、デザインは一時的に整える程度に留める。

タスク

  • ページの作成
  • 文書の作成
  • ルーティングの設定
  • ポップアップメニューにリンクを追加
  • リントチェック
  • 動作確認

新規Railsプロジェクトの作成

概要

新規Railsプロジェクトを作成し、最低限必要な設定までを行う。


タスク

  • rails newを実行
  • .gitignoreを作成
  • ロケールを設定
  • タイムゾーンを設定
  • credentialsにDBの情報を追加
  • database.ymlの設定
  • db:createの実行
  • Topコントローラーを作成
  • Hello Vue!の表示確認

トライアル機能の簡略化

概要

トライアル機能の使用をもっと簡単に行えるように、フォームの簡略化を行う。

タスク

  • コントローラーの修正
  • 簡易版フォームの作成
  • フロントの修正
  • リントチェック
  • 動作確認

デザインの調整

概要

デザインおよび文言の修正を行う。

タスク

  • 共通

    • フッター(ログイン前)
    • フッター(ログイン後)
    • フラッシュメッセージ
    • Not Found
  • ログイン前

    • Top
    • Register
    • Login
    • LINE連携用ログイン
  • ログイン後

    • Home
    • Suggestion
    • MypageSetting
    • MypageAccount
    • MypageWithdrawal

退会機能の作成

概要

退会機能を作成する。

タスク

  • コントローラーの作成
  • ルーティングの定義
  • フロントの作成
  • リントチェック
  • 動作確認

ログアウト後リロードせずログインしようとするとエラーが発生する問題を修正

概要

ログアウト後、ページをリロードせずに続けてログイン処理を行うと、ActionController::InvalidAuthenticityTokenが発生する。

これは恐らく、postリクエストに使用するcsrf_tokenは本来セッション毎に再生成されるのだが、それが何らかの理由により正常に動作しないために発生していると思われる。

タスク

  • エラー修正
  • リントチェック
  • 動作確認

LINE massaging APIをによりユーザーごとに異なるメッセージを送信する機能の作成

概要

LINE messaging APIを用いてユーザーのLINEに送信する機能を作成する。
メッセージの内容は#23 で作成したrakeタスクにより生成された食事内容の提案になるため、ユーザーごとに異なるメッセージを送信する必要がある。

タスク

  • LINE Developers登録
  • LINE Messaging API の設定
  • オウム返しBotの実験
  • ユーザーの入力ごとに返信を出し変える処理の実験
  • アカウントの連携機能を作成
  • ユーザーごとの情報を返す機能の実験
  • rakeタスクでプッシュメッセージを送る実験
  • リントチェック
  • 動作確認

Foodモデルの作成

概要

日本食品標準成分表2020年版(八訂)を基に、
食品の栄養情報を保管するfoodsテーブルを作成する。
また、同データを整形して作成したCSVファイルから、初期データを投入する。

タスク

  • マイグレーションファイルの作成
  • モデルファイルの作成
  • seedデータの作成
  • seedデータの投入
  • gem kaminariの導入
  • gem ransackの導入
  • 管理画面の作成
  • リントチェック
  • 動作確認

食事記録機能の作成

概要

提案された食事内容に対し、実際に「食べる」か「食べない」かを返答し、それにより当日の食事記録を作成する機能を作成する。

なお、過去の食事記録について参照する機能はまた別でissueを立てて、後に行うこととする。

タスク

  • テーブルの追加
  • モデルの作成
  • コントローラー作成 (create)
  • linebotコントローラーに追記
  • 食べる・食べないメッセージ送信機能の作成
  • 提案参照画面にボタン作成
  • リントチェック
  • 動作確認

HomePageに当日のMealRecordから達成度を参照する機能を作成

概要

作成されたMealRecordを元に、その日の栄養素毎の摂取達成度状況を一覧する機能を作成。
マクロ栄養素はレーダーチャート、ミクロ栄養素はバーチャートをそれぞれ用いるようにする予定。

タスク

  • homeコントローラーへの追記
  • フロントを作成
  • リントチェック
  • 動作確認

マイページ / 栄養摂取基準設定機能の作成

概要

ユーザーの性別・年齢から、それぞれに応じた食事摂取基準を選定し登録する機能を作成する。
また、設定した食事摂取基準の内容をマイページで一覧できるようにする。

タスク

  • マイグレーションファイルの作成
  • モデルファイルの作成
  • seedデータの作成
  • seedデータの投入
  • 専用のコントローラーを作成
  • show, updateアクションの実装
  • 一覧画面の作成
  • 管理画面の作成
  • リントチェック
  • 動作確認

仮トップページ・ヘッダー・フッターの作成

概要

これから様々な画面を作成していくにあたり、画面構成のバランスを見るために、仮のトップページおよび、ヘッダー・フッターを作成する。

タスク

  • トップページの作成
  • day.jsの導入
  • ヘッダーの作成
  • フッターの作成
  • 動作確認

ログイン機能の作成

概要

sorceryを使用したログイン機を作成する。
管理者用画面についても別途ログイン画面を作成すること。

チェックリスト

  • バックエンドのルーティング設定
  • authentications_controllerの作成
  • create destroy アクションの実装
  • baseコントローラーにrequire_login追記
  • ログインページの作成
  • フロントのルーティング設定
  • 管理画面用のログインページの作成
  • 認可機能の追加
  • リントチェック
  • 動作確認

食事提案機能の作成

概要

各ユーザーごとにその日の食事内容の提案を作成するrakeタスクを実装する。

タスク

  • Suggestionsモデルの作成
  • バリデーションの作成
  • アソシエーションの定義
  • rakeタスクの作成
  • リントチェック
  • 動作確認

プライバシーポリシーページを作成

概要

プライバシーポリシーを掲載するページを作成する。
文書の内容は以下の法律文書ジェネレートサービス、『KIYAC』を使用し作成する。
なお、デザインは一時的に整える程度に留める。

タスク

  • ページの作成
  • 文書の作成
  • ルーティングの設定
  • ポップアップメニューにリンクを追加
  • リントチェック
  • 動作確認

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.