🚀 Next.js Quickstart Guide

Build modern, AI-powered apps with Next.js, TypeScript, Tailwind CSS, and shadcn/ui.

Next.js
TypeScript
Tailwind CSS
shadcn/ui
VibeCodex
What You'll Learn
  • How to create pages and components in Next.js 14+
  • How to use Tailwind CSS and shadcn/ui for beautiful UIs
  • How to add dynamic features (client/server components, API routes)
  • How to structure your VibeCodex project
  • How to use AI to accelerate your workflow
Project Structure
vibecodex/
├── app/            # Pages & layouts (App Router)
├── components/     # Reusable React components
│   ├── ui/         # shadcn/ui components
│   └── [feature]/  # Feature-specific components
├── lib/            # Utilities & helpers
├── public/         # Static assets
├── hooks/          # Custom React hooks
├── styles/         # Global styles (Tailwind)
└── docs/           # Documentation
Create a New Page
  1. Add a file: app/hello/page.tsx
  2. Write your component:
    
    export default function HelloPage() {
      return <h1 className="text-3xl font-bold">Hello, VibeCodex! 👋</h1>;
    }
  3. Visit: http://localhost:3000/hello
Dynamic Example: Live Clock (Client Component)
6:06:25 PM(This updates every second!)

"use client";
import { useState, useEffect } from "react";

export function LiveClock() {
  const [now, setNow] = useState(new Date());
  useEffect(() => {
    const timer = setInterval(() => setNow(new Date()), 1000);
    return () => clearInterval(timer);
  }, []);
  return <span>{now.toLocaleTimeString()}</span>;
}
API Route Example
  1. Create: app/api/hello/route.ts
  2. Write your API handler:
    
    import { NextResponse } from "next/server";
    
    export async function GET() {
      return NextResponse.json({ message: "Hello from API!" });
    }
  3. Test: http://localhost:3000/api/hello
Dynamic Routing Example
  1. Add a file: app/greet/[name]/page.tsx
  2. Write your dynamic page:
    
    import { useParams } from "next/navigation";
    
    export default function GreetPage() {
      const params = useParams();
      return <h1>Hello, {params.name}!</h1>;
    }
  3. Visit: http://localhost:3000/greet/yourname