1. 大幅変更について

    1. ディレクトリー

      api/front/ のディレクトリに分かれています。

      ※既存と同じようにアプリの起動はできません

      現在)apiはDockerで立ち上げ、frontはローカルでサーバーを立ち上げます

    2. 本番インフラ

      1. api → Heroku

        現在、staging環境を設けている仮本番テストができます

      2. front → Vercel

        PR作成時からpreviewが作られ、そこでテストができます

    3. RestからGraphqlへ

      1. api
        1. 認証

          deviseを利用するためRest形式で認証を行なっています

        2. 基本リクエスト

          graphqlを使用しており、エンドポイントが1つになります

          参考:https://kinsta.com/jp/blog/graphql-vs-rest/#graphql-2

  2. 注意点

    1. devブランチ中心 → releaseブランチ中心
      1. github上にreleaseブランチがあるのでpullしてくる
      2. PR作成時もreleaseブランチ向けでPRを作成
    2. releaseブランチに切り替える時
      1. master.keyが消える

        ディレクトリ構造がかなり異なり、ブランチを切り替えたときにmaster.keyが消える可能性があります

        メモ書きをしておいてブランチ変更後にmaster.keyを再作成しましょう

  3. 自動コマンド

    1. バック

      1. rake graphql:schema:dump resolverかmutationを作成後、graphqlのschemaを作成する

        https://github.com/naru20181117/ideee/blob/release/api/README.md

    2. フロント 以下はpackage.jsonのscriptsに記載あり

      1. next関連

        1. yarn dev: ローカルサーバーを立ち上げる
        2. yarn build: ビルドする
      2. リンター

        1. yarn lint: リントを実行する
        2. yarn format: prettierでフォーマットを揃える
        3. yarn format-check: prettierでフォーマットチェック
        4. yarn type-check: TSの型などをチェック

        以下のコマンドで一度に確認ができるのでメモ

        yarn lint & yarn lint-autofix & yarn format & yarn type-check

        また、PRを作成前に実行することをおすすめします

      3. graphql関連

        1. yarn compile graphqlで作成したschemaファイルからReact hooksなどのファイルを作成する

        https://github.com/naru20181117/ideee/tree/release/front/README.md

  4. graphiqlについて

    graphqlのエンドポイントにアクセスすることができるツール(開発環境のみ)

    参考:https://zenn.dev/monicle/articles/fda051519e9e57

    ローカル環境で使用する場合は、http://localhost:3010/graphiqlにアクセス

    本番環境でデータ確認する場合は、Vercelのpreview URLにアクセス

    また、アドミン機能をサーバ側に実装済み

    https://github.com/naru20181117/ideee/issues/1014

    環境構築手順

    1. 現基盤のdevブランチからreleaseブランチを切ります。
    ideee % git checkout "release"
    
    1. ローカルのreleaseブランチに、リモートのreleaseブランチをpullします。
    ideee % git pull origin release
    
    1. サーバーサイドのセットアップを行います。

      a. apiディレクトリ直下にmaster.keyファイルを作成し、ファイル内に現基盤のmaster.keyの中身をコピペしてください。

      ※ 新しく開発に参加された方で現基盤のmaster.keyがない場合は、なるさんに直接聞いてください。

      api % touch config/master.key
      

      b. 続いてデータベースの作成、マイグレーション、テストデータを作成します。以下railsコマンドを実行してください。

      api % docker-compose run web bundle exec rails db:create    # データベース作成
      api % docker-compose run web bundle exec rails db:migrate   # マイグレーション
      api % docker-compose run web bundle exec rails db:seed_fu   # テストデータ作成
      

      おすすめワンライン rails db:create && rails db:migrate && rails db:seed_fu

      ※ローカルでのログインについて

      rails db:seed_fu で作成されるユーザーでログインするのが最も早い。

      rails c でコンソールに入り、 User.last.email などでemailを確認

      そのemailとパスワード password でログイン。

      c. GraphQLに関するrakeコマンドを実行します。(コミット追加時)

      api % rake graphql:schema:dump
      

      graphql:schema:dumpはRailsアプリケーション内で定義されたGraphQLスキーマ情報をファイルにエクスポートするためのサブタスクです。

      [Class: GraphQL::RakeTask

       — GraphQL Ruby API Documentation](<https://graphql-ruby.org/api-doc/1.9.3/GraphQL/RakeTask>)
      
    2. フロントエンドのセットアップを行います。

    3. frontディレクトリに移動し、以下yarnコマンドを実行します。

    ideee % cd front
    front % yarn dev
    
    1. localhost:3000 にアクセスし、ideeeのTOPページが表示されれば成功です。

    Untitled

    1. 新基盤上でログインを行い、GraphQLの挙動を確認します。

      1. 新基盤のログイン

        • db:seed_fu でのテストデータ作成時に、api/db/fixtures/development/01_user.rb により作成された任意のuserのemail, passwordをログインページ (http://localhost:3000/user/sign_in) で入力し、ログインを行ってください。

        Untitled

        • ログイン後、ルートページ上でdevツールのアプリケーション→Cookieを開き、authorizationキーのBearerから始まる値をコピーしてください。

        スクリーンショット 2023-06-23 0.25.59.png

      スクリーンショット 2023-05-20 23.11.30.png

      GraphiQLはGraphQLサーバーに対してクエリを送信し、その結果を視覚的に表示することができる開発ツールです。

      GitHub - graphql/graphiql: GraphiQL & the GraphQL LSP Reference Ecosystem for building browser & IDE tools.

      • graphiqlの左下にあるHeadersを開き、以下のような形で先程コピーしたauthorizationの値を格納してください。これで認証されます。
      {
        "Authorization": "Bearer {乱数}"
      }
      
      • 認証されたかどうか確認するのでクエリを叩いてみます。