Next.js Tutorial for Beginners: Create a Simple Blog App with Tailwind CSS
๐ Introduction
In this tutorial, you'll learn how to create a simple blog app using Next.js 14 and Tailwind CSS. This step-by-step guide is perfect for beginners who want to understand Next.js fundamentals like routing, pages, dynamic routes, and styling.๐ฆ Step 1: Create a New Next.js App
npx create-next-app@latest simple-blog-app
Follow the prompts:
- TypeScript: No
- App Router: Yes
- Tailwind CSS: Yes
๐ Step 2: Folder Structure
simple-blog-app/
โโโ app/
โ โโโ page.js โ Home Page
โ โโโ about/page.js โ About Page
โ โโโ blog/page.js โ Blog List
โ โโโ blog/[slug]/page.js โ Blog Post (Dynamic)
โโโ components/Navbar.js
โโโ data/posts.js
๐ Step 3: Add Dummy Blog Data
// data/posts.js
export const posts = [
{
slug: "nextjs-introduction",
title: "Getting Started with Next.js",
content: "Next.js is a React framework for production..."
},
{
slug: "tailwind-setup",
title: "Using Tailwind CSS with Next.js",
content: "Tailwind makes styling easy and fast..."
}
];
๐งฉ Step 4: Create Navbar Component
// components/Navbar.js
import Link from "next/link";
export default function Navbar() {
return (
<nav className="bg-blue-600 text-white p-4">
<div className="max-w-5xl mx-auto flex gap-4">
<Link href="/">Home</Link>
<Link href="/about">About</Link>
<Link href="/blog">Blog</Link>
</div>
</nav>
);
}
๐ Step 5: Home Page
// app/page.js
import Navbar from "../components/Navbar";
export default function Home() {
return (
<>
<Navbar />
<main className="max-w-5xl mx-auto p-4">
<h1 className="text-3xl font-bold">Welcome to Simple Blog</h1>
<p className="mt-2">A blog built with Next.js and Tailwind CSS.</p>
</main>
</>
);
}
๐ Step 6: About Page
// app/about/page.js
import Navbar from "../../components/Navbar";
export default function About() {
return (
<>
<Navbar />
<main className="max-w-5xl mx-auto p-4">
<h1 className="text-2xl font-semibold">About Us</h1>
<p className="mt-2">This is a demo blog made with Next.js 14.</p>
</main>
</>
);
}
๐ Step 7: Blog List Page
// app/blog/page.js
import { posts } from "../../data/posts";
import Link from "next/link";
import Navbar from "../../components/Navbar";
export default function Blog() {
return (
<>
<Navbar />
<main className="max-w-5xl mx-auto p-4">
<h1 className="text-2xl font-semibold mb-4">Blog Posts</h1>
<ul className="space-y-3">
{posts.map((post) => (
<li key={post.slug}>
<Link href={`/blog/${post.slug}`} className="text-blue-600 hover:underline">
{post.title}
</Link>
</li>
))}
</ul>
</main>
</>
);
}
๐ Step 8: Dynamic Blog Post Page
// app/blog/[slug]/page.js
import { posts } from "../../../data/posts";
import Navbar from "../../../components/Navbar";
export default function Post({ params }) {
const post = posts.find((p) => p.slug === params.slug);
if (!post) return <p>Post not found!</p>;
return (
<>
<Navbar />
<main className="max-w-5xl mx-auto p-4">
<h1 className="text-2xl font-bold">{post.title}</h1>
<p className="mt-2">{post.content}</p>
</main>
</>
);
}
๐ Step 9: Deploy on Vercel
Run the following command to deploy your app on Vercel:npx vercel
Or sign up on https://vercel.com and import your GitHub repo.
๐ Final Thoughts
This tutorial helped you build a complete blog website using Next.js and Tailwind CSS. You've learned about routing, components, and dynamic pages. Now you can expand it with features like markdown blogs, CMS integration, or Firebase. Happy Coding! ๐
javascript tutorial
Next.js tutorial
nextjs blog app
next.js for beginners
how to build blog with nextjs
tailwind css nextjs
nextjs dynamic routes
nextjs routing tutorial
nextjs beginner guide
create nextjs app
react framework tutorial
web development tutorial
nextjs project example
nextjs tailwind tutorial
nextjs website tutorial
Next.js