PC作業が捗る、Wifi・コンセント・長時間居座り可のおすすめカフェをまとめたWebサービスです。
転職活動用に制作しました。
- email:test@example.com
- password:password
- 投稿の一覧表示機能
- 投稿一覧の検索・ソート機能
- 投稿のお気に入り登録機能(ajax)
- Redisを用いた日次アクセスランキング集計機能
- Vue.jsを用いた投稿の新規・編集機能
- deviseを用いたユーザ認証機能
- Ruby 2.3.3
- Ruby on Rails 5.2.3
- Vue.js 3.8.2
- VueRouter
- Vuex
- axios
- Redis 3.2.12
- MySQL 5.7
- Rspec
- AWS
- S3
- EC2
- VPC
- RDS for MySQL
- CodeDeploy
- Route53
- CircleCI
- github
- SendGrid
- Unicorn
- Nginx
WebアプリケーションはEC2、RDSの1台ずつの構成です。RedisはEC2インスタンス上にRedisサーバを起動して使用しています。 CI/CDは、githubのmasterブランチへのマージをトリガーに、CircleCIからCodeDeployを呼び出し、CodeDeploy経由でEC2インスタンスへ自動デプロイを行っています。
画像ファイルはEC2上のRailsアプリケーションからS3へ保存、S3からCDN配信をしています。 メール配信には、SMTPサーバとして外部サービスであるSendGridを使用しています。
ユーザの新規投稿画面、編集画面にはVue.jsを用いています。
Post投稿では「見出し」「画像」「本文」という3つのアイテムを任意の個数、任意の順番で登録可能です。
データベースでは、1つの投稿を表す「Post」モデルに対して、投稿内の各要素を表す「Item」をhas_manyで関連付けています。
さらに、「Item」モデルでは、見出しを表す「ItemHeading」モデル、本文を表す「ItemText」モデル、画像を表す「ItemImage」モデルとポリモーフィック関連で紐づけています。
- RSpec
- 統合テスト(system spec)
- 機能テスト(request spec)
- 単体テスト(モデル)
テストに関しましてはテストが書けることをアピールする為、全ての機能はテストしていません。