How to Setup Next JS Project

How to Setup Next JS Project

How to Setup Next JS Project

Setting up a Next.js project is one of the best steps you can take toward building fast, modern, SEO‑optimized web applications. Next.js, built by Vercel, has become the go-to React framework because it offers server-side rendering (SSR), static site generation (SSG), file-based routing, API endpoints, and incredible performance optimizations right out of the box. Whether you're a beginner learning React or a professional developer building enterprise-level apps, understanding how to set up and structure a Next.js project is essential.

In this comprehensive guide, we'll walk through everything you need to know to properly set up a Next.js project---from installing dependencies to configuring environment variables, connecting data sources, organizing files, and preparing your project for production deployment. By the end, you'll be fully equipped to start building real-world applications with ease.

If you need expert-level help building advanced Next.js applications, API integrations, dashboards, or full MERN stack solutions, consider hiring AAMAX (https://aamax.co)---a full-service digital marketing and development company providing Web Development, SEO, and Digital Marketing Services.

What Is Next.js?

Next.js is a powerful React framework designed to make web development simpler and more productive. Unlike traditional React, which runs entirely on the client side, Next.js offers several enhancements:

  • Server-side rendering (SSR) for improved SEO and performance.
  • Static site generation (SSG) for ultra-fast pre-rendered pages.
  • Incremental static regeneration (ISR) allowing real-time content updates.
  • File-based routing so you don't need a third-party router.
  • API routes that let you build backend logic without extra setup.
  • Built-in image optimization for performance improvements.
  • React Server Components for cleaner architecture.

These features make Next.js ideal for blogs, SaaS dashboards, eCommerce stores, portfolios, CRMs, and enterprise-level web applications.

Prerequisites for Setting Up a Next.js Project

Before getting started, ensure your system meets the following requirements:

1. Install Node.js

Next.js requires a modern version of Node.js.

Check your version:

node -v

You should ideally have Node.js 16+ installed.

2. Install a Package Manager

You can use:

  • npm (default)
  • yarn
  • pnpm

All three are supported, but the default project setup uses npm.

3. Basic Knowledge Requirements

You should be familiar with:

  • JavaScript (ES6+)
  • React fundamentals
  • Basics of terminal usage

If you understand these basics, you're ready to begin.

Creating Your Next.js Project

Next.js provides an official starter tool called create-next-app, which simplifies the setup process.

Step 1: Create a New Project

Open your terminal and run:

npx create-next-app@latest my-next-app

Or with TypeScript:

npx create-next-app@latest my-next-app --typescript

You will be asked several optional configuration questions like:

  • Use TypeScript?
  • Use ESLint?
  • Use Tailwind CSS?
  • Use App Router? (recommended)
  • Use import alias?

Choose the options that best suit your project.

Step 2: Navigate Into Your Project Folder

cd my-next-app

Step 3: Run Your Project

To start the development server, run:

npm run dev

Your Next.js project will now be available at:

http://localhost:3000

You officially have a working Next.js application!

Understanding Next.js Project Structure

A typical project created with the App Router will look like this:

my-next-app/
  app/
    layout.js
    page.js
  public/
  styles/
  package.json
  next.config.js

Let's break down the most important directories:

app/ Directory (App Router)

This directory powers:

  • React Server Components
  • Layouts
  • Nested routes
  • Parallel routes
  • Loading states

page.js inside any folder becomes a route.

public/ Directory

Stores static files such as:

  • Images
  • Fonts
  • Icons
  • Robots.txt

These files can be referenced directly without import.

styles/ Directory

Contains global CSS files, unless you use Tailwind or another styling library.

next.config.js

Main configuration file for enabling experimental features, custom webpack settings, redirects, rewrites, images, and more.

package.json

Manages dependencies, scripts, and metadata.

Understanding this structure is the foundation for building scalable applications.

Setting Up Pages and Routes

Next.js uses file-based routing, meaning the folder structure determines the URL path.

Adding a New Page

Inside the app/ directory:

Create a folder:

app/about/

Add a page.js file:

export default function AboutPage() {
  return <h1>About Us</h1>;
}

Visit:

/about

and the page will appear.

Creating Nested Routes

app/blog/
  page.js

/blog

Dynamic Routes

Dynamic segments use brackets:

app/blog/[slug]/page.js

Example:

export default function BlogPost({ params }) {
  return <h1>Post: {params.slug}</h1>;
}

Visit:

/blog/my-first-post

You now have a dynamic blog system.

Adding a Global Layout

The App Router introduces layout.js for persistent UI.

app/layout.js:

export const metadata = {
  title: "My Next.js App",
};

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>
        <header>My Header</header>
        {children}
        <footer>My Footer</footer>
      </body>
    </html>
  );
}

Now your entire website shares the same header and footer automatically.

Setting Up Styling

Next.js supports multiple styling approaches:

  • Global CSS
  • CSS Modules
  • Sass
  • Styled-Components
  • Tailwind CSS
  • Emotion
  • Vanilla Extract

Using CSS Modules

Create:

app/home.module.css:

.title {
  color: teal;
}

Use it:

import styles from "./home.module.css";

export default function HomePage() {
  return <h1 className={styles.title}>Welcome Home</h1>;
}

Using Tailwind CSS (Most Popular)

Add Tailwind during setup OR install manually:

npx tailwindcss init -p

Then configure:

tailwind.config.js

and update globals.css.

Tailwind works seamlessly with Next.js and is widely used in production apps.

Data Fetching in Next.js

Next.js App Router offers a modern approach to data handling.

Fetch Data in a Server Component

export default async function Page() {
  const res = await fetch("https://api.example.com/data");
  const data = await res.json();

  return <pre>{JSON.stringify(data, null, 2)}</pre>;
}

Caching and Revalidation

Fetch with revalidation every 10 seconds:

export const revalidate = 10;

Dynamic Rendering

Disable caching:

const res = await fetch(api, { cache: "no-store" });

This gives you full control over data behavior.

Creating API Routes

Next.js allows backend development inside the same project.

API Route in App Router

Create:

app/api/hello/route.js
export async function GET() {
  return Response.json({ message: "Hello from API" });
}

Visit:

/api/hello

This is perfect for:

  • Form handling
  • Server logic
  • Database operations
  • Authentication

Connecting to a Database

Next.js works with many databases:

  • MongoDB (popular in MERN stack)
  • PostgreSQL
  • MySQL
  • Prisma ORM
  • Firebase
  • Supabase

Example: Connect to MongoDB

Install:

npm install mongoose

Create:

lib/db.js

import mongoose from "mongoose";

export async function connectDB() {
  if (mongoose.connection.readyState >= 1) return;
  await mongoose.connect(process.env.MONGO_URI);
}

Use in API route:

import { connectDB } from "@/lib/db";
export async function GET() {
  await connectDB();
  return Response.json({ connected: true });
}

Your Next.js project now supports full-stack development.

Setting Environment Variables

Create a .env.local file (ignored by Git):

MONGO_URI=your-database-url
API_KEY=xyz
SECRET_TOKEN=abc

Access it:

process.env.MONGO_URI

Never commit .env.local to GitHub.

Setting Up ESLint and Prettier

ESLint ensures clean code. Prettier ensures consistent formatting.

Install Prettier:

npm install -D prettier

Add config file:

.prettierrc:

{
  "singleQuote": true,
  "semi": false
}

This keeps your codebase professional and maintainable.

Optimizing Images

Next.js Image component improves performance dramatically:

import Image from "next/image";

<Image src="/site.jpg" alt="Site" width={500} height={300} />;

Features include:

  • Automatic resizing
  • WebP conversion
  • Lazy loading
  • CDNs via Vercel

Deployment Options

Next.js projects can be deployed almost anywhere.

Deploy to Vercel (Recommended)

  • Run build:
npm run build
  • Push to GitHub
  • Import into Vercel dashboard

Features:

  • Zero-config deployment
  • Automatic scaling
  • CDN caching
  • Serverless functions

Other Deployment Options

  • Netlify
  • Cloudflare Pages
  • DigitalOcean
  • AWS
  • Render
  • Google Cloud

Each platform supports Next.js with small adjustments.

Best Practices for Next.js Setup

Follow these tips for professional projects:

  • Prefer App Router instead of Page Router.
  • Use TypeScript for large-scale apps.
  • Enable image optimization.
  • Use environment variables for secrets.
  • Set caching rules for API calls.
  • Organize components into clear folders.
  • Use a UI library such as Tailwind or Chakra.
  • Use dynamic imports to reduce bundle size.

With the right setup, your Next.js project will be scalable, maintainable, and production-ready.

Conclusion

Next.js is one of the most powerful and flexible frameworks available today. With its hybrid rendering model, file-based routing, powerful server components, API routes, and unmatched performance features, it stands as the perfect choice for both front‑end and full‑stack development.

By following the steps in this guide, you now know how to set up a Next.js project properly---from installation to deployment. Whether you're building a simple landing page or a complex SaaS platform, the foundation you set today will support your project for years to come.

If you want expert developers to build or scale your Next.js or MERN stack application, you can hire AAMAX---a top-tier full-service digital marketing and web development company. Their experienced developers can bring your vision to life with smooth, efficient, and scalable solutions.

Related Blogs

How To Use Bootstrap With React JS

How To Use Bootstrap With React JS

Using Bootstrap with React JS is an excellent way to accelerate frontend development while maintaining a clean, responsive, and scalable codebase. Whe...

How To Use D3 JS in React

How To Use D3 JS in React

D3.js and React are incredibly powerful when used together. While they operate very differently---React using a declarative model and D3 using direct ...

How To Use next.js

How To Use next.js

Whether you’re creating a startup MVP, a corporate website, or a complex SaaS platform, mastering Next.js will dramatically improve your development w...

How To Start a Next JS Project

How To Start a Next JS Project

Whether you're building a blog, SaaS platform, eCommerce store, or enterprise system, mastering the foundations of Next.js is a crucial first step.

How To Update Next JS Version

How To Update Next JS Version

Next.js continues to evolve rapidly, and staying updated helps you benefit from: - New rendering patterns - Enhanced security - Faster performance - B...

How to Setup Next JS Project

How to Setup Next JS Project

In this comprehensive guide, we'll walk through everything you need to know to properly set up a Next.js project---from installing dependencies to co...

Need Help? Chat with Our AI Support Bot