「あなたの積読を解消します!」をスローガンに掲げた無料ブラウザアプリです。
"読書メンタルマップ術"という手法を用いて、ユーザーの書籍完読に向けたモチベーション維持をサポートします。
ゲストユーザー機能もありますので、気軽に利用してみてほしいです:thumbsup:
※ 推奨ブラウザはChrome、Safariになります
URL: https://qiita.com/ddpmntcpbr/items/739dbb992b5ffac3fc2f
開発の背景から解説しています。
URL: https://twitter.com/ddpmntcpbr
ご用の方はこちらまで!
- Backend: Rails ( API mode / Rspec / rubocop) + Nginx ( upstream puma-socket )
- Frontend: React ( create-react-app / Redux / Material-UI / eslint&prettier)
- Infra: AWS ( ECS Fargate/ ECR / RDS / ALB / Route53 ), Netlify, Docker & docker-compose, Circle CI, Slack Incommig Webhook
- Twitterアカウントを利用したユーザー登録(OAuthによるSNS認証)
- ゲストログイン機能
- Google Books APIを用いた書籍検索機能
- Google Books、Amazon、楽天ブックスへのリンクボタン配置
- Twitterシェア機能
- ハッシュタグ「#yomukatsu」付きTweet
- Twitter card 表示
- Twitter card用にリサイズした書籍画像をAWS S3へ保存・管理
- ローディング画面
- お問い合わせ機能(Slack Incomming Webhook)
- Route53 による独自ドメイン + SSL化
- レスポンシブ対応
- puma-socket 通信による Rails の Nginx 配信
- Netlify の Pre-rendering 機能活用によるOGP情報の保持(Twitter card 表示用)
- Docker による開発環境の完全コンテナ化
- CircleCI による自動 CI/CD パイプライン構築
- CI: Rspec, rubocop, eslint&prettier
- CD: AWS ECR ( Rails, Nginx )
- その他セキュリティ対策(XXS, CSPF等)
devise_token_auth
: APIモードでの devise。トークン認証を簡単に実装twitter_omniauth
:Twitter認証を簡単に実装active_model_serializer
: Rails APIからのレスポンスJSONを制御imageMagic
: 画像のリサイズを実行。特に、Twitter card用に書籍画像をリサイズする際に使用aws-fog/carrierwave
: リサイズした書籍画像を AWS S3 に保存rspec
: デファクトスタンダードになっているRubyテスト用フレームワークrubocop
: Rubyの静的コード解析
creat-react-app
をベースに開発。ホスティングには Netlify
を使用。
Redux
: Stateの一元管理するフレームワーク。Redux関連ファイルは、reducksパターン則って管理react-helmet
: metaタグの挿入によるOGP情報の保持(Twitter card用)Material-UI
: Google が提供する UI コンポーネントライブラリ。eslint & prettier
: javascriptに対する静的コード解析。eslint は create-react-appに標準搭載されているものをベースに少しプラグインを追加 & prettier はイチから導入
開発環境は、全てDockerコンテナ内で完結。また、AWS ECS(Fargate)へのコンテナデプロイより、開発環境と本番環境の差異を最小化。
主にBackend( Rails+Nginx )のデプロイで使用。
※利用サービス
ECS (Fargate)
: コンテナ向けサーバーレスコンピューティングエンジン。この中に Rails と Nginx の Docker イメージを入れて稼働ECR
: Rails と Nginx の Docker イメージを保存RDS (MySQL)
: AWS が用意しているスケーラブルなデータベースエンジンALB
: 負荷分散を担うロードバランシングサービスRoute53
: サイトの独自ドメイン化に使用ACM
: サイトの https 化に使用S3
: 静的ホスティングサービス。書籍画像も保存・管理に使用
フロントエンド(create-react-app)のホスティングで利用。Pre-rendering 機能を利用することで、通常SPAとなる create-react-app でも、OGP情報の保持(動的な Twitter Card 情報の保持)が可能
自動CI/CDパイプラインの構築に利用。
- Github へ push した時
- masterブランチへ merge した時
に走るように設定。
※自動化項目
- Rspec
- rubocop
- eslint&prettier
- AWS ECR への Image push (masterブランチへ merge した時のみ)
- AWS ECS のタスク&サービスの更新(masterブランチへ merge した時のみ)