Drafted all masterclasses except 'Masterclass on Answer Writing' (Ethics, PSIR, Essay) by adding an isDraft property in masterclasses data and updating routes to exclude draft sessions from the listing page (/masterclass) and un-publish their dedicated detail landing pages until needed again.
Scope
- src/data/masterclasses.ts
- src/app/masterclass/[slug]/page.tsx
Added 4 new PDF study materials ('The Carbon Books Are Wrong', 'NFHS-6 Analysis', 'Green Colonialism or Sustainable Progress', and 'The Indian Monsoon') to the study materials library.
Scope
- src/data/study-materials.ts
- public/docs/study-materials/THE CARBON BOOKS ARE WRONG, AND INDIAN FARMERS ARE PAYING THE PRICE (final pdf).pdf
- public/docs/study-materials/NATIONAL FAMILY HEALTH SURVEY -6 (NFHS-6)final pdf.pdf
- public/docs/study-materials/Green Colonialism or Sustainable Progress (final pdf).pdf
- public/docs/study-materials/indian monsoon watermark final pdf.pdf
Added 'The Delimitation Debate: Federalism, Representation & Constitutional Challenges' PDF study material to the study materials library.
Scope
- src/data/study-materials.ts
- public/docs/study-materials/the delimitation watermark final pdf.pdf
Added 'The Feminization of Climate Vulnerability' PDF study material to the study materials library.
Scope
- src/data/study-materials.ts
- public/docs/study-materials/The_Feminization_of_Climate_Vulnerability_branded.pdf
Added 'Energy Subsidies, Fiscal Stress and India's Development Challenge' PDF study material to the study materials library.
Scope
- src/data/study-materials.ts
- public/docs/study-materials/Energy_Subsidies__Fiscal_Stress_and_India_s_Development_Challenge_branded.pdf
Added strict cache-bypass directives to .htaccess files to prevent Hostinger LiteSpeed server and browser from caching HTML pages, resolving the 'broken layout' deployment issue caused by stale HTML referencing missing hashed CSS/JS chunks. Added [E=Cache-Control:no-cache] for dynamic routes and standard no-store headers for HTML, while preserving immutable caching for static assets.
Scope
- .htaccess
- public/.htaccess
Implemented a secure inline email OTP verification flow on lead capture forms (resource download modal, course registration popup, and program enrollment page). Swaps the email input inline to a 6-digit OTP code entry field on submit to prevent invalid entries while keeping other form fields visible. Includes inline resend controls, a 'Change email' option that preserves the typed email via React key reconciliation, and backend session validation APIs (send-otp.php, verify-otp-php) with rate limits and failure thresholds. Also created local OTP log files for testing and updated next.config.ts local dev rewrites.
Scope
- src/app/enroll/EnrollForm.tsx
- src/components/LeadCaptureModal.tsx
- src/components/RegisterInterest.tsx
- src/components/ui/FormInput.tsx
- public/api/send-otp.php
- public/api/verify-otp.php
- public/api/templates/otp_verification.html
- src/lib/otp.ts
- next.config.ts
- .gitignore
Reduced the subject grid below the hero to the two visible courses. It previously showed seven subject tiles linking to now-hidden course pages (and its PSIR tile pointed at the hidden /courses/international-relations) — now it shows just PSIR 2027 and Essay Mentorship, with the PSIR tile repointed to /courses/psir-mains-2027 and the grid adapted for two cards. Also repointed the homepage intro paragraph's course links from the hidden GS Foundation / Answer Writing Program to PSIR 2027 / Essay Mentorship, so the homepage now links only to the two visible courses.
Scope
- src/components/sections/SubjectCategories.tsx
- src/app/page.tsx
Added a 'Free Resources for Every Aspirant' section to the homepage so resources are easily reachable without opening the nav dropdown — a 6-card grid linking to Masterclasses, Notifications, Blog, Syllabus, Previous Year Papers, and Study Material, plus an 'Explore All Resources' button to /resources. Placed between the founder spotlight and events sections, reusing the existing resource-card style.
Scope
- src/components/sections/ResourcesHighlight.tsx
- src/app/page.tsx
Fixed the broken logo on the live site. The Hostinger CDN was returning 502 Bad Gateway for the logo asset; the source was also heavily oversized (1600×626, 558 KB, displayed at ~48px tall). Resized it to 600×234 (76 KB) — which also changes its content hash, so the next deploy serves a fresh asset that bypasses the broken cached file. (apple-touch-icon.png is also 502 on the CDN; it's a fixed, unhashed path, so it needs a redeploy / CDN cache purge rather than a code change.)
Scope
Adapted the Courses mega-menu for the now-2-course offering: narrowed the panel and switched to a 2-column grid (from a full-width 4-column layout), and removed the 'View all courses' link in both the desktop mega-menu and the mobile Courses accordion.
Scope
- src/components/layout/MegaMenu.tsx
- src/components/layout/Navbar.tsx
Social links: updated YouTube to youtube.com/@theroundtableias and Instagram to instagram.com/theroundtableias, removed the X (Twitter) and LinkedIn footer icons, kept Telegram, and updated the Organization schema sameAs to match. Courses: reduced the visible course offering to PSIR 2027 and Essay Mentorship only — added a VISIBLE_COURSE_SLUGS / visibleCourses helper and routed the mega-menu, mobile menu, homepage grid, /courses listing, enroll dropdown, and IAS-coaching featured section through it. The other course pages stay live at their URLs (and in the sitemap) but are unlinked from navigation and listings.
Scope
- src/lib/constants.ts
- src/components/layout/Footer.tsx
- src/components/seo/StructuredData.tsx
- src/data/courses.ts
- src/components/sections/CoursesGrid.tsx
- src/app/courses/page.tsx
- src/app/enroll/page.tsx
- src/app/ias-coaching-classes/page.tsx
Made the blog/article system production-ready for SEO articles. Added an optional structured `faqs` field and an `authorCredential` to BlogPost; the article page now renders a styled FAQ section, emits FAQPage JSON-LD alongside the existing Article schema, and shows the author's one-line credential in the byline. Fully backward-compatible — existing posts render unchanged.
Scope
- src/lib/types.ts
- src/app/resources/[slug]/page.tsx
SEO basics pass on the homepage and all course pages. Rewrote every <title> to under 60 characters with the page's main keyword and every meta description to 140–160 characters (homepage, the 3 dedicated course pages, and the 7 dynamic [slug] course pages — adding SEO meta for gs-foundation and interview-guidance). Confirmed exactly one H1 per page. Added Course JSON-LD to the dynamic course pages (the dedicated pages already had it) so all 10 course pages carry Course schema. Corrected the sitewide Organization (EducationalOrganization) sameAs to instagram.com/theroundtableias and youtube.com/@RoundtableIAS. Verified sitemap.xml is current (41 URLs) and robots.txt allows crawling. Metadata and schema only — no visual changes.
Scope
- src/app/page.tsx
- src/app/layout.tsx
- src/app/courses/[slug]/page.tsx
- src/app/courses/essay/page.tsx
- src/app/courses/psir-mains-2027/page.tsx
- src/app/courses/international-relations/page.tsx
- src/components/seo/StructuredData.tsx
Extended 'Rohan Dange Sir' site-wide — homepage, About, FAQ, Resources, the courses index, Roundtable Dialogue, enroll, the pedagogy/events/blog-preview sections, the organisation description (SITE.description), SEO keyword data, and in-article blog mentions. Deliberately kept the canonical 'Rohan Dange' in JSON-LD Person entities, blog author bylines, the SITE.founder field, image alt text, and the legal Terms page. Build, sitemap, and lead routing verified unaffected.
Scope
- src/lib/constants.ts
- src/app/page.tsx
- src/app/about/page.tsx
- src/data/faq.ts
- src/data/blog-posts.ts
- src/components/sections/PedagogyHighlight.tsx
- src/components/sections/EventsCarousel.tsx
- src/components/sections/BlogPreview.tsx
- src/app/resources/page.tsx
- src/app/courses/page.tsx
- src/app/roundtable-dialogue/page.tsx
- src/app/ias-coaching-classes/page.tsx
- src/app/enroll/EnrollForm.tsx
- src/app/blog/page.tsx
- src/data/ias-coaching-seo-keywords.ts
Across the course and masterclass landing pages (and the data and mentor block that feed them), refer to the founder as 'Rohan Dange Sir' in all visible and SEO copy — how aspirants search for and refer to him. Kept the canonical 'Rohan Dange' in JSON-LD Person entities and image alt text for correct knowledge-graph/entity matching. Lead routing verified unaffected.
Scope
- src/data/masterclasses.ts
- src/data/courses.ts
- src/app/courses/essay/page.tsx
- src/app/courses/psir-mains-2027/page.tsx
- src/app/courses/international-relations/page.tsx
- src/app/masterclass/[slug]/page.tsx
- src/app/masterclass/page.tsx
- src/components/sections/FounderSpotlight.tsx
Replaced the Ethics, PSIR, and Essay masterclass cover images with hyper-realistic, on-brand photographs (a contemplative aspirant with the scales of justice for Ethics; a globe-and-world-map study desk for PSIR; a fountain pen on a writing desk for Essay). Optimised each to WebP — Ethics went from a 10 MB PNG to 102 KB — and pointed both the listing cards and the detail-page heroes at them.
Scope
- src/data/masterclasses.ts
- src/lib/images.ts
- public/images/masterclass/ethics-masterclass.webp
- public/images/masterclass/psir-masterclass.webp
- public/images/masterclass/essay-masterclass.webp
Added three masterclasses to the series from the June–July schedule — Ethics (GS-IV, 30 June), PSIR Optional (7 July), and Essay (8 July), all free and live at 10:00 AM IST. Each got its own landing page automatically via the data-driven /masterclass/[slug] template, with subject cover images on the listing cards. Wired the Resend email automation for them: added dedicated CLASS_SCHEDULES entries (welcome email on registration + reminder 1 hour before) and routed /masterclass/* registrations to those schedules in getCourseSlug, fixing a collision where Essay/PSIR masterclass leads would otherwise have matched the long-form course schedules. Zoom links are placeholders pending the real per-class links.
Scope
- src/data/masterclasses.ts
- public/api/config.php
- public/api/resend.php
Masterclass listing cards now lead with the masterclass's featured image (with the Free/price badge overlaid) instead of a plain date strip.
Scope
- src/app/masterclass/MasterclassList.tsx
- src/app/masterclass/page.tsx
Turned masterclasses into a data-driven series. Added a listing page at /masterclass/ that always shows only upcoming sessions (filtered by the visitor's current time, so past ones drop off without a redeploy) plus a dynamic detail page at /masterclass/[slug] generated from src/data/masterclasses.ts — each masterclass now gets its own landing page (hero, live countdown, what-you'll-learn, mentor, FAQ, and a free register popup). Migrated the Answer Writing masterclass into the data and removed the hand-built static page. Linked Masterclasses in the Resources menu, footer, and resources hub, and added /masterclass to the sitemap.
Scope
- src/data/masterclasses.ts
- src/app/masterclass/page.tsx
- src/app/masterclass/MasterclassList.tsx
- src/app/masterclass/[slug]/page.tsx
- src/lib/constants.ts
- src/components/layout/Footer.tsx
- src/app/resources/page.tsx
- public/sitemap.xml
Updated Google Apps Script to dynamically route campaign registration leads into distinct, sanitized course-specific tabs (e.g. Reg - psir-mains-2027, Reg - essay) instead of a single Campaign Registration sheet, keeping leads separated for each dedicated course page.
Scope
- scripts/google-apps-script-lead-capture.js
Built a webinar landing page at /masterclass/answer-writing/ for the free live 'Masterclass on Answer Writing' (UPSC Mains, 29 June 2026). Hero with a live countdown, 7 'what you'll learn' cards, mentor section, who-should-attend, FAQ, a free register-interest popup, and Event/FAQ JSON-LD. Not added to the sitemap (it's a paid-ads landing page).
Scope
- src/app/masterclass/answer-writing/page.tsx
Added pricing to the PSIR 2027 page: ₹21,999 with a 15% early-bird discount to ₹18,699 (all-inclusive, no taxes), an offer deadline of 30 June 2026, and a live countdown timer in the hero, offer strip, pricing card, and final CTA — mirroring the Essay page. Updated the fee FAQ and added Offer schema to the JSON-LD.
Scope
- src/app/courses/psir-mains-2027/page.tsx
Tablet navigation: show the full desktop nav and Courses/Resources mega-menus from the md breakpoint (768px) instead of lg (1024px), so tablets get the complete navigation and mega-menus rather than a phone-style hamburger. Verified the nav fits and the mega-menu renders at ~889px tablet width.
Scope
- src/components/layout/Navbar.tsx
Linked the two flagship campaign pages across navigation: added PSIR 2027 to the Courses mega-menu and mobile menu, relabelled Essay as 'Essay Mentorship', and added both to the footer Quick Links.
Scope
- src/lib/constants.ts
- src/components/layout/Footer.tsx
Launched the PSIR 2027 campaign landing page at /courses/psir-mains-2027/ ('Ace PSIR, Ace Mains — Target 280') — India's first PSIR optional with think-tank certifications. Hero, insurance-policy framing, 12-feature grid, 5 certification tracks, Paper 1 & 2 structure, outcomes, FAQ, and an in-page register-interest popup. Generalised the popup into a reusable RegisterInterest component (now shared with the Essay page). Added the course to courses.ts, excluded it from the dynamic route, and added it to the sitemap.
Scope
- src/app/courses/psir-mains-2027/page.tsx
- src/components/RegisterInterest.tsx
- src/data/courses.ts
- src/app/courses/[slug]/page.tsx
- public/sitemap.xml
Added a live early-bird countdown timer (hero, offer strip, pricing card, final CTA) and an on-page popup registration form to the Essay Mentorship page so users can submit interest without leaving. All fields are mandatory; submissions post through the existing lead pipeline (with auto-reply intent) and redirect to a new /thank-you page.
Scope
- src/app/courses/essay/page.tsx
- src/app/courses/essay/EssayEnroll.tsx
- src/components/CountdownTimer.tsx
- src/app/thank-you/page.tsx
Built a dedicated landing page at /courses/essay/ for the 'Target 140+: Essay Mentorship by Rohan Dange' programme — hero with early-bird offer, pricing (15% off until 30 June 2026, starts 7 July 2026), 13-feature grid, test-series highlight, outcomes, FAQ, and Course/Offer/FAQ JSON-LD schema. Excluded the essay slug from the dynamic course route to avoid a collision.
Scope
- src/app/courses/essay/page.tsx
- src/app/courses/[slug]/page.tsx
- public/sitemap.xml
Published four current-affairs blog posts with branded cover images and SEO keywords: UPSC Mains 2026 DAF guide, the 2026 Strait of Hormuz/Iran war and energy security, the India-EU FTA and India-UK CETA, and India's near-elimination of Left-Wing Extremism. Added the new routes to the sitemap.
Scope
- src/data/blog-posts.ts
- src/lib/images.ts
- public/images/blog/upsc-daf-2026.webp
- public/images/blog/iran-hormuz-2026.webp
- public/images/blog/india-trade-deals-2026.webp
- public/images/blog/lwe-naxalism-2026.webp
- public/sitemap.xml
Bypassed the lead capture download form for the UPSC CSE 2026 Preliminary Results PDF, allowing students to download it directly.
Scope
- src/data/upsc-results.ts
- src/app/notifications/page.tsx
- src/components/sections/HeroSection.tsx
- src/components/sections/ResultsAnnouncementBanner.tsx
Rebuilt the PSIR optional coaching landing page at /courses/international-relations/ with SEO metadata, FAQ/Course schema, mentor section, and commercial landing-page structure.
Scope
- src/app/courses/international-relations/page.tsx
- src/data/courses.ts
- public/sitemap.xml
Rewrote UPSC Prelims Result 2026 blog using Vajiram-style SEO structure: overview, PDF download steps, roll-number check guide, post-result action plan, and 7 FAQs.
Scope
- src/data/blog-posts.ts
- src/app/resources/[slug]/page.tsx
- src/lib/submitLead.ts
- public/docs/upsc-results/CSE_2026_Preliminary_Results.pdf
- public/images/blog/upsc-prelims-2026-result.webp
- public/sitemap.xml
Published the PSIR optional booklist blog post with SEO metadata, optimized hero image, and sitemap entry.
Scope
- src/data/blog-posts.ts
- public/images/blog/psir-booklist.webp
- src/lib/images.ts
- public/sitemap.xml
Published UPSC CSE 2026 Preliminary Results on the notifications page and home page notification banner.
Scope
- src/data/upsc-results.ts
- public/docs/upsc-results/CSE_2026_Preliminary_Results.pdf
- /notifications
- /
Added the 'Notes for PSIR Masterclass 102' PDF study material to the study materials list.
Scope
- src/data/study-materials.ts
- public/docs/study-materials/PSIR Masterclass Class1 Branded.pdf
Uploaded the PSIR Masterclass 101 Notes PDF study material and surfaced it on the study material page.
Scope
- src/data/study-materials.ts
- public/docs/study-materials/PSIR Masterclass Concept Note Branded.pdf
- public/docs/study-materials/PSIR Masterclass Class1 Branded.pdf
Added the Roundtable IAS Essay Handbook PDF to the study materials page.
Scope
- src/data/study-materials.ts
- public/docs/study-materials/Roundtable IAS Essay Handbook Final.pdf
Replaced the Day 14 answer-writing PDF with a revised version (Day - 14 (2)) while keeping the same public link on the answer-writing programme page.
Scope
- assets/documents/Day - 14 (2).pdf
- public/docs/subject-categories/mains-answer-writing/Day - 14.pdf
- /courses/answer-writing-program
Added Day 14 (GS-III coral reefs) to the answer-writing programme resources and published the PDF in the mains-answer-writing documents folder.
Scope
- src/data/courses.ts
- public/docs/subject-categories/mains-answer-writing/Day - 14.pdf
- assets/documents/Day - 14.pdf
Added the UNESCO World Heritage Sites in India PDF to the public study-materials library and surfaced it on the study material page.
Scope
- src/data/study-materials.ts
- public/docs/study-materials/unesco-world-heritage-sites.pdf
- assets/documents/UNESCO World Heritage Sites.pdf
Published Day 13 of the answer-writing programme (GS-III agriculture and nitrogen pollution) and linked it on the answer-writing course resources list.
Scope
- src/data/courses.ts
- public/docs/subject-categories/mains-answer-writing/Day - 13.pdf
Ashutosh Choudhary refined subject category naming in course resource metadata so programme labels read more clearly on the site.
Scope
Ashutosh Choudhary added Day 12 mains answer-writing material (model PDF) and linked it from the answer-writing programme resources list.
Scope
- /courses/answer-writing-program
- public/docs/subject-categories/mains-answer-writing/Day - 12 (1).pdf
- src/data/courses.ts
Executed keyword-focused on-page SEO updates: added faculty guidance page, aligned course/home/mentorship content to target intents, expanded footer/navigation discoverability, and updated sitemap coverage.
Scope
- src/app/faculty-guidance/page.tsx
- src/app/courses/[slug]/page.tsx
- src/app/ias-coaching-classes/page.tsx
- src/app/page.tsx
- src/components/layout/Footer.tsx
- src/lib/constants.ts
- public/sitemap.xml
Submitted the production sitemap to Google Search Console for indexing.
Scope
- https://theroundtableias.com/sitemap.xml
Updated UI and content details: international relations course title, navbar visibility/readability, fixed-content offset, blog breadcrumb hierarchy, and footer email placeholder text.
Scope
- src/app/courses/[slug]/page.tsx
- src/components/layout/Navbar.tsx
- src/app/layout.tsx
- src/app/resources/[slug]/page.tsx
- src/components/layout/Footer.tsx
Fixed canonical indexing signals, replaced stale static sitemap with generated route-aware sitemap, aligned robots and schema domain, and added automated sitemap drift validation.
Scope
- src/app/layout.tsx
- src/app/sitemap.ts
- public/robots.txt
- scripts/validate-sitemap.mjs
- package.json
- src/app/**/page.tsx metadata
Created a dedicated change log page and documented the mandatory date-based logging rule for all SEO/config/content updates.
Scope
- /log
- README.md
- src/lib/constants.ts
- src/app/resources/page.tsx