GithubHelp home page GithubHelp logo

soicchi / locals-production Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 42.65 MB

ポートフォリオで作成したLocal'sの開発環境です

Dockerfile 0.26% Ruby 45.15% HTML 0.27% SCSS 0.33% Vue 38.98% JavaScript 6.80% HCL 8.02% Shell 0.20%

locals-production's Introduction

アプリ概要

Local'sは飲食店の情報を共有するアプリです。

好きな飲食店の情報を投稿したり、他のユーザーが投稿した飲食店が自分の好みとどれだけマッチしたお店かを知ることができるアプリです。

ゲストログインで簡単にログインできます。

https://local-s-app.com

スクリーンショット 2022-03-14 21 36 27

スクリーンショット 2022-03-14 23 40 58

※ mobile用UI

スクリーンショット 2022-03-10 14 24 02

使用技術

バックエンド

技術 バージョン 選定理由
Ruby 3.0.3 日本語のドキュメントが豊富で初学者に適切だと考えたため。
Ruby on Rails 6.1.4 日本語のドキュメントが豊富で、且つバックエンドをAPIとして効率よく構築できるため。
RSpec 5.1.0 単体テスト、機能テストを行うため。実務で使用される頻度が高いと考えたため。
Rubocop 1.25.1 コードの可読性を高めるため。

フロントエンド

技術 バージョン 選定理由
nuxt 2.15.8 SPAで開発するため。効率よくコードがかけるため。
vuetify 2.6.1 UIを効率よく構築するため。
jest 27.4.4 store周りのテストを行うため。
ESLint 8.9.0 コードの可読性を高めるため。

インフラ

※ AWSに関しては主要なサービスをピックアップ

技術 バージョン 選定理由
AWS / 他社よりもシェアが高く実務で使用する可能性が高いため。
ECS(Fargate) 1.4.0 オートスケーリング等、管理の手間を減らすため。
MySQL(RDS) 8.0 データベースとして使用するため。
S3 / ALBのログを保存、投稿画像の保存のため。
VPC Endpoint(PrivateLink) / AWSのサービス間の通信をインターネットを介さずに行うため。
SSM / コンテナ内の環境変数を管理するため。
Docker/Docker-compose 20.10.12 / 1.29.1 コンテナを使用することで環境構築を効率化するため。
Terraform 1.0.0 インフラの構築をコード化し、構築、削除を容易にするため。
CircleCI 2.1 自動でテスト、デプロイを実行することで、手間を省くため。

AWS構成図

スクリーンショット 2022-03-01 11 44 33

※ 極力インスタンスをプライベートサブネットに配置することで不要なアクセスを減らしている。

※ ALBを通すことで常時SSL化を行っている。

※ CircleCIを用いてプルリクをしっかり作成し、いきなり本番環境へpushを行わないように工夫している。

ER図

スクリーンショット 2022-03-14 17 32 46

機能一覧

機能 仕様 ログイン必須
サインアップ、ログイン、ログアウト機能 トークン認証でサインアップ、ログイン、サインアウトできる
画像拡大機能 写真をクリックすると拡大されて表示
画像スクロール機能 投稿詳細ページにてswiperを用いて画像をスライドして閲覧可能
カテゴリー検索機能 投稿をカテゴリー別で検索ができる
グラフ表示機能 vue-chartjsを用いて投稿に対して評価したユーザーの年代別いいね率を表示
GoogleMap表示機能 投稿の店名、最寄り駅からお店の位置をGoogleMapで表示
フォロー、フォロワー一覧表示 ユーザーのフォロー、フォロワーがリストになって閲覧可能
ゲストログイン機能 リンクをクリックするとguestアカウントが生成され、ログインできる。サインアウト後生成されたゲストアカウントは削除される
投稿ソート機能 投稿を最新順 or また行きたい率の降順でソートできる ※3/8実装
フォロー、アンフォロー機能 各ユーザーをフォロー、アンフォローができる
パスワード変更機能 パスワードとパスワード確認を入力すると編集ができる
プロフィール編集機能 ユーザー名、プロフィール画像、自己紹介、メールアドレスの変更ができる
投稿機能 店名、最寄り駅、写真、コメント、カテゴリーの投稿作成、削除ができる
画像投稿機能 RailsのActiveStorageを使って複数画像の投稿ができる
ユーザー削除機能 ユーザーの削除ができる
ブックマーク機能 自分以外のユーザーの投稿をブックマークできる
いいね機能 自分以外のユーザーの投稿に「また行きたい!」というプラスの評価ができる
悪いね機能 自分以外のユーザーの投稿に「う〜ん」というマイナスの評価ができる
管理機能 管理者権限を持ったユーザーはすべての投稿とユーザー削除できる。またカテゴリーデータの追加、削除をすることができる。ポートフォリオとして閲覧者に機能を使っていただくために一時的に権限がなくても使用できるようにしています。 ※3/10実装
マッチ度機能 ユーザーが飲食店に求める事柄とお店の評価ポイントを比較してその飲食店がユーザーの好みにどれだけマッチしているかを表示 ※3/14実装

※ パフォーマンス向上やUI/UXの向上、機能追加は随時行っています。

反省点

  • コミット間隔を開けすぎたことが原因で、エラーの対処の際に時間がかかってしまった。
  • 本番環境へのデプロイを後回しにしたことで、いざデプロイした際に発生したエラーの所在を発見できず、開発期間が伸びてしまった。
  • 開発序盤は公式ドキュメントではなく、2次情報から情報を得てしまっていて課題解決に時間がかかってしまった。

locals-production's People

Contributors

soicchi avatar

Watchers

 avatar

locals-production's Issues

マッチ度機能追加

  • frontendにてサインアップ画面にて飲食店を選ぶ際に求めることを登録できるフォーム実装
  • frontendにて投稿の際に評価ポイントを登録できるフォーム実装
  • frontendにてマッチ度を表示
  • backendにてTasteモデル作成
  • backendにてPreferenceモデル作成
  • backendにてEvaluationモデル作成
  • backendにて新規登録の際にpreferenceを登録できるよう修正
  • backendにてpost_controllerのcreateアクションで評価ポイントを登録できるよう修正

使用カテゴリー比率表示機能

  • backendからカテゴリーの使用比率のデータをJSON形式で返す機能
  • frontendでカテゴリー使用比率を表示するコンポーネントを作成

データベースから画像ファイル削除

  • User削除時にavatarを削除する機能
  • Userのavatar更新時に以前のavatarをデータベースから削除する機能
  • Userのavatar更新時に変更前の画像データをデータベースから削除し、デフォルトの表示に戻す機能

投稿のソート機能実装

  • frontendでソート用セレクトボックス実装
  • frontendにてセレクトボックスが選ばれたとき、Vuexのpostsの中身変換メソッド作成

予算表示機能

  • frontendにて各投稿におおよその予算を表示
  • frontendにて投稿の際に予算を登録するフォーム作成
  • backendにてpostsテーブルにbudgetカラム追加
  • backendにてposts_controllerのcreateアクションでbudgetを登録できるよう修正

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.