Next.js × shadcn/ui × Supabaseで本格的なWebアプリ開発を学ぶフルススタック講座
Next.js App Routerの利用とshadcn/uiやcontentLayerを利用したブログポストWebアプリケーション開発を行って実践力を身に着ける講座です。世界トップWebエンジニア「shadcn」が開発したプロジェクトを参考にして作るWebアプリを通して、実務で通用するWeb開発スキルを習得します。
本講座で学べる事
完成品のデモ
参考にしたGithubリポジトリとshadcnの紹介
Next.jsの開発環境構築をはじめよう
shadcn/uiのセットアップをはじめよう
日本語フォントへ変更とlayout.tsxの修正
ルートグループの作成とHomeページの作成
アプリタイトルセクションのHTMLとCSSを実装しよう
Webアプリ情報は別ファイルで管理しよう
ヘッダー作成をはじめよう
ナビゲーションコンポーネントを作成しよう
マーケティングセクションのナビゲーション情報は別ファイルで管理しよう
スマホサイズ用のナビゲーションメニューを作成しよう
モバイルナビゲーションを実装しよう
featuresセクションの作成をはじめよう
技術スタック説明一覧を作成しよう
技術カードのレイアウト調整をしよう
featuresセクションの残りのレイアウトを追加しよう
コンタクトセクションを作成しよう
useLockBodyScrollを使って画面のスクロールを制御しよう
フッターコンポーネントを作成しよう
Homeページの詳細なメタデータ設定をしよう
contentLayerの導入とNext.jsのバージョンダウン
next.config.jsとtsconfig.jsonを修正しよう
TailwindCSSが適用されないバグを修正しよう
contentLayer.configファイルでブログの型定義をしよう
マークダウン形式でブログ投稿してみよう
ブログページを作成してマークダウンブログを取得してみよう
ブログ一覧用のレイアウトを実装してブログ一覧表示してみよう
ブログページのレイアウトの修正をしよう
ブログ詳細ページを作成しよう
詳細ブログのslugが合致している場合のみデータを取得しよう
詳細ブログのレイアウトを作成しよう
Mdxコンポーネントを作成してマークダウンをHTMLとして出力してみよう
マークダウンで出力されたデータをHTMLとして出力させるには
tailwindcss/typographyを利用してみよう
動的ブログページのメタデータ設定をしよう
ログイン認証用ページを作成しよう
ログイン/新規登録用フォームを作成しよう
Githubログイン用にレイアウトを追加しよう
lucide-reactアイコンを用意しよう
NextAuth.jsのセットアップをはじめよう
GithubでOauth認証のセットアップをはじめよう
セッション情報管理用のコールバック関数を準備しよう
GithubクライアントIDとシークレットキーを環境変数で準備しよう
NEXTAUTH_SECRETを環境変数で宣言しておこう
認証ローディング状態のUIを用意しよう
NextAuth.jsでNext.jsのミドルウェア設定をしよう
トークン状態に応じてページ表示先を変更させよう
GoogleでOauth認証設定をやってみよう
Googleログインボタンを作成してGoogleアカウントでログインしよう
新規登録ページを作成しよう
SupabaseとPrisma ORMのセットアップを始めよう
PrismaAdapter設定とテーブルへ格納するモデルを作成しよう
モデルの修正と@relationと外部キーについて
残りのモデルスキーマを修正しよう
ユーザー記事投稿用のスキーマを作成しよう
PrismaClientのインスタンス再生成を防ごう
Prismaマイグレーション操作でモデルをテーブルへ反映させよう
セッションの管理からJWTでの管理へ切り替えよう
ダッシュボードページを作成しよう
ダッシュボードページのレイアウト修正をしよう
ダッシュボードナビゲーションを作成しよう
サイドバー用のアイコンを用意しよう
サイドバーで選択中の項目をハイライトさせよう
記事投稿用のダッシュボードページを作成しよう
ダッシュボードで共通するヘッダーを作成しよう
記事投稿用ボタンを作成しよう
試しにSupabaseで記事をいくつか投稿してみよう
現在ログインしているユーザーのセッション状態する関数を実装しよう
Pick型でPropsを割り当てて投稿した記事を出力してみよう
記事の削除や編集ができるボタンUIを追加しよう
記事投稿用APIをNext.js AppRouterで作ろう
Zodライブラリを利用して期待する型かどうか検証しよう
APIを叩いて記事を作成・投稿してみよう
ユーザー認証時にセッションにトークンIDを付与しよう
作成に失敗した場合にトースターを出してみよう