Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
🚀 SEO, Performance और Deploy  ·  Lesson 27

Metadata और SEO

Google को page से क्या चाहिए

🔒 google.com/search?q=nextjs+course+in+hindiedusite.in › courses › nextjsNext.js Course (6 weeks) | EduSiteReact + Next.js App Router, APIs, database, SEO and deployment. Fee ₹4,499…⭐ Course · ₹4,499 · Intermediate ← JSON-LD से
  • Title — नीला link; clicks के लिए सबसे ज़रूरी।
  • Description — उसके नीचे का grey text।
  • Canonical URL — कौन सा URL "असली" है।
  • Structured data — extra details (price, rating, FAQ)।

Static metadata

JSX – export const metadata
// app/courses/page.jsx  (EduSite)
export const metadata = {
  title: 'All Courses',
  description: 'Coding courses in C, Python, Web Development, Next.js, Android and MySQL with fees and duration.',
  alternates: { canonical: '/courses' },
}
<head> में बना HTML
<title>All Courses | EduSite</title> <meta name="description" content="Coding courses in C, Python, Web Development, …"> <link rel="canonical" href="https://edusite.in/courses">

Root layout में title templates

JSX – app/layout.jsx
// app/layout.jsx  (EduSite)
import { site } from '@/lib/site'

export const metadata = {
  metadataBase: new URL(site.url),          // makes relative URLs absolute
  title: {
    default: `${site.name} – ${site.tagline}`,   // used when a page sets no title
    template: `%s | ${site.name}`,                // "All Courses | EduSite"
  },
  description: site.description,
  alternates: { canonical: '/' },
  openGraph: { type: 'website', siteName: site.name, locale: 'en_IN' },
  twitter: { card: 'summary_large_image' },
  robots: { index: true, follow: true },
}

export const viewport = { themeColor: '#4f46e5' }
layout: template '%s | EduSite'page: title 'All Courses'<title>All Courses | EduSite
Pages सिर्फ़ अपना हिस्सा लिखते हैं

Dynamic pages के लिए generateMetadata

JSX – generateMetadata
// app/courses/[slug]/page.jsx  (EduSite)
export async function generateMetadata({ params }) {
  const { slug } = await params
  const course = getCourse(slug)
  if (!course) return { title: 'Course not found' }
  return {
    title: `${course.title} Course (${course.duration})`,
    description: `${course.summary} Fee ${rupees(course.fee)}. Level: ${course.level}.`,
    alternates: { canonical: `/courses/${course.slug}` },
    openGraph: { images: [course.image] },
  }
}
/courses/nextjs का बना HTML
<title>Next.js Course (6 weeks) | EduSite</title> <meta name="description" content="React + Next.js App Router, APIs, database, SEO and deployment. Fee ₹4,499. Level: Intermediate."> <link rel="canonical" href="https://edusite.in/courses/nextjs"> <meta property="og:image" content="https://edusite.in/images/nextjs.png">

Canonical URLs और metadataBase

एक ही page /courses, /courses?ref=fb और /courses?q= से खुल सकता है। Canonical tag Google को बताता है कौन सा index करना है ताकि ranking न बँटे। metadataBase एक बार set करने पर '/courses' जैसे छोटे paths लिख सकते हैं।

Open Graph और social images

जब कोई आपका link WhatsApp, Facebook या LinkedIn पर share करता है, तो OG image और title दिखते हैं। opengraph-image.jsx नाम की file वह image अपने आप बनाती है।

JSX – app/opengraph-image.jsx
// app/opengraph-image.jsx  (EduSite) — generates a 1200×630 PNG
import { ImageResponse } from 'next/og'
import { site } from '@/lib/site'

export const alt = `${site.name} – ${site.tagline}`
export const size = { width: 1200, height: 630 }
export const contentType = 'image/png'

export default function OpengraphImage() {
  return new ImageResponse(
    (
      <div style={{ width: '100%', height: '100%', display: 'flex', flexDirection: 'column',
                    justifyContent: 'center', padding: 80,
                    background: 'linear-gradient(135deg,#4f46e5,#0f172a)', color: '#fff' }}>
        <div style={{ fontSize: 88, fontWeight: 800 }}>{site.name}</div>
        <div style={{ fontSize: 44, marginTop: 16, opacity: 0.9 }}>{site.tagline}</div>
      </div>
    ),
    size
  )
}
9:41▮▮ 85%WhatsApp⋮🖼️OG image 1200×630EduSite – Learn codi…edusite.inPreview imageapp/opengraph-image.jsx सेआती है
Share preview

JSON-LD structured data

JSX – components/JsonLd.jsx + usage
// components/JsonLd.jsx  (EduSite)
export default function JsonLd({ data }) {
  return (
    <script type="application/ld+json"
      dangerouslySetInnerHTML={{ __html: JSON.stringify(data).replace(/</g, '\\u003c') }} />
  )
}

// app/courses/[slug]/page.jsx — Course schema
<JsonLd data={{
  '@context': 'https://schema.org',
  '@type': 'Course',
  name: course.title,
  description: course.summary,
  provider: { '@type': 'Organization', name: site.name, sameAs: site.url },
  offers: { '@type': 'Offer', price: course.fee, priceCurrency: 'INR', category: 'Paid' },
}} />

// app/blog/[slug]/page.jsx — BlogPosting schema
<JsonLd data={{
  '@context': 'https://schema.org',
  '@type': 'BlogPosting',
  headline: post.title,
  datePublished: post.date,
  author: { '@type': 'Organization', name: site.name },
}} />

Clicks लाने वाले titles लिखना

❌ कमज़ोर✅ मज़बूत
Next.jsNext.js Course (6 weeks) – Fee ₹4,499 | EduSite
Blog post 1How to Start Coding in 2026: 30-Day Plan for Beginners
ContactContact Us – Book a Free Demo Class

Main keyword पहले रखें, कोई number या फ़ायदा जोड़ें, ~60 characters से कम रखें, और ऐसा description लिखें जो click करने की वजह पर खत्म हो।

SEO कैसे check करें

  1. 1View page source (Ctrl+U) → , description, canonical check</span></li><li><b class="n">2</b><span>Google Rich Results Test → JSON-LD validate</span></li><li><b class="n">3</b><span>Lighthouse → SEO score 100 होना चाहिए</span></li><li><b class="n">4</b><span>Google Search Console → sitemap submit, impressions और CTR देखें</span></li></ol><figcaption>SEO checklist</figcaption></figure></section> <section> <h2 id="mistakes-hi">आम गलतियाँ</h2> <ul> <li>हर page पर एक ही title → Google उन्हें बदल देता है और CTR गिरता है।</li> <li><code>metadataBase</code> missing → OG image URLs relative और previews टूटे।</li> <li>page.jsx पर <code>'use client'</code> → metadata export काम करना बंद।</li> <li>Visible content से मेल न खाने वाला JSON-LD → manual penalty हो सकती है।</li> </ul> </section> <section> <h2 id="summary-hi">सारांश</h2> <ul> <li>Static pages के लिए <code>metadata</code>, dynamic के लिए <code>generateMetadata</code>।</li> <li>Root layout: <code>metadataBase</code> + title template + defaults।</li> <li>Canonical, OG image और JSON-LD से SEO पूरा होता है।</li> </ul> <div class="info-box tip"><div class="box-title">✅ Practice</div><p>हर page को unique title/description दीजिए, course pages में Course JSON-LD जोड़िए और एक URL Google के Rich Results Test में test कीजिए।</p></div> </section> <section class="ce-faq"><h2>अक्सर पूछे जाने वाले प्रश्न (FAQ)</h2><details class="ce-faq-item"><summary>क्या Client Component में metadata use कर सकते हैं?</summary><div class="ce-faq-a">नहीं। metadata export और generateMetadata सिर्फ़ Server Components (page.jsx और layout.jsx) में काम करते हैं। Pages को Server Components रखें और interactivity child components में ले जाएँ।</div></details><details class="ce-faq-item"><summary>Title और description कितने लंबे हों?</summary><div class="ce-faq-a">Title लगभग 60 characters से कम और description 140–160 characters के आसपास रखें ताकि Google search results में पूरा दिखाए।</div></details><details class="ce-faq-item"><summary>क्या ranking के लिए JSON-LD ज़रूरी है?</summary><div class="ce-faq-a">यह सीधा ranking factor नहीं है, पर Google को page समझने में मदद करता है और rich results (FAQ, course, breadcrumb) दिला सकता है, जिससे clicks बढ़ते हैं।</div></details></section></div> <div style="margin-top:32px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;"> <button class="mark-done-btn btn-primary">✓ पूरा हुआ</button> <a href="/tutorial/nextjs/?lang=hi" style="font-size:0.85rem;color:var(--text-muted);">← Next.js Tutorial</a> </div> <style> .ckf-share{margin:30px 0 8px;background:linear-gradient(135deg,#eafff1,#ffffff 70%);border:1px solid #cbe8d4;border-radius:18px;padding:20px;box-shadow:0 8px 22px rgba(22,163,74,.08);font-family:inherit} .ckf-share-head{display:flex;gap:12px;align-items:flex-start;margin-bottom:15px} .ckf-share-icon{font-size:1.6rem;line-height:1;flex-shrink:0} .ckf-share-title{font-weight:800;font-size:1.05rem;color:#111827;margin:0} .ckf-share-sub{font-size:.86rem;color:#5b6470;margin-top:3px;line-height:1.5} .ckf-share-actions{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px} .ckf-share-btn{display:inline-flex;align-items:center;gap:7px;border:1px solid #cbe8d4;background:#fff;color:#1f2937;font-weight:700;font-size:.88rem;padding:10px 16px;border-radius:999px;cursor:pointer;transition:all .18s ease;line-height:1;text-decoration:none} .ckf-share-btn:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(17,24,39,.12)} .ckf-share-btn.wa:hover{border-color:#25d366;color:#128c44;background:#eafff1} .ckf-share-btn.tg:hover{border-color:#229ed9;color:#176f9b;background:#e8f6fd} .ckf-share-btn.cp:hover{border-color:#b8901f;color:#b8901f;background:#fdf6e3} .ckf-share-btn.nt:hover{border-color:#16a34a;color:#15803d;background:#eafff1} .ckf-share-link{width:100%;box-sizing:border-box;border:1px dashed #cbe8d4;background:#fbfdfa;border-radius:12px;padding:11px 13px;font-family:monospace;font-size:.82rem;color:#6b7280;outline:none} .ckf-share-link:focus{border-color:#16a34a;background:#fff;color:#1f2937} @media(max-width:560px){.ckf-share-btn{flex:1 1 auto;justify-content:center}} </style> <div class="ckf-share" data-share-url="https://codingeasily.in/tutorial/nextjs/nextjs-metadata-seo/" data-share-en="Metadata & SEO" data-share-hi="Metadata और SEO"> <div class="ckf-share-head"> <span class="ckf-share-icon">🔗</span> <div> <p class="ckf-share-title english-content">Share this topic with a friend</p> <p class="ckf-share-title hindi-content">यह topic किसी दोस्त को भेजें</p> <p class="ckf-share-sub english-content">Found it useful? Send it to a classmate learning the same thing.</p> <p class="ckf-share-sub hindi-content">अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।</p> </div> </div> <div class="ckf-share-actions"> <button type="button" class="ckf-share-btn wa" data-net="whatsapp"><span>💬</span><span>WhatsApp</span></button> <button type="button" class="ckf-share-btn tg" data-net="telegram"><span>✈️</span><span>Telegram</span></button> <button type="button" class="ckf-share-btn cp" data-net="copy"><span>📋</span><span class="english-content">Copy Link</span><span class="hindi-content">Link Copy</span></button> <button type="button" class="ckf-share-btn nt" data-net="native"><span>📤</span><span class="english-content">More</span><span class="hindi-content">और</span></button> </div> <input type="text" class="ckf-share-link" readonly value="https://codingeasily.in/tutorial/nextjs/nextjs-metadata-seo/" aria-label="Topic link" onclick="this.select()"> </div> <script> (function(){ var box = document.currentScript.previousElementSibling; if(!box || !box.classList.contains('ckf-share')) { var boxes = document.getElementsByClassName('ckf-share'); box = boxes[boxes.length-1]; } if(!box) return; var url = box.getAttribute('data-share-url') || location.href; function isHi(){ return document.body.classList.contains('body-hi') || (document.querySelector('.hindi-content') && getComputedStyle(document.querySelector('.hindi-content')).display !== 'none'); } function title(){ return isHi() ? (box.getAttribute('data-share-hi')||'') : (box.getAttribute('data-share-en')||''); } function msg(){ return isHi() ? ('यह free tutorial देखो CodingEasily पर: ' + title() + '\n' + url) : ('Check out this free tutorial on CodingEasily: ' + title() + '\n' + url); } function flash(btn){ var s=btn.querySelector('span:last-child'); if(!s)return; var o=s.textContent; s.textContent='✓ Copied'; setTimeout(function(){s.textContent=o;},1500); } var btns = box.querySelectorAll('.ckf-share-btn'); for(var i=0;i<btns.length;i++){ btns[i].addEventListener('click', function(){ var net=this.getAttribute('data-net'); var self=this; if(net==='whatsapp'){ window.open('https://wa.me/?text='+encodeURIComponent(msg()),'_blank'); } else if(net==='telegram'){ window.open('https://t.me/share/url?url='+encodeURIComponent(url)+'&text='+encodeURIComponent(title()),'_blank'); } else if(net==='copy'){ if(navigator.clipboard){navigator.clipboard.writeText(url).then(function(){flash(self);});} else {var t=document.createElement('textarea');t.value=url;document.body.appendChild(t);t.select();try{document.execCommand('copy');flash(self);}catch(e){}document.body.removeChild(t);} } else if(net==='native'){ if(navigator.share){navigator.share({title:title(),text:title(),url:url});} else if(navigator.clipboard){navigator.clipboard.writeText(url).then(function(){flash(self);});} } }); } })(); </script> <nav class="topic-nav"> <a href="/tutorial/nextjs/nextjs-env-config/?lang=hi" class="topic-nav-btn"><span style="font-size:1.2rem;">←</span> <div><div class="tnb-label">पिछला</div><div class="tnb-title">Environment Variables और next.config</div></div></a> <a href="/tutorial/nextjs/nextjs-sitemap-robots/?lang=hi" class="topic-nav-btn" style="text-align:right;margin-left:auto;"> <div><div class="tnb-label">अगला Lesson</div><div class="tnb-title">sitemap.xml, robots.txt और JSON-LD</div></div><span style="font-size:1.2rem;">→</span></a> </nav> </main> <script> document.querySelectorAll('.lsi-btn[data-lang]').forEach(function (b) { b.addEventListener('click', function () { var u = new URL(window.location.href); if (this.dataset.lang === 'hi') u.searchParams.set('lang', 'hi'); else u.searchParams.delete('lang'); window.location.assign(u.toString()); }); }); </script> <aside class="tutorial-right"> <div class="right-section"> <div class="right-title">इस Page पर</div> <ul class="toc-list"><li><a href="#why-hi">Google को page से क्या चाहिए</a></li><li><a href="#static-hi">Static metadata</a></li><li><a href="#template-hi">Root layout में title templates</a></li><li><a href="#dynamic-hi">Dynamic pages के लिए generateMetadata</a></li><li><a href="#canonical-hi">Canonical URLs और metadataBase</a></li><li><a href="#og-hi">Open Graph और social images</a></li><li><a href="#jsonld-hi">JSON-LD structured data</a></li><li><a href="#ctr-hi">Clicks लाने वाले titles लिखना</a></li><li><a href="#check-hi">SEO कैसे check करें</a></li><li><a href="#mistakes-hi">आम गलतियाँ</a></li><li><a href="#summary-hi">सारांश</a></li></ul> </div> <div class="right-section"> <div class="right-title">Project Code</div> <a href="/download/nextjs-edusite-project/" class="ut-side" style="display:flex;gap:9px;align-items:center;padding:10px;border-radius:12px;border:1.5px solid #c7d2fe;text-decoration:none;color:#1e293b;background:#f5f7ff"> <span aria-hidden="true">⬇️</span><span><b style="color:#4338ca">EduSite (Next.js) Download</b><small style="display:block;color:#475569;font-size:.74rem">पूरा source code (ZIP) · मुफ़्त login</small></span> </a> </div> <div class="right-section"> <div class="right-title">मुफ़्त टूल्स</div> <a class="ut-side" href="https://upyogitools.in/" target="_blank" rel="noopener" aria-label="UpyogiTools.in"> <span aria-hidden="true">🧰</span> <span><b>UpyogiTools.in</b><small>मुफ़्त PDF/फ़ोटो टूल्स →</small></span> </a> </div> </aside> </div> </main> <style> .ce-ns{width:min(980px,calc(100% - 28px));margin:26px auto 0;display:flex;align-items:center;gap:16px;text-decoration:none;color:#fff;background:linear-gradient(135deg,#1d4ed8,#0ea5e9);border-radius:20px;padding:18px 20px;box-shadow:0 12px 28px rgba(29,78,216,.25)} .ce-ns:hover{filter:brightness(1.05)} .ce-ns:focus-visible{outline:3px solid #f97316;outline-offset:3px} .ce-ns .i{font-size:1.9rem;line-height:1} .ce-ns .t{flex:1;min-width:0} .ce-ns .k{font:800 .72rem/1 system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase;opacity:.9} .ce-ns .h{display:block;font-size:1.15rem;font-weight:900;margin:5px 0 8px;line-height:1.3} .ce-ns .bar{height:6px;border-radius:99px;background:rgba(255,255,255,.3);overflow:hidden} .ce-ns .bar b{display:block;height:100%;background:#fde68a;border-radius:99px} .ce-ns .s{font-size:.8rem;opacity:.9;margin-top:5px;display:block} .ce-ns .go{font-weight:900;background:#fff;color:#1d4ed8;border-radius:999px;padding:9px 14px;white-space:nowrap} @media(max-width:560px){.ce-ns{flex-wrap:wrap}.ce-ns .go{width:100%;text-align:center}} </style> <a class="ce-ns" href="/tutorial/nextjs/nextjs-sitemap-robots/?lang=hi"> <span class="i" aria-hidden="true">👉</span> <span class="t"><span class="k">अगला topic</span><span class="h">sitemap.xml, robots.txt और JSON-LD</span> <span class="bar" aria-hidden="true"><b style="width:73%"></b></span> <span class="s">आपकी प्रगति: 27 / 37 (73%) · Lesson 28 / 37</span></span> <span class="go">आगे बढ़ें →</span> </a> <style> .ce-fb{width:min(980px,calc(100% - 28px));margin:26px auto 8px;background:#fff;border:1px solid #e2e8f0;border-radius:18px;padding:18px 20px;box-shadow:0 6px 18px rgba(15,23,42,.05);font-size:.95rem;color:#1e293b} .ce-fb h2{margin:0;font-size:1.15rem;color:#14213d}.ce-fb .sub{margin:4px 0 12px;color:#64748b;font-size:.9rem} .ce-fb-votes{display:flex;flex-wrap:wrap;gap:10px;align-items:center} .ce-fb-v{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;border:1.5px solid #cbd5e1;background:#f8fafc;font-weight:800;cursor:pointer;font-size:.95rem;color:#1e293b;min-height:44px} .ce-fb-v:hover{border-color:#16a34a}.ce-fb-v[aria-pressed=true]{background:#ecfdf5;border-color:#16a34a;color:#14532d} .ce-fb-v.dn[aria-pressed=true]{background:#fef2f2;border-color:#ef4444;color:#7f1d1d} .ce-fb-v b{font-variant-numeric:tabular-nums;color:#475569;font-weight:700} .ce-fb-st{font-size:.88rem;color:#15803d;font-weight:700;min-height:1.2em} .ce-fb details{margin-top:12px}.ce-fb summary{cursor:pointer;font-weight:800;color:#1d4ed8;padding:6px 0} .ce-fb form{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-top:10px} .ce-fb label{display:block;font-weight:700;font-size:.82rem;margin-bottom:4px;color:#334155} .ce-fb input,.ce-fb select,.ce-fb textarea{width:100%;box-sizing:border-box;padding:10px 12px;border:1.5px solid #cbd5e1;border-radius:10px;font:inherit;background:#f8fafc;color:#0f172a} .ce-fb textarea{min-height:92px;resize:vertical}.ce-fb .full{grid-column:1/-1} .ce-fb .hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden} .ce-fb button.send{justify-self:start;padding:11px 20px;border:0;border-radius:999px;background:linear-gradient(135deg,#16a34a,#15803d);color:#fff;font-weight:800;cursor:pointer;min-height:44px} .ce-fb .note{font-size:.78rem;color:#64748b;margin:0} .ce-fb-list{margin-top:14px;border-top:1px dashed #cbd5e1;padding-top:10px} .ce-fb-list h3{font-size:.95rem;margin:4px 0 8px;color:#0f766e} .ce-fb-r{padding:10px 12px;border-radius:12px;background:#f8fafc;border:1px solid #e2e8f0;margin-bottom:8px} .ce-fb-r .who{font-weight:800;font-size:.86rem;color:#14213d}.ce-fb-r .who small{color:#64748b;font-weight:600} .ce-fb-r p{margin:4px 0 0;color:#334155;line-height:1.55;white-space:pre-line} @media(max-width:640px){.ce-fb form{grid-template-columns:1fr}} </style> <section class="ce-fb" id="ce-feedback" aria-labelledby="ce-fb-h" data-cfg="{"api":"\/api\/feedback.php","page":"\/tutorial\/nextjs\/nextjs-metadata-seo\/","lang":"hi","t":"1793185493.0759b5bba6d2346b72258214d0202fd8","msg":{"thanks":"\u0927\u0928\u094d\u092f\u0935\u093e\u0926! \u0906\u092a\u0915\u093e vote \u0926\u0930\u094d\u091c \u0939\u094b \u0917\u092f\u093e\u0964","ok":"\u0927\u0928\u094d\u092f\u0935\u093e\u0926! \u0906\u092a\u0915\u093e review \u092e\u093f\u0932 \u0917\u092f\u093e \u2013 \u091c\u093e\u0901\u091a \u0915\u0947 \u092c\u093e\u0926 \u092f\u0939\u093e\u0901 \u0926\u093f\u0916\u0947\u0917\u093e\u0964","err":"\u0915\u0941\u091b \u0917\u0921\u093c\u092c\u0921\u093c \u0939\u0941\u0908, \u0925\u094b\u0921\u093c\u0940 \u0926\u0947\u0930 \u092c\u093e\u0926 \u092b\u093f\u0930 \u0915\u094b\u0936\u093f\u0936 \u0915\u0930\u0947\u0902\u0964","none":"\u0905\u092d\u0940 \u0915\u094b\u0908 review \u0928\u0939\u0940\u0902 \u2013 \u092a\u0939\u0932\u093e review \u0906\u092a \u0932\u093f\u0916\u0947\u0902!","from":"\u0938\u0947"},"learners":{"student":"Student (school\/college)","teacher":"Teacher","job":"Job \/ working","self":"\u0916\u093c\u0941\u0926 \u0938\u0947 \u0938\u0940\u0916 \u0930\u0939\u0947 \u0939\u0948\u0902","other":"\u0926\u0942\u0938\u0930\u093e"}}"> <h2 id="ce-fb-h">यह lesson कैसा लगा?</h2> <p class="sub">आपकी राय से हम content और बेहतर बनाते हैं।</p> <div class="ce-fb-votes"> <button type="button" class="ce-fb-v up" data-v="1" aria-pressed="false">👍 पसंद आया <b data-n="up"></b></button> <button type="button" class="ce-fb-v dn" data-v="-1" aria-pressed="false">👎 पसंद नहीं आया <b data-n="dn"></b></button> <span class="ce-fb-st" role="status" aria-live="polite"></span> </div> <details> <summary>अपना review और सुझाव लिखें (वैकल्पिक)</summary> <form novalidate> <div><label for="ce-fb-name">आपका नाम *</label><input id="ce-fb-name" name="fb_name" maxlength="60" required autocomplete="name"></div> <div><label for="ce-fb-city">शहर / राज्य</label><input id="ce-fb-city" name="city" maxlength="60" autocomplete="address-level2"></div> <div><label for="ce-fb-who">आप कौन हैं?</label><select id="ce-fb-who" name="learner"><option value="">चुनें</option><option value="student">Student (school/college)</option><option value="teacher">Teacher</option><option value="job">Job / working</option><option value="self">ख़ुद से सीख रहे हैं</option><option value="other">दूसरा</option></select></div> <div class="full"><label for="ce-fb-msg">Review या सुझाव *</label><textarea id="ce-fb-msg" name="message" maxlength="1000" required placeholder="क्या अच्छा लगा, क्या समझ नहीं आया, आगे कौन सा topic चाहिए…"></textarea></div> <div class="hp" aria-hidden="true"><label>Website<input name="website" tabindex="-1" autocomplete="off"></label></div> <p class="note full">Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।</p> <button type="submit" class="send">Review भेजें</button> </form> </details> <div class="ce-fb-list" hidden><h3>पढ़ने वालों के reviews</h3><div class="ce-fb-items"></div></div> </section> <script> (function(){var box=document.getElementById('ce-feedback');if(!box||box.__fb)return;box.__fb=1; var C;try{C=JSON.parse(box.getAttribute('data-cfg'))}catch(e){return} var st=box.querySelector('.ce-fb-st'),key='ce_fb_'+C.page,loaded=false; function get(k){try{return localStorage.getItem(k)}catch(e){return null}}function set(k,v){try{localStorage.setItem(k,v)}catch(e){}} function mark(v){box.querySelectorAll('.ce-fb-v').forEach(function(b){b.setAttribute('aria-pressed',String(b.getAttribute('data-v'))===String(v))})} function esc(s){var d=document.createElement('div');d.textContent=s==null?'':String(s);return d.innerHTML} function counts(d){box.querySelector('[data-n=up]').textContent=d.up?'('+d.up+')':'';box.querySelector('[data-n=dn]').textContent=d.down?'('+d.down+')':''} function list(d){var w=box.querySelector('.ce-fb-list'),it=box.querySelector('.ce-fb-items');w.hidden=false; if(!d.reviews||!d.reviews.length){it.innerHTML='<p class="note">'+esc(C.msg.none)+'</p>';return} it.innerHTML=d.reviews.map(function(r){var who=esc(r.name)+(r.city?' <small>'+(C.lang==='hi'?esc(r.city)+' '+esc(C.msg.from):esc(C.msg.from)+' '+esc(r.city))+'</small>':'')+(r.learner&&C.learners[r.learner]?' <small>· '+esc(C.learners[r.learner])+'</small>':''); return '<div class="ce-fb-r"><div class="who">'+(r.vote>0?'👍 ':r.vote<0?'👎 ':'')+who+'</div><p>'+esc(r.message)+'</p></div>'}).join('')} function load(){if(loaded)return;loaded=true;fetch(C.api+'?p='+encodeURIComponent(C.page),{credentials:'same-origin'}).then(function(r){return r.json()}).then(function(d){if(d&&d.ok){counts(d);list(d)}}).catch(function(){})} function post(data,cb){data.p=C.page;data.t=C.t;data.lang=C.lang;var b=new URLSearchParams();for(var k in data)b.append(k,data[k]); fetch(C.api,{method:'POST',body:b,credentials:'same-origin',headers:{'X-Requested-With':'fetch'}}).then(function(r){return r.json()}).then(cb).catch(function(){cb({ok:false})})} var prev=get(key);if(prev)mark(prev); box.querySelectorAll('.ce-fb-v').forEach(function(b){b.addEventListener('click',function(){var v=b.getAttribute('data-v');mark(v);set(key,v); post({action:'vote',vote:v},function(d){st.style.color=d.ok?'#15803d':'#b91c1c';st.textContent=d.ok?C.msg.thanks:(d.msg||C.msg.err);if(d.ok)counts(d)})})}); var f=box.querySelector('form');f.addEventListener('submit',function(e){e.preventDefault();var E=f.elements;if(!E.fb_name.value.trim()||!E.message.value.trim()){(E.fb_name.value.trim()?E.message:E.fb_name).focus();return} var btn=f.querySelector('.send');btn.disabled=true; post({action:'review',name:E.fb_name.value,city:E.city.value,learner:E.learner.value,message:E.message.value,website:E.website.value,vote:get(key)||0},function(d){btn.disabled=false; var m=document.createElement('p');m.className='note full';m.style.cssText='font-weight:700;color:'+(d.ok?'#15803d':'#b91c1c');m.textContent=d.ok?C.msg.ok:(d.msg||C.msg.err); var o=f.querySelector('.ce-fb-out');if(o)o.remove();m.classList.add('ce-fb-out');f.appendChild(m);if(d.ok)f.reset()})}); if('IntersectionObserver' in window){var io=new IntersectionObserver(function(es){if(es[0].isIntersecting){load();io.disconnect()}},{rootMargin:'300px'});io.observe(box)}else load(); })(); </script> <section class="cev-strip" aria-label="CodingEasily YouTube"><div><span class="cev-kicker">▶ CodingEasily on YouTube</span><h2>Video से सीखें – आसान Hindi में</h2><p>चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT</p><a class="cev-sub" href="https://youtube.com/@codingeasily?sub_confirmation=1" target="_blank" rel="noopener">▶ Channel subscribe करें</a></div><div><style> .cev{position:relative;width:100%;aspect-ratio:16/9;background:#0f172a;border-radius:16px;overflow:hidden;box-shadow:0 10px 26px rgba(15,23,42,.18)} .cev-btn{all:unset;box-sizing:border-box;position:absolute;inset:0;cursor:pointer;display:block} .cev-btn img{width:100%;height:100%;object-fit:cover;display:block;color:transparent;transition:transform .25s} .cev-btn:hover img{transform:scale(1.03)} .cev-btn:focus-visible{outline:3px solid #f97316;outline-offset:-3px} .cev-play{position:absolute;left:50%;top:50%;width:68px;height:48px;transform:translate(-50%,-50%);filter:drop-shadow(0 4px 10px rgba(0,0,0,.35))} .cev-cap{position:absolute;left:0;right:0;bottom:0;padding:22px 14px 10px;background:linear-gradient(transparent,rgba(0,0,0,.72));color:#fff;font:700 .92rem/1.35 system-ui,-apple-system,Segoe UI,Roboto,sans-serif} .cev iframe{position:absolute;inset:0;width:100%;height:100%;border:0} .cev-strip{width:min(1180px,calc(100% - 28px));margin:28px auto 22px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,340px);gap:22px;align-items:center;background:linear-gradient(135deg,#eff6ff,#fff7ed);border:1px solid #dbeafe;border-radius:22px;padding:20px 22px} .cev-strip h2,.cev-lesson h2{margin:0 0 6px;font-size:1.18rem;line-height:1.3;color:#14213d} .cev-strip p,.cev-lesson p{margin:0 0 10px;color:#475569;font-size:.95rem} .cev-kicker{display:inline-block;font:800 .72rem/1 system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#dc2626;margin-bottom:8px} .cev-sub{display:inline-flex;align-items:center;gap:6px;background:#dc2626;color:#fff!important;text-decoration:none;font-weight:800;font-size:.88rem;padding:8px 14px;border-radius:999px} .cev-sub:hover{background:#b91c1c} .cev-lesson{width:min(980px,calc(100% - 28px));margin:26px auto;background:#fff;border:1px solid #e2e8f0;border-radius:22px;padding:20px} .cev-lesson .cev{margin-top:12px} @media(max-width:760px){.cev-strip{grid-template-columns:1fr;padding:16px}} @media (prefers-reduced-motion:reduce){.cev-btn img{transition:none}} </style> <script> (function(){ function play(btn){ var box=btn.parentNode, id=box.getAttribute('data-id'), t=box.getAttribute('data-title')||'YouTube video'; var f=document.createElement('iframe'); f.src='https://www.youtube-nocookie.com/embed/'+id+'?autoplay=1&rel=0&modestbranding=1'; f.title=t; f.allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share'; f.setAttribute('allowfullscreen',''); f.referrerPolicy='strict-origin-when-cross-origin'; box.innerHTML=''; box.appendChild(f); f.focus(); } document.addEventListener('click',function(e){ var b=e.target.closest ? e.target.closest('.cev-btn') : null; if(b){ e.preventDefault(); play(b); } }); /* warm up the connection only when someone shows interest (hover/focus) */ var warmed=false; function warm(e){ if(warmed||!e.target.closest||!e.target.closest('.cev-btn')) return; warmed=true; ['https://www.youtube-nocookie.com','https://www.google.com'].forEach(function(u){var l=document.createElement('link');l.rel='preconnect';l.href=u;document.head.appendChild(l);}); } document.addEventListener('pointerover',warm,{passive:true}); document.addEventListener('focusin',warm); })(); </script> <div class="cev" data-id="QToqM1ooF_A" data-title="RDBMS भाग 3 – Class XI Commerce IT"><a class="cev-btn" href="https://www.youtube.com/watch?v=QToqM1ooF_A" aria-label="Play video: RDBMS भाग 3 – Class XI Commerce IT"><img src="https://i.ytimg.com/vi/QToqM1ooF_A/hqdefault.jpg" width="480" height="360" alt="RDBMS भाग 3 – Class XI Commerce IT – video thumbnail" loading="lazy" decoding="async"><svg class="cev-play" viewBox="0 0 68 48" aria-hidden="true"><path d="M66.5 7.7a8.5 8.5 0 0 0-6-6C55.3.3 34 .3 34 .3S12.7.3 7.5 1.7a8.5 8.5 0 0 0-6 6C.1 12.9.1 24 .1 24s0 11.1 1.4 16.3a8.5 8.5 0 0 0 6 6C12.7 47.7 34 47.7 34 47.7s21.3 0 26.5-1.4a8.5 8.5 0 0 0 6-6C67.9 35.1 67.9 24 67.9 24s0-11.1-1.4-16.3z" fill="#f00"/><path d="M45 24 27 14v20z" fill="#fff"/></svg><span class="cev-cap">RDBMS भाग 3 – Class XI Commerce IT</span></a></div></div></section><aside class="ut-band" aria-label="UpyogiTools.in"> <a class="ut-rib" href="https://upyogitools.in/" target="_blank" rel="noopener"> <span class="ut-ic" aria-hidden="true">🧰</span> <span class="ut-txt"><span class="ut-new">मुफ़्त</span><b>UpyogiTools.in</b> — 40+ PDF और फ़ोटो टूल्स <small>परीक्षा फ़ोटो, PDF जोड़ें/छोटा करें · बिना साइन-अप · फ़ाइल आपके फ़ोन में ही</small></span> <span class="ut-chips" aria-hidden="true"><span class="ut-chip">📸 परीक्षा फ़ोटो किट</span><span class="ut-chip">🗜️ पीडीएफ़ छोटा करें</span></span> <span class="ut-go">खोलें →</span> </a> </aside> <footer class="site-footer"> <div class="footer-inner"> <div class="footer-brand"> <a href="/" class="logo footer-logo"> <img src="/assets/img/logo-full.webp" width="150" height="128" alt="CodingEasily – Learn, Practice, Grow" loading="lazy" decoding="async"> </a> <p class="english-content">Programming tutorials in Hindi and English. Learn with simple examples, output, practice and projects.</p> <p class="hindi-content">Hindi और English में programming tutorials। Simple examples, output, practice और projects के साथ सीखें।</p> </div> <div class="footer-links"> <div> <h4>Tutorials</h4> <a href="/tutorial/c/">C Language</a> <a href="/tutorial/php/">PHP</a> <a href="/tutorial/mysql/">MySQL + DBMS + RDBMS</a> <a href="/tutorial/python/">Python + DS + ML + AI</a> <a href="/tutorial/java/">Java</a> <a href="/tutorial/cpp/">C++ Complete</a> <a href="/tutorial/nextjs/">Next.js</a> <a href="/tutorial/android/">Android (Kotlin)</a> <a href="/tutorial/android-ecommerce/">E-commerce App</a> <a href="/tutorial/class-11-cs/">Class 11 CS</a><a href="/tutorial/class-11-ip/">Class 11 IP</a><a href="/tutorial/class-12-cs/">Class 12 CS</a><a href="/tutorial/class-12-ip/">Class 12 IP</a> <a href="/tutorial/data-science/">Data Science (60 Days)</a><a href="/tutorial/html/">HTML (15 Days)</a><a href="/tutorial/css/">CSS (20 Days)</a><a href="/tutorial/javascript/">JavaScript (30 Days)</a><a href="/tutorial/tally-prime/">Tally Prime + Accounting (30 Days)</a><a href="/tutorial/seo/">SEO in 10 Days</a> <a href="/tutorial/digital-tips/">Digital Tips</a> <a href="/programs/">Simple Programs Lab</a> <a href="/tutorial/cyber-security/">Cyber Safety India</a> </div> <div> <h4>Important Links</h4> <a href="/about/">About</a> <a href="/contact/">Contact</a> <a href="/privacy-policy/">Privacy Policy</a> <a href="/disclaimer/">Disclaimer</a> <a href="/terms/">Terms of Use</a> <a href="/editorial-policy/">Editorial Policy</a> <a href="/author/">Author / Review Info</a> <a href="/sitemap.xml">XML Sitemap</a> <a href="https://fileimagecalhelp.codingeasily.in/" rel="noopener">Free Image & PDF Tools</a> <a href="https://upyogitools.in/" target="_blank" rel="noopener" title="Free Online Utility Tools">UpyogiTools — Free Online Tools</a> </div> <div> <h4>For Students</h4> <a href="/tutorial/c/introduction/">Start C Language</a> <a href="/tutorial/c/c-programs-50/">50 C Programs</a> <a href="/tutorial/c/c-quiz/">C MCQ Quiz</a> <a href="/tutorial/python/python-introduction/">Start Python + AI</a> <a href="/tutorial/python/python-quiz/">Python + AI Quiz</a> <a href="/learning-roadmap/">Learning Roadmap</a> <a href="/notes/class-10-it-402/">Class X IT (402) Notes</a> <a href="/notes/">All CBSE Notes</a> <a href="/blog/">Programming Blog</a> <a href="/download/">Free Downloads</a> </div> </div> </div> <div class="footer-community"> <div class="fc-inner"> <div class="fc-text"> <strong class="english-content">Join the CodingEasily community</strong> <strong class="hindi-content">CodingEasily community से जुड़िए</strong> <span class="english-content">Get new tutorials, notes and exam tips — free. Follow us everywhere:</span> <span class="hindi-content">नए tutorials, notes और exam tips पाइए — बिल्कुल मुफ़्त। हमें हर जगह follow कीजिए:</span> </div> <div class="fc-actions"> <a class="fc-btn fc-yt" href="https://youtube.com/@codingeasily" target="_blank" rel="noopener nofollow" aria-label="Subscribe to CodingEasily on YouTube" title="YouTube"> <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor" aria-hidden="true"><path d="M23 7.1a3 3 0 0 0-2.1-2.1C19 4.5 12 4.5 12 4.5s-7 0-8.9.5A3 3 0 0 0 1 7.1 31 31 0 0 0 .5 12 31 31 0 0 0 1 16.9 3 3 0 0 0 3.1 19c1.9.5 8.9.5 8.9.5s7 0 8.9-.5a3 3 0 0 0 2.1-2.1 31 31 0 0 0 .5-4.9 31 31 0 0 0-.5-4.9zM9.8 15.3V8.7l5.7 3.3z"/></svg> <span>YouTube</span></a> <a class="fc-btn fc-fb" href="https://facebook.com/codingeasily" target="_blank" rel="noopener nofollow" aria-label="Follow CodingEasily on Facebook" title="Facebook"> <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor" aria-hidden="true"><path d="M22 12a10 10 0 1 0-11.6 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.4v7A10 10 0 0 0 22 12z"/></svg> <span>Facebook</span></a> <a class="fc-btn fc-ig" href="https://instagram.com/codingeasily" target="_blank" rel="noopener nofollow" aria-label="Follow CodingEasily on Instagram" title="Instagram"> <svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor" aria-hidden="true"><path d="M12 2.2c3.2 0 3.6 0 4.9.1 1.2.1 1.8.3 2.2.4.6.2 1 .5 1.4.9.4.4.7.8.9 1.4.2.4.4 1 .4 2.2.1 1.3.1 1.7.1 4.9s0 3.6-.1 4.9c-.1 1.2-.3 1.8-.4 2.2-.2.6-.5 1-.9 1.4-.4.4-.8.7-1.4.9-.4.2-1 .4-2.2.4-1.3.1-1.7.1-4.9.1s-3.6 0-4.9-.1c-1.2-.1-1.8-.3-2.2-.4-.6-.2-1-.5-1.4-.9-.4-.4-.7-.8-.9-1.4-.2-.4-.4-1-.4-2.2C2.2 15.6 2.2 15.2 2.2 12s0-3.6.1-4.9c.1-1.2.3-1.8.4-2.2.2-.6.5-1 .9-1.4.4-.4.8-.7 1.4-.9.4-.2 1-.4 2.2-.4C8.4 2.2 8.8 2.2 12 2.2zm0 1.8c-3.1 0-3.5 0-4.7.1-1.1.1-1.7.2-2.1.4-.5.2-.9.4-1.3.8-.4.4-.6.8-.8 1.3-.2.4-.3 1-.4 2.1-.1 1.2-.1 1.6-.1 4.7s0 3.5.1 4.7c.1 1.1.2 1.7.4 2.1.2.5.4.9.8 1.3.4.4.8.6 1.3.8.4.2 1 .3 2.1.4 1.2.1 1.6.1 4.7.1s3.5 0 4.7-.1c1.1-.1 1.7-.2 2.1-.4.5-.2.9-.4 1.3-.8.4-.4.6-.8.8-1.3.2-.4.3-1 .4-2.1.1-1.2.1-1.6.1-4.7s0-3.5-.1-4.7c-.1-1.1-.2-1.7-.4-2.1-.2-.5-.4-.9-.8-1.3-.4-.4-.8-.6-1.3-.8-.4-.2-1-.3-2.1-.4-1.2-.1-1.6-.1-4.7-.1zm0 3.1a4.9 4.9 0 1 1 0 9.8 4.9 4.9 0 0 1 0-9.8zm0 8a3.1 3.1 0 1 0 0-6.2 3.1 3.1 0 0 0 0 6.2zm6.3-8.2a1.1 1.1 0 1 1-2.3 0 1.1 1.1 0 0 1 2.3 0z"/></svg> <span>Instagram</span></a> </div> </div> </div> <div class="footer-note english-content">All trademarks, logos, brand names, product names and service names belong to their respective owners and are used only for educational and reference purposes.</div> <div class="footer-note hindi-content">सभी trademarks, logos, brand names, product names और service names उनके संबंधित मालिकों की संपत्ति हैं और केवल educational तथा reference purpose के लिए उपयोग किए गए हैं।</div> <div class="footer-bottom">© 2026 CodingEasily.in · All rights reserved · Made for learners in India</div> </footer> <script> /* Remember Hindi/English choice across all tutorial pages */ (function () { var KEY = 'ce_lang'; function getPref() { try { return localStorage.getItem(KEY); } catch (e) { return null; } } function setPref(v) { try { localStorage.setItem(KEY, v); } catch (e) {} } var url = new URL(window.location.href); var urlLang = url.searchParams.get('lang'); var hasSwitch = document.querySelector('.lsi-btn[data-lang]'); if (urlLang === 'hi') { setPref('hi'); } else if (hasSwitch && getPref() === 'hi' && document.referrer.indexOf(location.host) !== -1) { url.searchParams.set('lang', 'hi'); window.location.replace(url.toString()); return; } document.addEventListener('click', function (e) { var b = e.target.closest ? e.target.closest('.lsi-btn[data-lang]') : null; if (b) setPref(b.getAttribute('data-lang') === 'hi' ? 'hi' : 'en'); }, true); if (urlLang === 'hi') { var links = document.querySelectorAll('a[href^="/tutorial/"]'); for (var i = 0; i < links.length; i++) { var a = links[i], h = a.getAttribute('href'); if (h.indexOf('lang=') !== -1 || h.indexOf('#') === 0) continue; var hash = '', k = h.indexOf('#'); if (k !== -1) { hash = h.slice(k); h = h.slice(0, k); } a.setAttribute('href', h + (h.indexOf('?') === -1 ? '?' : '&') + 'lang=hi' + hash); } } })(); </script> <script defer src="/assets/js/main.js?v=4.1"></script> <script defer src="/assets/js/ce-program-pack.js?v=1"></script> <script defer src="/assets/js/ce-chatbot.js?v=9"></script> </body> </html>