├── .env.example ├── .gitignore ├── .prettierrc ├── README.md ├── app ├── (auth) │ ├── signin │ │ └── page.tsx │ └── signup │ │ └── page.tsx ├── (marketing) │ ├── faq │ │ └── page.tsx │ ├── features │ │ └── page.tsx │ ├── layout.tsx │ ├── page.tsx │ └── pricing │ │ └── page.tsx ├── actions │ ├── auth.ts │ └── issues.ts ├── api │ └── issue │ │ ├── [id] │ │ └── route.ts │ │ └── route.ts ├── components │ ├── DashboardButton.tsx │ ├── DashboardSkeleton.tsx │ ├── DeleteIssueButton.tsx │ ├── IssueCard.tsx │ ├── IssueForm.tsx │ ├── NavLink.tsx │ ├── Navigation.tsx │ ├── NewIssue.tsx │ ├── SignOutButton.tsx │ ├── Timestamp.tsx │ ├── UserEmail.tsx │ ├── __tests__ │ │ └── NavLink.test.tsx │ └── ui │ │ ├── Badge.tsx │ │ ├── Button.tsx │ │ ├── Card.tsx │ │ └── Form.tsx ├── dashboard │ ├── __tests__ │ │ └── page.test.tsx │ ├── error.tsx │ ├── layout.tsx │ └── page.tsx ├── favicon.ico ├── globals.css ├── issues │ ├── [id] │ │ ├── edit │ │ │ └── page.tsx │ │ ├── loading.tsx │ │ └── page.tsx │ └── new │ │ └── page.tsx ├── layout.tsx └── providers.tsx ├── bun.lockb ├── db ├── index.ts └── schema.ts ├── drizzle.config.ts ├── eslint.config.mjs ├── lessons ├── 01-course-and-project-walkthrough.md ├── 02-intro-to-nextjs-getting-started.md ├── 03-project-structure-and-configuration.md ├── 04-routes-and-layouts.md ├── 05-static-pages.md ├── 06-server-actions-for-authentication.md ├── 07-configuring-auth-forms-with-server-actions.md ├── 08-fetching-protected-data-in-server-components.md ├── 09-creating-issues-with-server-actions.md ├── 10-editing-and-deleting-issues.md ├── 11-caching-and-memoizing-data.md ├── 12-api-routes.md ├── 13-middleware.md ├── 14-edge-functions.md ├── 15-deploying-to-vercel.md └── 16-testing.md ├── lib ├── auth.ts ├── dal.ts ├── types.ts └── utils.ts ├── middleware.ts ├── next.config.ts ├── package.json ├── postcss.config.mjs ├── public ├── file.svg ├── globe.svg ├── next.svg ├── vercel.svg └── window.svg ├── scripts └── seed.ts ├── tailwind.config.ts ├── tsconfig.json ├── vitest.config.mjs └── vitest.setup.ts /.env.example: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/.env.example -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/.gitignore -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/.prettierrc -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/README.md -------------------------------------------------------------------------------- /app/(auth)/signin/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/(auth)/signin/page.tsx -------------------------------------------------------------------------------- /app/(auth)/signup/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/(auth)/signup/page.tsx -------------------------------------------------------------------------------- /app/(marketing)/faq/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/(marketing)/faq/page.tsx -------------------------------------------------------------------------------- /app/(marketing)/features/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/(marketing)/features/page.tsx -------------------------------------------------------------------------------- /app/(marketing)/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/(marketing)/layout.tsx -------------------------------------------------------------------------------- /app/(marketing)/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/(marketing)/page.tsx -------------------------------------------------------------------------------- /app/(marketing)/pricing/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/(marketing)/pricing/page.tsx -------------------------------------------------------------------------------- /app/actions/auth.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/actions/auth.ts -------------------------------------------------------------------------------- /app/actions/issues.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/actions/issues.ts -------------------------------------------------------------------------------- /app/api/issue/[id]/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/api/issue/[id]/route.ts -------------------------------------------------------------------------------- /app/api/issue/route.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/api/issue/route.ts -------------------------------------------------------------------------------- /app/components/DashboardButton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/DashboardButton.tsx -------------------------------------------------------------------------------- /app/components/DashboardSkeleton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/DashboardSkeleton.tsx -------------------------------------------------------------------------------- /app/components/DeleteIssueButton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/DeleteIssueButton.tsx -------------------------------------------------------------------------------- /app/components/IssueCard.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/IssueCard.tsx -------------------------------------------------------------------------------- /app/components/IssueForm.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/IssueForm.tsx -------------------------------------------------------------------------------- /app/components/NavLink.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/NavLink.tsx -------------------------------------------------------------------------------- /app/components/Navigation.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/Navigation.tsx -------------------------------------------------------------------------------- /app/components/NewIssue.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/NewIssue.tsx -------------------------------------------------------------------------------- /app/components/SignOutButton.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/SignOutButton.tsx -------------------------------------------------------------------------------- /app/components/Timestamp.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/Timestamp.tsx -------------------------------------------------------------------------------- /app/components/UserEmail.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/UserEmail.tsx -------------------------------------------------------------------------------- /app/components/__tests__/NavLink.test.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/__tests__/NavLink.test.tsx -------------------------------------------------------------------------------- /app/components/ui/Badge.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/ui/Badge.tsx -------------------------------------------------------------------------------- /app/components/ui/Button.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/ui/Button.tsx -------------------------------------------------------------------------------- /app/components/ui/Card.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/ui/Card.tsx -------------------------------------------------------------------------------- /app/components/ui/Form.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/components/ui/Form.tsx -------------------------------------------------------------------------------- /app/dashboard/__tests__/page.test.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/dashboard/__tests__/page.test.tsx -------------------------------------------------------------------------------- /app/dashboard/error.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/dashboard/error.tsx -------------------------------------------------------------------------------- /app/dashboard/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/dashboard/layout.tsx -------------------------------------------------------------------------------- /app/dashboard/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/dashboard/page.tsx -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/favicon.ico -------------------------------------------------------------------------------- /app/globals.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/globals.css -------------------------------------------------------------------------------- /app/issues/[id]/edit/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/issues/[id]/edit/page.tsx -------------------------------------------------------------------------------- /app/issues/[id]/loading.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/issues/[id]/loading.tsx -------------------------------------------------------------------------------- /app/issues/[id]/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/issues/[id]/page.tsx -------------------------------------------------------------------------------- /app/issues/new/page.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/issues/new/page.tsx -------------------------------------------------------------------------------- /app/layout.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/layout.tsx -------------------------------------------------------------------------------- /app/providers.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/app/providers.tsx -------------------------------------------------------------------------------- /bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/bun.lockb -------------------------------------------------------------------------------- /db/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/db/index.ts -------------------------------------------------------------------------------- /db/schema.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/db/schema.ts -------------------------------------------------------------------------------- /drizzle.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/drizzle.config.ts -------------------------------------------------------------------------------- /eslint.config.mjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/eslint.config.mjs -------------------------------------------------------------------------------- /lessons/01-course-and-project-walkthrough.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/01-course-and-project-walkthrough.md -------------------------------------------------------------------------------- /lessons/02-intro-to-nextjs-getting-started.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/02-intro-to-nextjs-getting-started.md -------------------------------------------------------------------------------- /lessons/03-project-structure-and-configuration.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/03-project-structure-and-configuration.md -------------------------------------------------------------------------------- /lessons/04-routes-and-layouts.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/04-routes-and-layouts.md -------------------------------------------------------------------------------- /lessons/05-static-pages.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/05-static-pages.md -------------------------------------------------------------------------------- /lessons/06-server-actions-for-authentication.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/06-server-actions-for-authentication.md -------------------------------------------------------------------------------- /lessons/07-configuring-auth-forms-with-server-actions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/07-configuring-auth-forms-with-server-actions.md -------------------------------------------------------------------------------- /lessons/08-fetching-protected-data-in-server-components.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/08-fetching-protected-data-in-server-components.md -------------------------------------------------------------------------------- /lessons/09-creating-issues-with-server-actions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/09-creating-issues-with-server-actions.md -------------------------------------------------------------------------------- /lessons/10-editing-and-deleting-issues.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/10-editing-and-deleting-issues.md -------------------------------------------------------------------------------- /lessons/11-caching-and-memoizing-data.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/11-caching-and-memoizing-data.md -------------------------------------------------------------------------------- /lessons/12-api-routes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/12-api-routes.md -------------------------------------------------------------------------------- /lessons/13-middleware.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/13-middleware.md -------------------------------------------------------------------------------- /lessons/14-edge-functions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/14-edge-functions.md -------------------------------------------------------------------------------- /lessons/15-deploying-to-vercel.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/15-deploying-to-vercel.md -------------------------------------------------------------------------------- /lessons/16-testing.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lessons/16-testing.md -------------------------------------------------------------------------------- /lib/auth.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lib/auth.ts -------------------------------------------------------------------------------- /lib/dal.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lib/dal.ts -------------------------------------------------------------------------------- /lib/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lib/types.ts -------------------------------------------------------------------------------- /lib/utils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/lib/utils.ts -------------------------------------------------------------------------------- /middleware.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/middleware.ts -------------------------------------------------------------------------------- /next.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/next.config.ts -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/package.json -------------------------------------------------------------------------------- /postcss.config.mjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/postcss.config.mjs -------------------------------------------------------------------------------- /public/file.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/public/file.svg -------------------------------------------------------------------------------- /public/globe.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/public/globe.svg -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/public/next.svg -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/public/vercel.svg -------------------------------------------------------------------------------- /public/window.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/public/window.svg -------------------------------------------------------------------------------- /scripts/seed.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/scripts/seed.ts -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/tailwind.config.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/tsconfig.json -------------------------------------------------------------------------------- /vitest.config.mjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/vitest.config.mjs -------------------------------------------------------------------------------- /vitest.setup.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hendrixer/next.js-fundamentals/HEAD/vitest.setup.ts --------------------------------------------------------------------------------