diff --git a/.env.example b/.env.example index 736a98a..a6f138c 100644 --- a/.env.example +++ b/.env.example @@ -62,10 +62,10 @@ ENTRY_PASS_ENCRYPTION_KEY= # Optional (public). The ONE canonical origin of the site (src/config/site.ts), no trailing slash. Used for canonical # URLs, Open Graph URLs, robots.txt, sitemap.xml and structured data, and as the site Google sign-in returns to -# (local dev on localhost always returns to localhost). Defaults to https://project-spacex-seven.vercel.app. -# When the custom domain goes live: set it here AND in Vercel (Production), add it under Supabase -> Authentication -> +# (local dev on localhost always returns to localhost). Defaults to https://www.innonitrkl.com. +# To move to another domain: set it here AND in Vercel (Production), add it under Supabase -> Authentication -> # URL Configuration, then redeploy (metadata, robots.txt and sitemap.xml are built at deploy time). -# NEXT_PUBLIC_SITE_URL=https://project-spacex-seven.vercel.app +# NEXT_PUBLIC_SITE_URL=https://www.innonitrkl.com # Optional (server-only). Google Search Console "HTML tag" verification: only the token, i.e. the content="..." value # of the tag Search Console gives you. Unset: no tag is rendered. diff --git a/README.md b/README.md index 279d6e0..7791983 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ git-ignored, so never commit secrets. Anything prefixed `NEXT_PUBLIC_` is bundle | `NEXT_PUBLIC_SUPABASE_URL` | yes | Supabase project URL. | | `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY` | yes | Publishable (anon) key. Safe in the browser because RLS is enforced. | | `SUPABASE_SERVICE_ROLE_KEY` | prod (secret) | Backend API routes. Bypasses RLS and signs staff links to payment proofs. Server only. | -| `NEXT_PUBLIC_SITE_URL` | optional | Canonical origin for SEO, sitemap and the sign-in return URL. Defaults to the Vercel URL. | +| `NEXT_PUBLIC_SITE_URL` | optional | Canonical origin for SEO, sitemap and the sign-in return URL. Defaults to `https://www.innonitrkl.com`. | | `GOOGLE_SITE_VERIFICATION` | optional | Google Search Console verification token. | | `DATABASE_URL` | local tools only | Direct Postgres connection for running SQL from your machine. Never add it to Vercel. | diff --git a/src/app/events/[world]/page.tsx b/src/app/events/[world]/page.tsx index fc16137..ba62e12 100644 --- a/src/app/events/[world]/page.tsx +++ b/src/app/events/[world]/page.tsx @@ -19,7 +19,7 @@ export function generateStaticParams() { } /** Meta description: which world, of which fest, and its tagline (short enough not to be cut off in results). */ -const description = (w: World) => `${w.name} at INNOVISION 2026, the techno-management festival of NIT Rourkela, Odisha. ${w.tagline}`; +const description = (w: World) => `${w.name} at INNOVISION 2026, Eastern India's largest techno-management fest, hosted by NIT Rourkela, Odisha. ${w.tagline}`; export async function generateMetadata({ params }: PageProps<'/events/[world]'>): Promise { const w = worldBySlug((await params).world); diff --git a/src/app/events/page.tsx b/src/app/events/page.tsx index 6f5fa29..0134f8b 100644 --- a/src/app/events/page.tsx +++ b/src/app/events/page.tsx @@ -10,7 +10,7 @@ import { jsonLdScript, listPageJsonLd, pageMetadata } from '@/lib/seo'; export const revalidate = 300; const DESCRIPTION = - 'Explore the events of INNOVISION 2026, the techno-management festival of NIT Rourkela: Flagship, Standout, Main, and DTS and Fun Events.'; + "Explore the events of INNOVISION 2026 by NIT Rourkela, Eastern India's largest techno-management fest: Flagship, Standout, Main, and DTS and Fun Events."; export const metadata = pageMetadata({ title: 'Events', description: DESCRIPTION, path: '/events', ownImage: true }); @@ -39,7 +39,8 @@ export default async function EventsPage() {

INNOVISION 2026 · NIT ROURKELA

Innovision 2026 Events

- Innovision is the techno-management festival of NIT Rourkela, Odisha. Its 2026 edition, The Celestial Odyssey, + Hosted by NIT Rourkela, Odisha, Innovision is Eastern India's largest techno-management fest. Its 2026 + edition, The Celestial Odyssey, charts four worlds: Flagship Events for the technical arena, Standout Events for the signature showcases, Main Events for workshops and talks, and DTS and Fun Events for the games, quizzes and showcases where the fest peaks. diff --git a/src/app/privacy/page.tsx b/src/app/privacy/page.tsx index f4d7501..6925963 100644 --- a/src/app/privacy/page.tsx +++ b/src/app/privacy/page.tsx @@ -4,7 +4,7 @@ import { pageMetadata } from '@/lib/seo'; export const metadata = pageMetadata({ title: 'Privacy Policy', - description: 'How INNOVISION 2026, the techno-management festival of NIT Rourkela, collects, uses and protects your personal data.', + description: "How INNOVISION 2026, Eastern India's largest techno-management fest, hosted by NIT Rourkela, collects, uses and protects your personal data.", path: '/privacy', }); diff --git a/src/app/register/page.tsx b/src/app/register/page.tsx index 62e1bfb..30ca29b 100644 --- a/src/app/register/page.tsx +++ b/src/app/register/page.tsx @@ -7,12 +7,12 @@ export const metadata = pageMetadata( REGISTRATIONS_OPEN ? { title: 'Register', - description: 'Register for Innovision 2026: The Celestial Odyssey, the techno-management fest of NIT Rourkela, Odisha.', + description: "Register for Innovision 2026: The Celestial Odyssey, Eastern India's largest techno-management fest, hosted by NIT Rourkela, Odisha.", path: '/register', } : { title: 'Registrations Opening Soon', - description: 'Registrations for Innovision 2026: The Celestial Odyssey, the techno-management fest of NIT Rourkela, Odisha, open soon.', + description: "Registrations open soon for Innovision 2026: The Celestial Odyssey, Eastern India's largest techno-management fest, hosted by NIT Rourkela, Odisha.", path: '/register', } ); diff --git a/src/app/terms/page.tsx b/src/app/terms/page.tsx index 15d5da3..6d026d5 100644 --- a/src/app/terms/page.tsx +++ b/src/app/terms/page.tsx @@ -5,7 +5,7 @@ import { pageMetadata } from '@/lib/seo'; export const metadata = pageMetadata({ title: 'Terms and Conditions', - description: 'The terms for registering for and attending INNOVISION 2026, the techno-management festival of NIT Rourkela.', + description: "The terms for registering for and attending INNOVISION 2026, Eastern India's largest techno-management fest, hosted by NIT Rourkela.", path: '/terms', }); diff --git a/src/components/innovision/AboutPanel.tsx b/src/components/innovision/AboutPanel.tsx index a834247..f324bd6 100644 --- a/src/components/innovision/AboutPanel.tsx +++ b/src/components/innovision/AboutPanel.tsx @@ -24,7 +24,7 @@ export default function AboutPanel({ v }: { v: V }) {

MISSION BRIEFING

INNOVISION

-

Innovision is the techno-management fest of NIT Rourkela: a few days where the campus turns into a launch pad for builders, thinkers and makers from across the country.

+

Innovision is NIT Rourkela's techno-management fest and the largest in Eastern India: a few days where the campus turns into a launch pad for builders, thinkers and makers from across the country.

Pick your world. Flagship Events for the technical arena, Standout Events for the signature showcases, Main Events for workshops and talks, or DTS and Fun Events for the games, quizzes and showcases where the fest peaks.

diff --git a/src/components/innovision/HomeView.tsx b/src/components/innovision/HomeView.tsx index ca8d194..e870a9f 100644 --- a/src/components/innovision/HomeView.tsx +++ b/src/components/innovision/HomeView.tsx @@ -125,7 +125,7 @@ export default function HomeView({ v }: { v: V }) { ))}
-

Innovision is the techno-management fest of NIT Rourkela. This year it charts a Celestial Odyssey across four worlds: Flagship Events for the technical arena, Standout Events for the signature showcases, Main Events for workshops and talks, and DTS and Fun Events for the games, quizzes and showcases where the fest peaks.

+

Hosted by NIT Rourkela, Innovision is Eastern India's largest techno-management fest. This year it charts a Celestial Odyssey across four worlds: Flagship Events for the technical arena, Standout Events for the signature showcases, Main Events for workshops and talks, and DTS and Fun Events for the games, quizzes and showcases where the fest peaks.

{[['HOST', 'NIT Rourkela, Odisha'], ['WORLDS', 'Four, each with its own line-up'], ['CREW', 'Students, makers & dreamers']].map(([dt, dd]) => (
diff --git a/src/config/site.ts b/src/config/site.ts index 6efff0d..d85e4eb 100644 --- a/src/config/site.ts +++ b/src/config/site.ts @@ -6,9 +6,9 @@ * per-deployment vercel.app URL or a spoofed Host never becomes the canonical address. */ -// The current (temporary) production address. When the final domain is confirmed, set NEXT_PUBLIC_SITE_URL in Vercel -// (or change this one line): every canonical URL, og:url, robots.txt, sitemap.xml and JSON-LD URL follows it. -const DEFAULT_SITE_URL = 'https://project-spacex-seven.vercel.app'; +// The production address. The www host is the primary one: innonitrkl.com (the apex) 308-redirects to it on Vercel. +// Every canonical URL, og:url, robots.txt, sitemap.xml and JSON-LD URL follows it. NEXT_PUBLIC_SITE_URL overrides it. +const DEFAULT_SITE_URL = 'https://www.innonitrkl.com'; /** Origin of NEXT_PUBLIC_SITE_URL (no trailing slash), or the default if it is unset or not an http(s) URL. */ function siteOrigin(value: string | undefined): string { @@ -20,8 +20,8 @@ function siteOrigin(value: string | undefined): string { } /** - * Canonical origin. Set NEXT_PUBLIC_SITE_URL to the custom domain once it is live (and add it under Supabase -> - * Authentication -> URL Configuration, since Google sign-in returns here too). + * Canonical origin. Google sign-in returns here too, so it must be listed under Supabase -> Authentication -> + * URL Configuration. */ export const SITE_URL = siteOrigin(process.env.NEXT_PUBLIC_SITE_URL); @@ -31,8 +31,14 @@ export const SITE_NAME = 'INNOVISION 2026 | NIT ROURKELA'; /** Home page title. Other pages use the "%s – INNOVISION 2026 | NIT ROURKELA" template from the root layout. */ export const SITE_TITLE = SITE_NAME; +/** The fest's official social profiles (the footer's links), for the Organization's sameAs in structured data. */ +export const SOCIAL_PROFILES = [ + 'https://www.instagram.com/inno.nitr_official/', + 'https://www.linkedin.com/company/innovision-nitrkl/', +]; + export const SITE_DESCRIPTION = - 'Official website of INNOVISION 2026, the techno-management festival of NIT Rourkela, Odisha. Explore the Flagship, Standout, Main, and DTS and Fun Events.'; + "Official website of INNOVISION 2026 by NIT Rourkela, Eastern India's largest techno-management fest. Explore the Flagship, Standout, Main, and DTS and Fun Events."; /** * Whether search engines may index this deployment. Only Vercel's production deployment is indexable: preview and diff --git a/src/lib/seo.ts b/src/lib/seo.ts index 410884d..d3671a8 100644 --- a/src/lib/seo.ts +++ b/src/lib/seo.ts @@ -1,12 +1,12 @@ import type { Metadata } from 'next'; -import { SITE_NAME, SITE_URL, SITE_DESCRIPTION, SITE_TITLE } from '@/config/site'; +import { SITE_NAME, SITE_URL, SITE_DESCRIPTION, SITE_TITLE, SOCIAL_PROFILES } from '@/config/site'; /** Title template for every page except the home page, which uses SITE_TITLE as is. */ export const TITLE_TEMPLATE = '%s – INNOVISION 2026 | NIT ROURKELA'; /** The home page's link-preview card, drawn by src/app/opengraph-image.tsx (served at /opengraph-image and /twitter-image). */ export const OG_IMAGE = { - alt: 'INNOVISION 2026 | NIT ROURKELA: The Celestial Odyssey, the techno-management festival of NIT Rourkela', + alt: "INNOVISION 2026 | NIT ROURKELA: The Celestial Odyssey, Eastern India's largest techno-management fest, hosted by NIT Rourkela", width: 1200, height: 630, type: 'image/png', @@ -46,8 +46,8 @@ const ORGANIZATION_ID = `${HOME}#organization`; /** * Schema.org JSON-LD for the home page: the website and the fest's organising identity under NIT Rourkela. * Deliberately no Event entries: the events table has no dates (Event requires startDate) and the line-ups and - * schedule in data.ts are placeholders. No sameAs (the social links in the footer are placeholders, not the fest's - * accounts) and no logo (the only logo file is white on transparent, which search engines show on white). + * schedule in data.ts are placeholders. No logo (the only logo file is white on transparent, which search engines show + * on white). */ export function homeJsonLd() { return { @@ -71,7 +71,8 @@ export function homeJsonLd() { name: 'Innovision, NIT Rourkela', alternateName: 'Innovision', url: HOME, - description: 'Innovision is the techno-management festival of the National Institute of Technology Rourkela, Odisha.', + description: "Innovision is Eastern India's largest techno-management fest, hosted by the National Institute of Technology Rourkela, Odisha.", + sameAs: SOCIAL_PROFILES, parentOrganization: { '@type': 'CollegeOrUniversity', name: 'National Institute of Technology Rourkela',