
Explore Next.js app router with a practical dashboard including authentication and CRUD operations, guided by a hands-on React foundation based course with setup tips and real-world coding practices.
Set up a new Next.js app using create-next-app, explore the app router and project structure, and run the development server with pnpm to preview the dashboard starter.
Learn to apply global styles in a Next.js app by importing global.css into the root layout, using base styles, resets, utilities, and exploring trailwind, CSS modules, and CLSX.
Tailwind CSS speeds up development by providing utility classes you apply with class names to style elements, and it integrates with Next.js projects through optional setup and global CSS.
Explore CSS modules as locally scoped styles in Next.js, generating unique class names to prevent collisions, and compare them with Tailwind by using Home.module.css in the project.
Use clsx for conditional styling in Next.js, toggling class names based on component state, and compare status-based styling with other options like Tailwind, CSS Modules, and CSS-in-JS.
Explore why fonts affect performance and SEO, and learn how next/font in next.js optimizes fonts, bundles them as static assets, and eliminates extra requests for faster page rendering.
Learn to add a secondary font in a Next.js app router project by configuring Lusitana alongside Inter, updating font.ts, applying to paragraph elements, and handling font weights and subsets.
Explore how Next.js optimizes images with the next/image component, serves static assets from the public folder, and delivers desktop and mobile hero images with responsive sizing and lazy loading.
Learn to add a responsive mobile hero image in Next.js, switching between desktop and mobile versions with width, height, alt text, and conditional hide/show classes.
Explore nested routing with Next.js file system routing, create a dashboard page using a nested layout, and apply root layouts and co-located page.tsx for scalable UI.
Create and route additional dashboard pages in Next.js app router, building customers and invoices routes with page.tsx exports, then compare against the solution and plan a dashboard layout.
Explore creating and wiring a dashboard layout and root layout in the Next.js app router, including shared navigation, site nav components, and page-level tsx files for invoice and customer pages.
Learn why navigation optimization matters and how to use a customized Next.js link component for client-side navigation with partial page refreshing and prefetching and code splitting for faster production.
Use usePathName in a client nav-link component to show the active link with conditional CLSX styling in the Next.js app router.
Explore setting up the Next.js app router by creating a GitHub repository, a Wazelle account, linking to PostgreSQL, and seeding initial data for deployments.
Connect and deploy your Next.js project from a git repository to a Warsaw account by importing from GitHub, GitLab, or Bitbucket, authorizing access, and viewing instant deployment previews.
Create and configure a Postgres database on the WordCell platform for a Next.js app, manage env.local and secrets safely, and integrate with your project via .env and gitignore.
Seed your PostgreSQL database in a Next.js app using the app router, test the seed script and API route to populate an initial dataset and verify the connection.
Explore executing queries to seed a local PostgreSQL database for a Next.js app, creating users, invoices, and revenue tables, and running seed scripts via root.ts.
Troubleshoot executing queries in a Next.js app by restarting services, inspecting console errors, and validating local inventory connections, preparing to link a local database with SQL in chapter 7.
Explore troubleshooting steps to execute queries against a local PostgreSQL database in a Next.js app, including configuring the .env, disabling SSL, using pgAdmin, and seeding data.
Explore four data-fetching approaches in Next.js app router—api layer, database query, server components, and SQL directly—and learn when to use each while protecting database secrets.
Fetch data for the dashboard overview using server components in Next.js app router. Implement an async database query and render the dashboard page with updated content.
Learn to fetch revenue data and render the revenue chart component in the dashboard using the app router, including async data handling and mapping last 12 months.
Fetch the latest five invoices by date with a SQL join to customers for names and images, and render them in the revenue dashboard using app router async components.
Fetch data for four dashboard cards using fetchCardData in Next.js app router, compute totals and pending invoices, then render a responsive grid and discuss static rendering.
Compare request waterfall and parallel data fetching in Next.js app router, showing sequential vs parallel fetch patterns with revenue, invoices, and card data, and highlight performance implications.
Compare static and dynamic rendering, explain static site generation and incremental static regeneration, and explore real-time, user-specific content through server-side and client-side rendering.
Simulate a three-second slow data fetch to compare static and dynamic rendering, and examine how await fetching and delays affect user experience.
Explore streaming in Next.js app router to progressively render components from server to client, using suspend boundaries and load state to avoid blocking and improve user experience.
Learn to implement a page-wide streaming loading.tsx in Next.js app router for the dashboard. Display a loading skeleton during data fetching and understand how suspense-based fallback improves user feedback.
Add loading skeletons in a Next.js app router page by building loading.tsx that renders dashboard skeletons and various component skeletons to placeholder content while streaming from server to client.
Fix the loading skeleton bug in Next.js app router 9.2 by using root groups and parentheses to confine loading.tsx to the dashboard overview, preventing it from affecting other subpages.
Master Next.js app router streaming by implementing component-level suspense with loading.tsx, replacing full-page skeletons with granular loading for revenue charts, dashboards, and cards.
Practice streaming the latest invoices by moving fetch logic into the latest invoice component, wrapping it in a suspend boundary with a skeleton fallback in loading.tsx.
Learn to group components with a card wrapper, add skeletons, and place suspense boundaries to optimize streaming data in Next.js app router.
Objective: Go beyond the foundations. Master the App Router, Server Actions, and Database Integration by building a production-ready financial dashboard.
Course Overview
In Part 1, you mastered the React foundations and the core mental models of Next.js. Now, it’s time to put those skills to work.
In this second installment of the Mastering Next.js series, we move away from isolated components and into the world of Full-Stack Development. We will build the "Acme Dashboard"—a complex, feature-rich financial application that uses every advanced feature the Next.js App Router has to offer.
From architecting database schemas to handling complex authentication and real-time search, this course is designed to turn you into a professional Next.js developer who can build, secure, and deploy scalable web applications.
What You Will Learn
The Power of App Router: Deep dive into nested layouts, dynamic routing, and the loading.tsx streaming pattern.
Database & Data Fetching: Set up a PostgreSQL database and learn how to fetch data efficiently using Server Components and SQL.
Server Actions (Mutations): Move beyond APIs. Learn to handle form submissions, validate data with Zod, and revalidate the Next.js cache.
Search & Pagination: Implement high-performance search and pagination using URL state—perfect for SEO and user experience.
Authentication & Security: Secure your dashboard with NextAuth.js and implement middleware to protect sensitive routes.
Accessibility (a11y): Master the art of building inclusive forms and accessible UI patterns.
Performance Optimization: Learn Partial Prerendering (PPR), image optimization, and font best practices to achieve a perfect Lighthouse score.
Course Content
Project Setup & Architecture: Getting the Acme starter ready for scale.
Styling & UI: Tailwind CSS, CSS Modules, and creating a cohesive Dashboard UI.
Optimization: Handling Assets like a pro (Fonts, Images, and Metadata).
Routing & Layouts: Organizing a complex dashboard with nested routes.
The Data Layer: Integrating PostgreSQL and writing efficient Server Components.
Interactive Dashboards: Building Streaming Skeletons and handling async data.
Data Mutations: Creating, Updating, and Deleting invoices with Server Actions.
Form Validation & Handling: Using Zod for type-safe server-side validation.
Security: Implementing NextAuth.js for robust authentication.
Final Deployment: Going live on Vercel with a production-ready environment.
Who Is This Course For?
Students of Part 1: If you finished "React Foundations," this is your natural next step.
React Developers: Those who know the basics but want to learn how to build a "complete" app.
Backend Developers: Developers looking to transition into full-stack work using a modern JavaScript stack.