【フルスタック開発】NotionクローンをMERNスタックで本格的に構築するWebアプリケーション開発実践講座
人気メモアプリ「Notion」を1からフルスタック開発する講座。使用する技術はReact/Redux/Node.js/Express/MongoDB。ユーザー認証APIやメモ作成API構築など、この講座1本で多くの技術が学べるお得な実践講座
本講座で学ぶこと
本講座の完成品のデモ
VSCodeをインストールしよう
Node.jsをインストールしよう
Notion開発用プロジェクトフォルダを用意しよう
【補足】React開発効率が上がるオススメVSCodeプラグイン紹介
【追加】本レクチャーのソースコード
Expressフレームワークを使ってローカルサーバーを構築しよう
指定したPORT番号でサーバーが立ち上がるのか確認してみよう
Notionユーザー管理の流れを理解してみよう
ユーザー管理用にMongoDBを利用してみよう
ユーザースキーマを構築してみよう
サーバーとデータベースを接続してみよう
dotenvモジュールを使ってURLを第三者に見られないように保護しよう
ユーザー新規登録API作成の流れ
早速WebAPIを作成してみよう
パスワードを暗号化してユーザーをDBに保存してみよう
JWTってなに?どの場面で使うの?
JWTをクライアント側に発行してみよう
Postmanをインストールしよう
PostmanでWebAPIテストをしてみよう
express-validatorを使ってバリデーションチェックをはじめよう
すでにDBにユーザーが存在している場合のエラーハンドリング
バリデーションエラーを出力する機能を実装しよう
正常にバリデーションチェックができているかテストしてみよう
運用・保守しやすくするためにリファクタリングしよう:その1
運用・保守しやすくするためにリファクタリングしよう:その2
ログイン用APIを構築しよう
ログイン時のパスワードの照合をはじめよう
ログインAPIをPostmanでテストしてみよう
JWT認証APIってなに?
JWT認証APIを作ってみよう
JWTをデコード(複合)する関数を作成しよう
JWTをデコードするミドルウェアを完成させよう
JWT認証APIをPostmanでテストしよう
Reactでフロントエンド側の開発環境を構築しよう
React18からReact17のバージョンへダウングレードしよう
認証に関するコンポーネントを用意しよう
react-router-domでルーティング設定をはじめよう
Material UIをインストールしよう
ThemeProviderを利用してアプリ全体のテーマを決定しよう
認証に関する共通ページの構築をはじめよう
ユーザー新規登録用のページを作成しよう
送信用ボタンとログイン遷移用のボタンを作成しよう
Axiosインスタンスを導入してAPIを叩く下準備をはじめよう
Axios interceptorsを利用してリクエストの前処理を設定してみよう
Axios interceptorsを利用してレスポンスの前処理を設定してみよう
認証用APIファイルを用意しておこう
フォームから名前やパスワードを取得してみよう
実際にユーザー新規登録APIを叩いてユーザー登録してみよう
CORSエラーを回避する方法
APIを叩くときに404 not foundになったときの対処方法
新規登録フォーム入力時のバリデーションチェックをしよう:その1
エラーがはっきりと分かるように修正しよう
新規登録フォーム入力時のバリデーションチェックをしよう:その2
送信時のローディング設定をしよう
ユーザー作成が完了したらホームにリダイレクトさせよう
【修正】ローカルストレージにトークンが設定されてない問題を修正しよう
ログインページを作成しよう
ログイン用APIを準備して叩いてみよう
クライアントがすでにJWTを持っているかチェックするロジックを作ろう
JWTチェック用ファイルを完成させよう
実際にJWTチェックでリダイレクトされる実装をしよう
Notion本体の機能実装をするためのルーティング設定をはじめよう
AppLayoutでNotionアプリ共通コンポーネントを作成しよう
サイドバーを作ってみよう:その1
サイドバーを作ってみよう:その2
サイドバーの背景色を変更してみよう
ページからログアウトする機能を実装しよう
ユーザー管理用にReduxを実装しよう
userSliceを実装しよう
グローバルにユーザー管理ができるようにしよう
useDispatchとuseSelectorを使ってユーザー保存と取り出しをはじめよう
仮置きでメモを追加してみよう
Notionメモ用のスキーマを作成してみよう
【※追加修正】Schemaをインポートしよう
メモ新規作成APIを作ってみよう
メモAPI用ルーティング設定をしよう
Homeコンポーネントを完成させよう