diff --git a/app/agent-markdown/route.ts b/app/agent-markdown/route.ts index 006d297..ce351d9 100644 --- a/app/agent-markdown/route.ts +++ b/app/agent-markdown/route.ts @@ -30,18 +30,18 @@ Everything at Dev Weekends is free for the community. Our core mission is to mak ## Primary links -- Website: https://devweekends.com -- Sessions: https://devweekends.com/sessions -- Community: https://devweekends.com/community -- Mentorship: https://devweekends.com/mentorship -- Projects: https://devweekends.com/projects +- Website: https://www.devweekends.com +- Sessions: https://www.devweekends.com/sessions +- Community: https://www.devweekends.com/community +- Mentorship: https://www.devweekends.com/mentorship +- Projects: https://www.devweekends.com/projects ## Agent and machine-readable discovery - Requested path: ${sourcePath} -- llms.txt: https://devweekends.com/llms.txt -- API catalog: https://devweekends.com/.well-known/api-catalog -- Agent skills index: https://devweekends.com/.well-known/agent-skills/index.json +- llms.txt: https://www.devweekends.com/llms.txt +- API catalog: https://www.devweekends.com/.well-known/api-catalog +- Agent skills index: https://www.devweekends.com/.well-known/agent-skills/index.json ` return new NextResponse(markdown, { diff --git a/app/dsoc/layout.tsx b/app/dsoc/layout.tsx index 4339d85..a20b214 100644 --- a/app/dsoc/layout.tsx +++ b/app/dsoc/layout.tsx @@ -7,6 +7,7 @@ export const metadata: Metadata = { title: "DSOC: Dev Weekends Summer of Code", description: "Dev Weekends Summer of Code (DSOC) is a mentored open source program with a monthly stipend per milestone. 2026 applications are closed.", + alternates: { canonical: "/dsoc" }, } export default function DsocLayout({ children }: { children: ReactNode }) { diff --git a/app/dsoc/login/layout.tsx b/app/dsoc/login/layout.tsx new file mode 100644 index 0000000..ceeb5aa --- /dev/null +++ b/app/dsoc/login/layout.tsx @@ -0,0 +1,13 @@ +import type { Metadata } from "next" +import type { ReactNode } from "react" + +// A sign-in screen has nothing to rank for +export const metadata: Metadata = { + title: { absolute: "DSOC sign in | Dev Weekends" }, + alternates: { canonical: "/dsoc/login" }, + robots: { index: false, follow: false }, +} + +export default function DsocLoginLayout({ children }: { children: ReactNode }) { + return children +} diff --git a/app/dsoc/projects/layout.tsx b/app/dsoc/projects/layout.tsx new file mode 100644 index 0000000..658467e --- /dev/null +++ b/app/dsoc/projects/layout.tsx @@ -0,0 +1,11 @@ +import type { Metadata } from "next" +import type { ReactNode } from "react" + +export const metadata: Metadata = { + title: { absolute: "DSOC projects | Dev Weekends" }, + alternates: { canonical: "/dsoc/projects" }, +} + +export default function DsocProjectsLayout({ children }: { children: ReactNode }) { + return children +} diff --git a/app/dsoc/register/layout.tsx b/app/dsoc/register/layout.tsx new file mode 100644 index 0000000..7a132c3 --- /dev/null +++ b/app/dsoc/register/layout.tsx @@ -0,0 +1,11 @@ +import type { Metadata } from "next" +import type { ReactNode } from "react" + +export const metadata: Metadata = { + title: { absolute: "DSOC registration | Dev Weekends" }, + alternates: { canonical: "/dsoc/register" }, +} + +export default function DsocRegisterLayout({ children }: { children: ReactNode }) { + return children +} diff --git a/app/dwosi/page.tsx b/app/dwosi/page.tsx index 75b0550..14aa135 100644 --- a/app/dwosi/page.tsx +++ b/app/dwosi/page.tsx @@ -28,7 +28,7 @@ export const metadata: Metadata = { siteName: "Dev Weekends", title, description, - url: "https://devweekends.com/dwosi", + url: "https://www.devweekends.com/dwosi", images: [{ url: "/og-image.jpg", width: 1200, height: 630, alt: "Dev Weekends" }], }, twitter: { diff --git a/app/layout.tsx b/app/layout.tsx index bf90253..799b5ae 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -8,7 +8,7 @@ import Script from 'next/script' import { Analytics } from "@/components/analytics" import { SiteHeader } from "@/components/site-header" import { dwosiThemeScript } from "@/app/dwosi/theme" -import { jsonLdString, siteJsonLd } from "@/lib/seo" +import { SITE_URL, jsonLdString, siteJsonLd } from "@/lib/seo" const inter = Inter({ subsets: ["latin"], display: "swap" }) @@ -16,12 +16,12 @@ const inter = Inter({ subsets: ["latin"], display: "swap" }) const gaId = process.env.NEXT_PUBLIC_GA_ID export const metadata: Metadata = { - metadataBase: new URL('https://devweekends.com'), + metadataBase: new URL(SITE_URL), title: { - default: "Dev Weekends - Your Gateway to becoming a better Software Engineer", + default: "Dev Weekends | Great engineers. Greater impact.", template: "%s | Dev Weekends" }, - description: "Join a thriving community of students and tech enthusiasts learning, building, and growing together through weekend events and bootcamps. Learn from industry experts and enhance your skills in various tech domains.", + description: "Great engineers. Greater impact. Dev Weekends is a free community of engineers with programs, mentorship, open source and partnerships that open doors to the world.", keywords: ["software engineering", "tech community", "coding bootcamp", "mentorship", "tech events", "developer community", "programming", "software development", "tech learning", "career development"], authors: [{ name: "Dev Weekends Team" }], creator: "Dev Weekends", @@ -46,14 +46,14 @@ export const metadata: Metadata = { openGraph: { type: "website", locale: "en_US", - title: "Dev Weekends - Your Gateway to becoming a better Software Engineer", - description: "Join a thriving community of students and tech enthusiasts learning, building, and growing together through weekend events and bootcamps.", + title: "Dev Weekends | Great engineers. Greater impact.", + description: "Great engineers. Greater impact. Dev Weekends is a free community of engineers with programs, mentorship, open source and partnerships that open doors to the world.", siteName: "Dev Weekends", }, twitter: { card: "summary_large_image", - title: "Dev Weekends - Your Gateway to becoming a better Software Engineer", - description: "Join a thriving community of students and tech enthusiasts learning, building, and growing together through weekend events and bootcamps.", + title: "Dev Weekends | Great engineers. Greater impact.", + description: "Great engineers. Greater impact. Dev Weekends is a free community of engineers with programs, mentorship, open source and partnerships that open doors to the world.", creator: "@devweekends", }, robots: { diff --git a/app/links/page.tsx b/app/links/page.tsx index 14aed6d..bd3be84 100644 --- a/app/links/page.tsx +++ b/app/links/page.tsx @@ -27,7 +27,7 @@ export const metadata: Metadata = { openGraph: { title: "Dev Weekends | Links", description: "Find and join the right Dev Weekends community in one tap.", - url: "https://devweekends.com/links", + url: "https://www.devweekends.com/links", images: ["/og-image.jpg"], }, } diff --git a/app/llms-full.txt/route.ts b/app/llms-full.txt/route.ts index 1a77839..cdd5d16 100644 --- a/app/llms-full.txt/route.ts +++ b/app/llms-full.txt/route.ts @@ -5,37 +5,37 @@ export function GET() { ## Organization Name: Dev Weekends -Website: https://devweekends.com +Website: https://www.devweekends.com Description: Community-driven software engineering education through weekend sessions, mentorship, project building, and tech initiatives. ## Public Website URLs -- https://devweekends.com/ -- https://devweekends.com/team -- https://devweekends.com/community -- https://devweekends.com/sessions -- https://devweekends.com/projects -- https://devweekends.com/mentorship -- https://devweekends.com/mentor -- https://devweekends.com/testimonials -- https://devweekends.com/ambassadors -- https://devweekends.com/ambassador-program -- https://devweekends.com/fellowship -- https://devweekends.com/network +- https://www.devweekends.com/ +- https://www.devweekends.com/team +- https://www.devweekends.com/community +- https://www.devweekends.com/sessions +- https://www.devweekends.com/projects +- https://www.devweekends.com/mentorship +- https://www.devweekends.com/mentor +- https://www.devweekends.com/testimonials +- https://www.devweekends.com/ambassadors +- https://www.devweekends.com/ambassador-program +- https://www.devweekends.com/fellowship +- https://www.devweekends.com/network ## Program URLs -- https://devweekends.com/dsoc -- https://devweekends.com/dsoc/projects -- https://devweekends.com/dsoc/register +- https://www.devweekends.com/dsoc +- https://www.devweekends.com/dsoc/projects +- https://www.devweekends.com/dsoc/register ## Discovery and Interoperability -- robots.txt: https://devweekends.com/robots.txt -- sitemap.xml: https://devweekends.com/sitemap.xml -- llms.txt: https://devweekends.com/llms.txt -- API Catalog: https://devweekends.com/.well-known/api-catalog -- OpenAPI: https://devweekends.com/openapi.json -- API Documentation: https://devweekends.com/api-docs -- API Health: https://devweekends.com/api/health -- Agent Skills Index: https://devweekends.com/.well-known/agent-skills/index.json +- robots.txt: https://www.devweekends.com/robots.txt +- sitemap.xml: https://www.devweekends.com/sitemap.xml +- llms.txt: https://www.devweekends.com/llms.txt +- API Catalog: https://www.devweekends.com/.well-known/api-catalog +- OpenAPI: https://www.devweekends.com/openapi.json +- API Documentation: https://www.devweekends.com/api-docs +- API Health: https://www.devweekends.com/api/health +- Agent Skills Index: https://www.devweekends.com/.well-known/agent-skills/index.json ## AI Preferences Content-Signal: ai-train=no, search=yes, ai-input=no diff --git a/app/llms.txt/route.ts b/app/llms.txt/route.ts index f134b73..0fef1f2 100644 --- a/app/llms.txt/route.ts +++ b/app/llms.txt/route.ts @@ -4,24 +4,24 @@ export function GET() { const body = `# Dev Weekends > Dev Weekends is a learning community for software engineers with events, mentorship, projects, and career growth programs. -Canonical: https://devweekends.com -Sitemap: https://devweekends.com/sitemap.xml -Robots: https://devweekends.com/robots.txt +Canonical: https://www.devweekends.com +Sitemap: https://www.devweekends.com/sitemap.xml +Robots: https://www.devweekends.com/robots.txt ## Primary Pages -- Home: https://devweekends.com/ -- Team and story: https://devweekends.com/team -- Sessions: https://devweekends.com/sessions -- Community: https://devweekends.com/community -- Links: https://devweekends.com/links -- Projects: https://devweekends.com/projects -- Mentorship: https://devweekends.com/mentorship +- Home: https://www.devweekends.com/ +- Team and story: https://www.devweekends.com/team +- Sessions: https://www.devweekends.com/sessions +- Community: https://www.devweekends.com/community +- Links: https://www.devweekends.com/links +- Projects: https://www.devweekends.com/projects +- Mentorship: https://www.devweekends.com/mentorship ## Machine-Readable Discovery -- API Catalog (RFC 9727): https://devweekends.com/.well-known/api-catalog -- OpenAPI: https://devweekends.com/openapi.json -- API Health: https://devweekends.com/api/health -- Agent Skills Index: https://devweekends.com/.well-known/agent-skills/index.json +- API Catalog (RFC 9727): https://www.devweekends.com/.well-known/api-catalog +- OpenAPI: https://www.devweekends.com/openapi.json +- API Health: https://www.devweekends.com/api/health +- Agent Skills Index: https://www.devweekends.com/.well-known/agent-skills/index.json ## Content Preferences - Content-Signal: ai-train=no, search=yes, ai-input=no diff --git a/app/page.tsx b/app/page.tsx index 7f5653a..cdeead7 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,4 +1,4 @@ -import type { Metadata } from "next" +import { withSocial } from "@/lib/seo" import { Communities, Products } from "@/components/home/sections-mid" import { Partnerships, Qantara, Resources, Voices } from "@/components/home/sections-bottom" @@ -6,11 +6,16 @@ import { StartHere } from "@/components/site/start-here" import { Hero, Impact, Network, Outcomes, Reach } from "@/components/home/sections-top" import "./home.css" -export const metadata: Metadata = { +const title = "Dev Weekends | Great engineers. Greater impact." + +export const metadata = withSocial({ + title: { absolute: title }, description: "Great engineers. Greater impact. Dev Weekends is a free community of engineers with programs, mentorship, open source and partnerships that open doors to the world.", alternates: { canonical: "/" }, -} + openGraph: { title }, + twitter: { title }, +}) /** The header and footer come from the root layout, shared with every other page. */ export default function HomePage() { diff --git a/app/sitemap.ts b/app/sitemap.ts index 96a02c0..f98202c 100644 --- a/app/sitemap.ts +++ b/app/sitemap.ts @@ -3,7 +3,9 @@ import path from 'path' import matter from 'gray-matter' import { MetadataRoute } from 'next' -const baseUrl = 'https://devweekends.com' +import { SITE_URL } from '@/lib/seo' + +const baseUrl = SITE_URL type Entry = { path: string diff --git a/lib/seo.ts b/lib/seo.ts index 565a914..3e5fd67 100644 --- a/lib/seo.ts +++ b/lib/seo.ts @@ -5,7 +5,8 @@ import type { Metadata } from 'next' -export const SITE_URL = 'https://devweekends.com' +// The live site answers on www; the bare domain redirects there +export const SITE_URL = 'https://www.devweekends.com' export const SITE_NAME = 'Dev Weekends' export const SITE_TAGLINE = 'Great engineers. Greater impact.'