Project Configuration

Loading concept...

🏠 Next.js Project Configuration: Your App’s Secret Recipe Book

Imagine you’re building the most amazing treehouse ever. Before you start hammering nails, you need a secret recipe book that tells your treehouse how to behave. That’s exactly what project configuration is in Next.js!

Your configuration files are like giving your app special instructions: “Hey app, here’s where to find the secret password for the database” or “Make sure you only share certain secrets with visitors.”

Let’s explore your app’s recipe book together! 🎉


🔐 Environment Variables: Your App’s Secret Vault

What Are They?

Think of environment variables like a secret safe in your treehouse. Inside, you keep special codes and passwords that your app needs to work, but you don’t want everyone to see them.

Simple Example:

DATABASE_PASSWORD=super_secret_123
API_KEY=my_special_key_abc

These are secrets your app uses, but you never show them to visitors!

Why Use Them?

  • Keep secrets safe - Don’t put passwords in your code
  • Different secrets for different places - One password for practice, another for the real thing
  • Easy to change - Update a secret without rewriting code
graph TD A[Your App] --> B[Reads from .env file] B --> C[Gets DATABASE_PASSWORD] B --> D[Gets API_KEY] C --> E[Connects to Database] D --> F[Talks to Other Services]

🌍 NEXT_PUBLIC Prefix: Sharing vs. Hiding

The Magic Word

Here’s a super important rule: NEXT_PUBLIC is like a magic word that decides who can see your secrets!

Without NEXT_PUBLIC = Only the server (your treehouse’s control room) can see it With NEXT_PUBLIC = Everyone visiting your website can see it

Example Time!

# SECRET - Only server sees this
DATABASE_URL=postgresql://secret

# PUBLIC - Everyone can see this
NEXT_PUBLIC_WEBSITE_NAME=My Cool App

When to Use What?

Type Use For Example
Regular Passwords, API keys API_SECRET=xyz
NEXT_PUBLIC App name, public URLs NEXT_PUBLIC_APP_URL=mysite.com

⚠️ Golden Rule: Never put passwords or secret keys with NEXT_PUBLIC_! That’s like writing your diary password on a billboard!


📁 Environment File Types: Different Safes for Different Times

The Three Special Files

Your Next.js app can have different secret safes for different situations:

graph TD A[.env.local] -->|Your Computer| B[Development] C[.env.development] -->|Practice Mode| B D[.env.production] -->|Real Website| E[Production] F[.env] -->|Default Secrets| B F -->|Default Secrets| E

What Each File Does

.env - The base recipe book. Works everywhere.

NEXT_PUBLIC_APP_NAME=My App

.env.local - Your personal secrets. Never shared with others.

MY_LOCAL_SECRET=only_on_my_computer

.env.development - Practice mode secrets.

DATABASE_URL=practice_database

.env.production - Real website secrets.

DATABASE_URL=real_database

Priority Order (Who Wins?)

  1. .env.local (Most important - always wins!)
  2. .env.development or .env.production (Depends on mode)
  3. .env (Backup plan)

⚙️ next.config.ts File: The Master Control Panel

What Is It?

The next.config.ts file is like the main control panel of your treehouse. It tells Next.js how to build and run your app.

Basic Structure

import type { NextConfig } from 'next'

const nextConfig: NextConfig = {
  // Your settings go here!
}

export default nextConfig

Common Settings

const nextConfig: NextConfig = {
  // Where images can come from
  images: {
    domains: ['example.com'],
  },

  // Redirect old pages to new ones
  async redirects() {
    return [
      {
        source: '/old-page',
        destination: '/new-page',
        permanent: true,
      },
    ]
  },

  // Add custom headers
  async headers() {
    return [
      {
        source: '/(.*)',
        headers: [
          { key: 'X-Frame-Options', value: 'DENY' },
        ],
      },
    ]
  },
}

What Can You Control?

Setting What It Does
images Which websites can show pictures
redirects Send visitors to different pages
headers Add security rules
env Add more environment variables

📘 TypeScript Configuration: Teaching Your Code to Speak Clearly

What Is TypeScript?

TypeScript is like giving your code a spell-checker. It catches mistakes before your app runs!

Without TypeScript:

// Oops! This bug hides until runtime
function add(a, b) {
  return a + b
}
add("hello", 5) // Weird result!

With TypeScript:

// TypeScript catches this immediately!
function add(a: number, b: number): number {
  return a + b
}
add("hello", 5) // ❌ Error! Can't add text to number

The tsconfig.json File

{
  "compilerOptions": {
    "target": "ES2017",
    "lib": ["dom", "esnext"],
    "strict": true,
    "moduleResolution": "bundler",
    "jsx": "preserve",
    "plugins": [
      { "name": "next" }
    ],
    "paths": {
      "@/*": ["./src/*"]
    }
  },
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
  "exclude": ["node_modules"]
}

Key Settings Explained

Setting What It Does
strict Maximum spell-checking!
paths Create shortcuts like @/
jsx Handle React components
include Which files to check

🛤️ Type-safe Routes: Never Get Lost Again!

The Problem

Imagine your app has many pages. You type a link wrong:

// Oops! "abuot" instead of "about"
<Link href="/abuot">About Us</Link>

Your visitor clicks and sees an error page! 😱

The Solution: Type-safe Routes

Next.js can check your links before your app runs. No more typos!

How to Enable It

In your next.config.ts:

const nextConfig: NextConfig = {
  experimental: {
    typedRoutes: true,
  },
}

How It Works

graph TD A[You Type a Route] --> B{Does Route Exist?} B -->|Yes| C[✅ Code Works!] B -->|No| D[❌ TypeScript Error] D --> E[Fix the Typo] E --> A

Example

// With type-safe routes enabled:

// ✅ This works - page exists
<Link href="/about">About</Link>

// ❌ Error! TypeScript says:
// "'/abuot' is not a valid route"
<Link href="/abuot">About</Link>

Generated Types

Next.js creates a special file that knows all your routes:

// .next/types/link.d.ts (auto-generated)
type Route =
  | "/"
  | "/about"
  | "/contact"
  | "/blog"
  | "/blog/[slug]"

🎯 Putting It All Together

Here’s how all these pieces work together in your Next.js app:

graph TD A[next.config.ts] -->|Controls App Behavior| B[Your Next.js App] C[.env files] -->|Provide Secrets| B D[tsconfig.json] -->|Type Safety| B E[Type-safe Routes] -->|No Broken Links| B B --> F[Happy Users! 🎉]

Quick Checklist

Environment Variables - Store secrets in .env files ✅ NEXT_PUBLIC Prefix - Only use for truly public values ✅ File Types - Use .local, .development, .production appropriately ✅ next.config.ts - Configure images, redirects, headers ✅ TypeScript - Enable strict mode for safety ✅ Type-safe Routes - Enable typedRoutes to catch link typos


🚀 You Did It!

Now you understand how to configure your Next.js app like a pro! Your app’s secret recipe book is ready to help you build something amazing.

Remember:

  • 🔐 Keep secrets in .env files
  • 🌍 Use NEXT_PUBLIC_ only for public values
  • ⚙️ Control your app with next.config.ts
  • 📘 Let TypeScript catch your mistakes
  • 🛤️ Use type-safe routes to never break links

Happy building! 🎉

Loading story...

No Story Available

This concept doesn't have a story yet.

Story Preview

Story - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

Interactive Preview

Interactive - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Interactive Content

This concept doesn't have interactive content yet.

Cheatsheet Preview

Cheatsheet - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Cheatsheet Available

This concept doesn't have a cheatsheet yet.

Quiz Preview

Quiz - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.

No Quiz Available

This concept doesn't have a quiz yet.