Skip to content
HYEONJUN JO edited this page Sep 19, 2023 · 46 revisions
logo

福岡で食べようか!



1. サービス紹介

食べログの短所を補完するため、企画した日本のレストラン情報、レビューサービスです。



2. チームメンバー紹介

キム・ユミン ジョ・ヒョンジュン キム・ヒョン イ・ジュヒョン
ユミン ヒョンジュン ヒョン ジュヒョン
Project Leader Frontend Full-Stack Full-Stack

チーム文化は全部で11種類あり、継続的に補完しています!

  1. 言葉を惜しむと 💩 になる。
    良いアイデアがあっても、言わなければ誰も知りません。たとえ確信のない意見だったとしても、チームにインスピレーションを与えることができます。
  2. ローリングロール (Rolling Role)
    役割を交代することで、一人がずっと難しい役割、あるいは簡単な役割をすることはありません。
  3. 根拠があるのか?あるのかよ!
    あなたが意見を述べるときは、根拠を示してください。根拠がなければ、意見に対して同僚はあなたの意見に同意しにくいです。
  4. 遅刻は財布を奪う。
    あなたの遅刻はあなたの財布を泣かせます。 1回の遅刻であなたが会食の席で支払う金額は1+1/5+1になります。
  5. 映像より実物の方が綺麗ですね〜
    会える場合は、会って仕事を進めましょう。非対面で行う場合よりも、対面で行う方が楽しいです。
  6. あ、そうだったんだ~、あれは嫌だったんだ~
    感情の振り返りは重要です。お互いの感情を共有することで、チームはより和やかになり、結束が強まります。
  7. 会議の中心でご飯を叫ぶ 🙋‍
    あなたの意見は尊重されるべきです。 目をつぶらずにあなたの意見を言ってください。ご飯の時間ですか? 全チームメンバーがフォローします。
  8. TRT (Try, Refactor, Throw your table)
    一度やってみろ、そしてもう一度やってみろ、Just Do It! ダメなら、すべてのチームメンバーに自分の状況を共有する。試してみることを恐れないでください。
  9. あなたの頭を信じるな、あなたの字を信じろ。
    記録は大切です。いくら会議で良い意見が出ても、整理しないとすぐに飛んでしまうアイデアです。整理して共有する習慣を身につけましょう。
  10. 最善を尽くせば、全宇宙(チームメンバー)があなたを助けてくれるでしょう。
    チームメンバーが一生懸命何かをする場合、他のチームメンバーがそれを無視することはありません。
  11. 言葉が短い...よ?
    会議は公の場です。お互いに敬語と敬語を使えば、会議が感情的な方向に偏ることはありません。


3. 気にしていたとこ

  1. UI改善
    テキストが多く、読みやすさが不便な欠点を改善しようとしました。
  2. オープンAPIの導入でレストランの情報収集方法改善
    従来はクロールでレストラン情報を取得していましたが、hotpepperオープンAPIを活用してより多様な情報を取得できるように改善しました。
  3. Googleソーシャルログイン導入
    ログイン方式をGoogleソーシャルログインに変更することで、ユーザーの立場で別途の会員登録プロセスなしで簡単にログインできるように改善しました。


4. 機能

レストランの情報を提供します。

  • 食堂名, イメージ, 位置などを提供します。
    가게정보

レストランを検索することができます。

  • 現在地を基盤に情報を検索。
    • テスト環境が韓国なので検索結果がございません。
      현재위치
  • エリア名を基盤に情報を検索。
    • 都道府県を検索し、地域を選択することができます。
      지역이름 검색
  • 都道府県を基盤に情報を検索。
    • 都道府県を選択し、地域を選択することができます。
      지역이름 선택
  • カテゴリーを基盤に情報を検索。
    • 食べたいメニューがあればカテゴリー利用をおすすめします。
      카테고리 검색
  • 店に名前を基盤に情報を検索。
    • 店の名前をご存知なら検索してみましょう。
      가게이름 검색
  • スクロールを下ろすと新しく情報をもらう。
    • スクロールを最下段におろしたら次の情報を要請します。
      무한스크롤
  • 新しい条件で情報を再検索。
    • 検索結果から新しい条件で検索することができます。
      재검색
  • グーグルマップに店が表示される。
    • 検索結果をグーグルマップに表示し、店の位置を見たり店の情報を見ることができます。
      지도로 검색
  • レストランのレビューを書くことができます。
    • マイページで自分が書いたレビューを確認することができ、他のユーザーのレビューを確認することも可能です。
  • プロフィルページ
    • 過去に登録したレビュー、そしてレビューを残したお店の情報をGoogleマップを通して見ることができます。


5. Figma試案

figma

6. ERD設計

스크린샷 2023-09-17 오후 1 44 06

7. プロジェクト構造

structure



8. 技術スタック

フロントエンド

React MUI

バックエンド

Laravel MySQL

配布

Docker Nginx AWS

+AWS EC2 AWS S3

コラボレーションツール

Git GitHub Postman Figma Notion Visual Studio Code Gather


9. Git Branch 戦略

# main
# develop
# feature


10. Commit Message コンベンション

# ✨ feat : 新機能のコミット
# 🐛 fix : バグ修正のためのコミット
# 👷 build : ビルド関連ファイル修正のコミット
# 🔨 chore : その他細かい修正のコミット(その他変更)
# 💚 ci : CI関連設定修正のコミット
# 📝 docs : ドキュメント修正のコミット
# 💄 style : UIスタイルに関するコミット
# 🎨 refactor : コードのリファクタリングに対するコミット
# ✅ test : テストコードの修正に対するコミット
# 🎉 init : プロジェクト開始のコミット
# 🔖 release: リリースへのコミット
# ➕ plus : add dependency
# ➖ minus : remove dependency

11. API文書

[Like]
- レビューいいねキャンセル
    - endpoint: /api/review/unlike
    - body: `review_id`, `user_id`
    - method: DELETE
- レビューいいね
    - endpoint: /api/review/like
    - body: `review_id`, `user_id`
    - method: POST


[Recommendation]
- ユーザー属性に応じたお店推薦機能
    - endpoint: /api/recommend/{user_id}
    - params: `user_id`
    - method: GET


[Restaurant]
- 特定店舗情報照会
    - endpoint: /api/restaurant/{id}
    - params: `id`
    - method: GET
- レストランの追加
    - endpoint: /api/restaurant
    - body: `id`, `score`
    - method: POST
- ユーザーの位置情報に基づく店舗検索機能
    - endpoint: /api/restaurant/{restaurant_id}
    - params: `restaurant_id`
    - method: GET
- 店舗情報検索機能
    - endpoint: /api/search
    - params: `genre`, `area`, `name`
    - method: GET


[Search]
- 店舗検索機能(ジャンル、大地域、中規模地域、店舗名、検索数などを選択して店舗検索が可能)
    - endpoint: /api/search
    - query: `genre`, `area`, `name`, `lat`, `lng`, `start`, `count`
    - method: GET
- ユーザーの位置情報に基づく店舗検索機能
    - endpoint: /api/search/nby
    - query: `lat`, `lng`
    - method: GET


[Review]
- 詳細レビュー照会 (user_id)
    - endpoint: /api/review
    - query: `user_id`
    - method: GET
- レビュー作成
    - endpoint: /api/review
    - body: `score`, `restaurant_id`, `user_id`, `content`
    - method: POST
- レビュー範囲照会
    - endpoint: /api/reviews
    - query: `count`, `page`
    - method: GET
- 詳細レビュー照会 (review_id)
    - endpoint: /api/review
    - query: `review_id`
    - method: GET
- レビュー写真照会
    - endpoint: /api/review/images
    - query: `review_id`
    - method: GET
- レビュー写真のアップロード
    - endpoint: /api/review/image
    - body: `image`
    - method: POST
- 詳細レビュー照会 (restaurant_id)
    - endpoint: /api/review
    - query: `restaurant_id`
    - method: GET


[User]
- ユーザー情報の修正
    - endpoint: /api/user
    - body: `idToken`, `profile_image`, `nickname`
    - method: POST
- ユーザー情報の読み込み
    - endpoint: /api/user
    - query: `user_id`
    - method: GET
- 退会
    - endpoint: /api/user
    - query: `id`
    - method: DELETE
- 新規/既存ユーザーログイン
    - endpoint: /api/user
    - body: `idToken`
    - method: POST


[Follows]
- フォロワーの呼び出し
    - endpoint: /api/following
    - query / params: `user_id`
- フォロワーの呼び出し
    - endpoint: /api/follower
    - query / params: `user_id`


[Story]
- ユーザーストーリーリストの読み込み
    - endpoint: /api/storylist
    - query / params: `user_id`
- 特定のストーリーリスト情報の読み込み
    - endpoint: /api/storylist/{id}
    - query / params: `id`
- ストーリーリストの作成
    - endpoint: /api/storylist
    - query / params: `user_id`, `story_name`, `review_list(配列)`
- ストーリーリストの修正
    - endpoint: /api/storylist
    - query / params: `id`, `story_name`, `review_list`
- 特定のストーリーリスト ストーリー(レビュー)の読み込み
    - endpoint: /api/story
    - query / params: `story_list_id`