Notifications

No notifications

/Phase 4

Next.js Essentials

Next.js — The React Framework for Production

Next.js extends React with file-based routing, server-side rendering (SSR), static site generation (SSG), and API routes — all with zero configuration.

App Router (Next.js 13+)

Files in app/ define routes. Every folder is a segment, and special files control behavior:

FilePurpose
page.tsxRoute UI (makes the segment publicly accessible)
layout.tsxShared layout wrapping child pages
loading.tsxLoading UI (React Suspense boundary)
error.tsxError boundary for the segment
not-found.tsx404 UI

Folder = Route

app/
  page.tsx          → /
  about/page.tsx    → /about
  blog/[slug]/page.tsx → /blog/:slug

Rendering Strategies

StrategyWhen Content GeneratesUse Case
SSGAt build timeBlog, docs, marketing
SSROn each requestPersonalized dashboards
ISRBuild + revalidateProduct pages
CSRIn the browserInteractive widgets

Server vs Client Components

  • Server Components (default): Render on the server, no client JS, can access DB/files directly.
  • Client Components ("use client"): Run in the browser, support hooks and interactivity.

API Routes

app/api/hello/route.ts creates an API endpoint at /api/hello:

export async function GET() {
  return Response.json({ message: "Hello!" });
}

On this page

Detailed Theory

What Next.js Is and Why You'd Use It

React on its own is just a UI library. To build a real app you need: routing, server-side rendering, file uploads, an API layer, image optimisation, deployment, caching… Next.js bundles all of that around React. It's the most popular React framework, and the reference implementation for Server Components.

If you build with React in 2026, you're very likely doing it inside Next.js (or its competitor Remix).

File-Based Routing — No Router Needed

In the App Router, every folder under /app becomes a URL segment. A page.tsx inside makes it a route.

app/
├── page.tsx                → /
├── about/page.tsx          → /about
├── blog/
│   ├── page.tsx            → /blog
│   └── [slug]/page.tsx     → /blog/anything
└── (marketing)/            → grouping folder, not in URL
    └── pricing/page.tsx    → /pricing

Special filenames inside any folder:

FilePurpose
page.tsxThe actual page UI
layout.tsxWraps every page in this folder + children
loading.tsxShown while the page streams in
error.tsxCaught error UI for the segment
not-found.tsx404 for the segment
route.tsAPI endpoint (instead of page)

Your First Page

// app/about/page.tsx
export default function AboutPage() {
  return <h1>About us</h1>;
}

That's a real route at /about. No imports, no router config.

Layouts — Shared UI That Doesn't Re-Render

// app/layout.tsx — wraps every page in the app
export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>
        <Navbar />
        {children}
        <Footer />
      </body>
    </html>
  );
}

Nest layouts by putting more layout.tsx files in subfolders. Layouts persist across navigation — a sidebar doesn't unmount when the main area changes.

Dynamic Routes

app/blog/[slug]/page.tsx

export default async function BlogPost({ params }) {
  const { slug } = await params;       // Next 15+: params is a Promise
  const post = await getPost(slug);
  return <h1>{post.title}</h1>;
}

The folder [slug] matches any string. Use [...slug] for catch-all (/blog/a/b/c).

Linking Without Reloading

import Link from "next/link";

<Link href="/about">About</Link>

is a beefed-up that does client-side navigation and prefetches the linked page when it scrolls into view.

Server vs Client Components

Every component in /app is a Server Component by default:

// Runs ONLY on the server. Zero JS shipped to the browser.
async function Posts() {
  const posts = await db.query(...);   // direct DB call!
  return <ul>{posts.map(p => <li key={p.id}>{p.title}</li>)}</ul>;
}

For interactivity (useState, onClick, browser APIs), opt into a Client Component with a directive:

"use client";

import { useState } from "react";

export default function Counter() { const [n, setN] = useState(0); return <button onClick={() => setN(n + 1)}>{n}</button>; }

Mental model: most pages are Server Components, sprinkled with small interactive Client Component "islands".

Data Fetching — Just await

In a Server Component you fetch data inline:

export default async function Users() {
  const res = await fetch("https://api.example.com/users");
  const users = await res.json();
  return <List items={users} />;
}

No useEffect, no loading state, no race conditions. The page renders on the server with the data already in place.

Beginner Mistakes to Skip

1. Adding useState to a server component — error. Mark the file "use client" or split out a small client component. 2. Importing a server-only module into a client component — bundling explosion. Server-only utilities should never reach /client files. 3. Forgetting that params and searchParams are Promises in Next 15+ — await them. 4. Using next/link with inside unnecessarily — modern renders the itself. 5. Storing secrets in code that runs on the client — only NEXT_PUBLIC_* env vars are exposed; everything else stays server-side.

Intermediate: Caching & Revalidation

Next.js extends fetch with cache controls:

// Cached indefinitely (build-time, like SSG)
fetch(url, { cache: "force-cache" });

// Revalidate every 60 s (ISR) fetch(url, { next: { revalidate: 60 } });

// Always fresh (SSR-like) fetch(url, { cache: "no-store" });

// Tag-based invalidation fetch(url, { next: { tags: ["posts"] } }); // later: revalidateTag("posts");

The framework decides at build time whether each route is static (built once) or dynamic (built per request) based on these hints.

Intermediate: Loading & Streaming

Drop a loading.tsx next to a page and Next streams it instantly while the page is being prepared:

// app/dashboard/loading.tsx
export default function Loading() {
  return <Spinner />;
}

Use boundaries inside a page to stream individual slow chunks:

<Suspense fallback={<Skeleton />}>
  <SlowChart />
</Suspense>
<Suspense fallback={<Skeleton />}>
  <SlowTable />
</Suspense>

The user sees the shell + skeletons immediately; chunks fill in as data arrives.

Intermediate: API Route Handlers

// app/api/users/route.ts
import { NextResponse } from "next/server";

export async function GET() { const users = await db.query(...); return NextResponse.json(users); }

export async function POST(req: Request) { const body = await req.json(); // ... return NextResponse.json({ ok: true }); }

Each HTTP verb is its own export. Place route.ts anywhere under /app to mount that endpoint.

Intermediate: Server Actions — Forms Without Endpoints

// app/posts/new/page.tsx
async function createPost(formData: FormData) {
  "use server";
  const title = formData.get("title");
  await db.posts.insert({ title });
  revalidatePath("/posts");
}

export default function NewPost() { return ( <form action={createPost}> <input name="title" /> <button>Save</button> </form> ); }

The function runs on the server but you wired it up directly to a form. No API route to maintain. Game-changer for CRUD UIs.

Intermediate: Metadata & SEO

Export a metadata object (or a generateMetadata async function) from any page or layout:

export const metadata = {
  title: "My Page",
  description: "...",
  openGraph: { images: ["/og.png"] },
};

Next handles </code>, OG tags, sitemap.xml, robots.txt — out of the box.</p><p><h2 id="advanced-middleware">Advanced: Middleware</h2></p><p><code>middleware.ts</code> at the project root runs <strong>before</strong> every request. Common uses: auth redirects, geo-based routing, A/B testing, URL rewrites.</p><p><pre class="bg-[#0d0d15] rounded-lg p-4 my-3 overflow-x-auto"><code class="text-[12px] leading-[1.7] text-orange-200 font-mono">import { NextResponse } from "next/server";</p><p>export function middleware(req) { const token = req.cookies.get("token"); if (!token && req.nextUrl.pathname.startsWith("/admin")) { return NextResponse.redirect(new URL("/login", req.url)); } }</p><p>export const config = { matcher: ["/admin/:path*"] };</code></pre></p><p><h2 id="advanced-generatestaticparams-for-hybrid-ssg">Advanced: <code>generateStaticParams</code> for Hybrid SSG</h2></p><p>Tell Next which dynamic params to pre-build at build time:</p><p><pre class="bg-[#0d0d15] rounded-lg p-4 my-3 overflow-x-auto"><code class="text-[12px] leading-[1.7] text-orange-200 font-mono">export async function generateStaticParams() { const posts = await getAllPostSlugs(); return posts.map((slug) => ({ slug })); }</code></pre></p><p>The matching pages become static HTML at build time; everything else is rendered on demand.</p><p><h2 id="advanced-image-font-optimisation">Advanced: Image & Font Optimisation</h2></p><p><pre class="bg-[#0d0d15] rounded-lg p-4 my-3 overflow-x-auto"><code class="text-[12px] leading-[1.7] text-orange-200 font-mono">import Image from "next/image"; <Image src="/hero.jpg" width={1200} height={600} alt="Hero" priority /></p><p>import { Inter } from "next/font/google"; const inter = Inter({ subsets: ["latin"] }); <body className={inter.className}>...</code></pre></p><p>You get automatic resizing, modern formats (AVIF/WebP), lazy loading, and zero-CLS font loading — for free.</p><p><h2 id="advanced-parallel-intercepting-routes">Advanced: Parallel & Intercepting Routes</h2></p><p><ul><li><strong>Parallel routes</strong> (<code>@modal/page.tsx</code>) render multiple pages into the same layout simultaneously — useful for dashboards with independent panels.</li> <li><strong>Intercepting routes</strong> (<code>(.)photo/[id]/page.tsx</code>) let you show one route's content inside another's layout (e.g. Instagram-style modal previews while preserving the deep-link URL).</li> </ul> Powerful, niche — reach for them only when the simpler patterns aren't enough.</p><p><h2 id="advanced-edge-vs-node-runtime">Advanced: Edge vs Node Runtime</h2></p><p><pre class="bg-[#0d0d15] rounded-lg p-4 my-3 overflow-x-auto"><code class="text-[12px] leading-[1.7] text-orange-200 font-mono">export const runtime = "edge"; // or "nodejs" (default)</code></pre></p><p>The Edge runtime is a slimmed-down V8 environment running close to your users worldwide. Lower latency, no Node APIs (no <code>fs</code>, no native modules). Great for auth, A/B testing, geo-personalisation.</p><p><h2 id="practice-path">Practice Path</h2></p><p>1. Spin up a Next.js app, build a 3-route site (<code>/</code>, <code>/about</code>, <code>/blog/[slug]</code>) using only Server Components. 2. Add a "Like" button as a small Client Component embedded in the post page. 3. Replace a <code>useEffect</code> + <code>fetch</code> flow with a Server Component that <code>await</code>s data directly. 4. Build a contact form that posts via a <strong>Server Action</strong> and revalidates the listing page.</p></div></div></div></div></div></div></div></div><!--$--><!--/$--></div></div><footer class="site-footer"><div class="site-footer__inner"><div class="site-footer__brand"><a class="site-footer__logo" href="/">CAMPUSCRATE</a><p class="site-footer__tagline">Your one-stop platform for hackathons, internships, competitions, notes, and campus communities.</p><div class="site-footer__socials"><a href="https://x.com/CampusCrateind" target="_blank" rel="noopener noreferrer" aria-label="CampusCrate on X" class="site-footer__social-link"><i class="fa-brands fa-x-twitter"></i></a><a href="https://www.instagram.com/campuscrate.in?igsh=MmtxdmgwbnJrc2dj" target="_blank" rel="noopener noreferrer" aria-label="CampusCrate on Instagram" class="site-footer__social-link"><i class="fa-brands fa-instagram"></i></a><a href="https://www.linkedin.com/company/campuscrate/" target="_blank" rel="noopener noreferrer" aria-label="CampusCrate on LinkedIn" class="site-footer__social-link"><i class="fa-brands fa-linkedin-in"></i></a><a href="mailto:support@campuscrate.in" aria-label="Email CampusCrate" class="site-footer__social-link"><i class="fa-solid fa-envelope"></i></a></div></div><div class="site-footer__links"><div class="site-footer__col"><h4 class="site-footer__col-title">Explore</h4><a href="/events">Events</a><a href="/societies">Societies</a><a href="/notes">Notes</a><a href="/testpapers">Test Papers</a><a href="/cheatsheets">Cheat Sheets</a></div><div class="site-footer__col"><h4 class="site-footer__col-title">Opportunities</h4><a href="/events?category=hackathon">Hackathons</a><a href="/events?category=internship">Internships</a><a href="/events?category=competition">Competitions</a><a href="/suggestions">Suggestions</a></div><div class="site-footer__col"><h4 class="site-footer__col-title">Company</h4><a href="/">About Us</a><a href="/roadmaps">Careers</a><a href="/learn">Learning</a><a href="mailto:support@campuscrate.in">Contact</a></div><div class="site-footer__col"><h4 class="site-footer__col-title">Legal</h4><a href="/privacy-policy">Privacy Policy</a><a href="/terms-of-service">Terms of Service</a><a href="/cookie-policy">Cookie Policy</a></div></div></div><div class="site-footer__bottom"><p>© <!-- -->2026<!-- --> CampusCrate. All rights reserved.</p><p class="site-footer__built">Built with <span style="color:var(--accent-orange)">♥</span> for students, by students.</p></div></footer><script src="/_next/static/chunks/0bo-6z2fpq-v4.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\nb:I[68027,[\"/_next/static/chunks/0ggphu_7q.lq2.js\",\"/_next/static/chunks/03_2rtgfemjsh.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\",1]\nd:I[72487,[\"/_next/static/chunks/0ggphu_7q.lq2.js\",\"/_next/static/chunks/03_2rtgfemjsh.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\ne:I[39756,[\"/_next/static/chunks/0ggphu_7q.lq2.js\",\"/_next/static/chunks/03_2rtgfemjsh.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\nf:I[37457,[\"/_next/static/chunks/0ggphu_7q.lq2.js\",\"/_next/static/chunks/03_2rtgfemjsh.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"default\"]\n10:I[42695,[\"/_next/static/chunks/0ggphu_7q.lq2.js\",\"/_next/static/chunks/03_2rtgfemjsh.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/09cszil5f63hz.js\"],\"default\"]\n11:I[47257,[\"/_next/static/chunks/0ggphu_7q.lq2.js\",\"/_next/static/chunks/03_2rtgfemjsh.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"ClientPageRoot\"]\n12:I[70036,[\"/_next/static/chunks/0ggphu_7q.lq2.js\",\"/_next/static/chunks/03_2rtgfemjsh.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"/_next/static/chunks/09cszil5f63hz.js\",\"/_next/static/chunks/17s9t0x9imwx..js\",\"/_next/static/chunks/0ar28b1.zpdad.js\",\"/_next/static/chunks/0qjycf8blvj8s.js\",\"/_next/static/chunks/09t2isllljna7.js\"],\"default\"]\n13:I[97367,[\"/_next/static/chunks/0ggphu_7q.lq2.js\",\"/_next/static/chunks/03_2rtgfemjsh.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"OutletBoundary\"]\n14:\"$Sreact.suspense\"\n17:I[97367,[\"/_next/static/chunks/0ggphu_7q.lq2.js\",\"/_next/static/chunks/03_2rtgfemjsh.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"ViewportBoundary\"]\n19:I[97367,[\"/_next/static/chunks/0ggphu_7q.lq2.js\",\"/_next/static/chunks/03_2rtgfemjsh.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"MetadataBoundary\"]\n1b:I[27201,[\"/_next/static/chunks/0ggphu_7q.lq2.js\",\"/_next/static/chunks/03_2rtgfemjsh.js\",\"/_next/static/chunks/0d3shmwh5_nmn.js\"],\"IconMark\"]\n:HL[\"/_next/static/chunks/0i3y7.w9j_iov.css\",\"style\"]\n:HL[\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css\",\"style\"]\n2:Tb31,"])</script><script>self.__next_f.push([1,"[{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"name\":\"CampusCrate\",\"url\":\"https://www.campuscrate.in\",\"logo\":\"https://www.campuscrate.in/images/logo.jpeg\",\"description\":\"CampusCrate brings opportunities, academic resources, college communities, learning hubs, roadmaps, profiles, and AI career tools into one platform for Indian B.Tech students.\",\"foundingLocation\":{\"@type\":\"Country\",\"name\":\"India\"},\"sameAs\":[\"https://x.com/CampusCrateind\",\"https://www.instagram.com/campuscrate.in?igsh=MmtxdmgwbnJrc2dj\",\"https://www.linkedin.com/company/campuscrate/\"]},{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"CampusCrate\",\"url\":\"https://www.campuscrate.in\",\"description\":\"CampusCrate brings opportunities, academic resources, college communities, learning hubs, roadmaps, profiles, and AI career tools into one platform for Indian B.Tech students.\",\"inLanguage\":\"en-IN\",\"potentialAction\":{\"@type\":\"SearchAction\",\"target\":\"https://www.campuscrate.in/events?search={search_term_string}\",\"query-input\":\"required name=search_term_string\"}},{\"@context\":\"https://schema.org\",\"@type\":\"WebApplication\",\"name\":\"CampusCrate\",\"url\":\"https://www.campuscrate.in\",\"applicationCategory\":\"EducationalApplication\",\"operatingSystem\":\"Web\",\"description\":\"CampusCrate brings opportunities, academic resources, college communities, learning hubs, roadmaps, profiles, and AI career tools into one platform for Indian B.Tech students.\",\"audience\":{\"@type\":\"EducationalAudience\",\"educationalRole\":\"student\",\"audienceType\":\"B.Tech and engineering students in India\"},\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"INR\"},\"featureList\":[\"Hackathons, internships, and competitions\",\"Notes, test papers, and cheatsheets\",\"Institute, department, and profession based societies\",\"DSA, frontend, backend, language, and data analytics learning hubs\",\"Career roadmaps, profiles, bookmarks, and AI tools\"]},{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What is CampusCrate?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"CampusCrate is a student operating system for B.Tech students in India, combining opportunities, academic resources, communities, learning hubs, and career tools in one platform.\"}},{\"@type\":\"Question\",\"name\":\"Who is CampusCrate built for?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"CampusCrate is built for Indian engineering and B.Tech students who need a structured place to discover opportunities, access college resources, join societies, learn technical skills, and build their career profile.\"}},{\"@type\":\"Question\",\"name\":\"What can students find on CampusCrate?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Students can find hackathons, internships, competitions, notes, test papers, cheatsheets, college communities, DSA and development learning tracks, roadmaps, profiles, and AI career tools.\"}}]}]"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"learn\",\"frontend\",\"nextjs-basics\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"concepts\",{\"children\":[\"frontend\",{\"children\":[[\"topicId\",\"nextjs-basics\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i3y7.w9j_iov.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/0ggphu_7q.lq2.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/03_2rtgfemjsh.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0d3shmwh5_nmn.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"data-scroll-behavior\":\"smooth\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"stylesheet\",\"href\":\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css\"}],[\"$\",\"link\",null,{\"rel\":\"canonical\",\"href\":\"https://www.campuscrate.in\"}],[\"$\",\"link\",null,{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\"}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$2\"}}],\"$L3\"]}],\"$L4\"]}]]}],{\"children\":[\"$L5\",{\"children\":[\"$L6\",{\"children\":[\"$L7\",{\"children\":[\"$L8\",{},null,false,null]},null,false,\"$@9\"]},null,false,\"$@9\"]},null,false,null]},null,false,null],\"$La\",false]],\"m\":\"$undefined\",\"G\":[\"$b\",[\"$Lc\"]],\"S\":false,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"66x6rf9n6ROMCX1bSeT4s\"}\n"])</script><script>self.__next_f.push([1,"3:[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem(\\\"campuscrate-theme\\\");if(t===\\\"light\\\"||t===\\\"dark\\\"){document.documentElement.setAttribute(\\\"data-theme\\\",t)}else if(window.matchMedia(\\\"(prefers-color-scheme:light)\\\").matches){document.documentElement.setAttribute(\\\"data-theme\\\",\\\"light\\\")}}catch(e){}})()\"}}]\n"])</script><script>self.__next_f.push([1,"4:[\"$\",\"body\",null,{\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]\n"])</script><script>self.__next_f.push([1,"5:[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/09cszil5f63hz.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"div\",null,{\"className\":\"concepts-wrapper\",\"children\":[[\"$\",\"$L10\",null,{}],[\"$\",\"div\",null,{\"style\":{\"position\":\"relative\",\"zIndex\":1},\"children\":[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]]}]\n6:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n7:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$Le\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Lf\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n8:[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L11\",null,{\"Component\":\"$12\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{\"topicId\":\"nextjs-basics\"},\"promises\":null}}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/17s9t0x9imwx..js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0ar28b1.zpdad.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/0qjycf8blvj8s.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/09t2isllljna7.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L13\",null,{\"children\":[\"$\",\"$14\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@15\"}]}]]}]\n16:[]\n9:\"$W16\"\na:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L17\",null,{\"children\":\"$L18\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L19\",null,{\"children\":[\"$\",\"$14\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1a\"}]}]}],null]}]\nc:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0i3y7.w9j_iov.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n18:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n15:null\n"])</script><script>self.__next_f.push([1,"1a:[[\"$\",\"title\",\"0\",{\"children\":\"Learn Code and Practice | CampusCrate\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Master DSA, frontend, backend, programming languages, SQL, data analytics, and web concepts through lessons, visualizers, and interactive games.\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"CampusCrate\"}],[\"$\",\"link\",\"3\",{\"rel\":\"author\",\"href\":\"https://www.campuscrate.in\"}],[\"$\",\"meta\",\"4\",{\"name\":\"author\",\"content\":\"CampusCrate\"}],[\"$\",\"link\",\"5\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"6\",{\"name\":\"keywords\",\"content\":\"CampusCrate,B.Tech student platform India,engineering student operating system,hackathons for engineering students,internships for B.Tech students,college notes,test papers,cheatsheets,student communities,career roadmaps,AI resume tools,DSA learning,engineering resources India,DSA learning,coding practice,web development games,programming languages\"}],[\"$\",\"meta\",\"7\",{\"name\":\"creator\",\"content\":\"CampusCrate\"}],[\"$\",\"meta\",\"8\",{\"name\":\"publisher\",\"content\":\"CampusCrate\"}],[\"$\",\"meta\",\"9\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"10\",{\"name\":\"googlebot\",\"content\":\"index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1\"}],[\"$\",\"meta\",\"11\",{\"name\":\"category\",\"content\":\"education\"}],[\"$\",\"link\",\"12\",{\"rel\":\"canonical\",\"href\":\"https://www.campuscrate.in/learn\"}],[\"$\",\"meta\",\"13\",{\"name\":\"google-site-verification\",\"content\":\"IuG9jnedhw-uBzcHOtOWyEtgUtc32lgPi0akQTJM5hk\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:title\",\"content\":\"Learn Code and Practice | CampusCrate\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:description\",\"content\":\"Master DSA, frontend, backend, programming languages, SQL, data analytics, and web concepts through lessons, visualizers, and interactive games.\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:url\",\"content\":\"https://www.campuscrate.in/learn\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:site_name\",\"content\":\"CampusCrate\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:image\",\"content\":\"https://www.campuscrate.in/images/logo.jpeg\"}],[\"$\",\"meta\",\"19\",{\"property\":\"og:image:width\",\"content\":\"1024\"}],[\"$\",\"meta\",\"20\",{\"property\":\"og:image:height\",\"content\":\"1024\"}],[\"$\",\"meta\",\"21\",{\"property\":\"og:image:alt\",\"content\":\"CampusCrate logo\"}],[\"$\",\"meta\",\"22\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:title\",\"content\":\"Learn Code and Practice | CampusCrate\"}],[\"$\",\"meta\",\"25\",{\"name\":\"twitter:description\",\"content\":\"Master DSA, frontend, backend, programming languages, SQL, data analytics, and web concepts through lessons, visualizers, and interactive games.\"}],[\"$\",\"meta\",\"26\",{\"name\":\"twitter:image\",\"content\":\"https://www.campuscrate.in/images/logo.jpeg\"}],[\"$\",\"link\",\"27\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0x3dzn~oxb6tn.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"28\",{\"rel\":\"icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"29\",{\"rel\":\"apple-touch-icon\",\"href\":\"/images/logo.jpeg\"}],[\"$\",\"$L1b\",\"30\",{}]]\n"])</script></body></html>