The source code for our eny.social landing page, which is mirrored in a different repository as part of the CI setup. eny.social
social-network eny local-first
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'feature/open-graph' into mirror/main

+47 -6
+2 -3
app/components/Hero.tsx
··· 1 1 "use client"; 2 2 3 + import { siteTagline } from "@/lib/site"; 3 4 import { useState, useEffect } from "react"; 4 5 import Image from "next/image"; 5 6 import GrainedBlob from "./GrainedBlob"; ··· 157 158 {/* Sub-heading + body */} 158 159 <div className="lg:col-span-5 lg:pl-[calc(100%/5)]"> 159 160 <FadeIn delay={500}> 160 - <h2 className="mb-3"> 161 - A social network that belongs to the people. 162 - </h2> 161 + <h2 className="mb-3">{siteTagline}.</h2> 163 162 </FadeIn> 164 163 <FadeIn delay={600}> 165 164 <p className="section-copy lg:pl-[calc(100%/4)] text-right">
+35 -3
app/layout.tsx
··· 1 1 import type { Metadata } from "next"; 2 + import { siteDescription, siteName, siteTitle } from "@/lib/site"; 2 3 import { Instrument_Serif, Instrument_Sans } from "next/font/google"; 3 4 import { Analytics } from "@vercel/analytics/next"; 4 5 import { SpeedInsights } from "@vercel/speed-insights/next"; ··· 17 18 weight: ["400", "500", "600", "700"], 18 19 }); 19 20 21 + /** Canonical site for metadata (OG, etc.). Override via NEXT_PUBLIC_SITE_URL if needed. */ 22 + const siteUrl = 23 + process.env.NEXT_PUBLIC_SITE_URL ?? 24 + (process.env.VERCEL_URL 25 + ? process.env.VERCEL_ENV === "production" 26 + ? "https://eny.social" 27 + : `https://${process.env.VERCEL_URL}` 28 + : "http://localhost:3000"); 29 + 30 + const ogImage = "/opengraph.png"; 31 + 20 32 export const metadata: Metadata = { 21 - title: "eny.social — A social network that belongs to the people", 22 - description: 23 - "No algorithms shaping your reality. Decentralized. Built and hosted in Europe. Starting in Offenbach.", 33 + metadataBase: new URL(siteUrl), 34 + title: siteTitle, 35 + description: siteDescription, 36 + openGraph: { 37 + type: "website", 38 + siteName, 39 + title: siteTitle, 40 + description: siteDescription, 41 + images: [ 42 + { 43 + url: ogImage, 44 + width: 1200, 45 + height: 630, 46 + alt: siteTitle, 47 + }, 48 + ], 49 + }, 50 + twitter: { 51 + card: "summary_large_image", 52 + title: siteTitle, 53 + description: siteDescription, 54 + images: [{ url: ogImage, alt: siteTitle }], 55 + }, 24 56 }; 25 57 26 58 export default function RootLayout({
+10
lib/site.ts
··· 1 + /** Site copy shared by layout metadata, OG image, and pages. */ 2 + 3 + export const siteName = "eny.social"; 4 + 5 + export const siteTagline = "A social network that belongs to the people"; 6 + 7 + export const siteDescription = 8 + "No algorithms shaping your reality. Decentralized. Built and hosted in Europe. Starting in Offenbach."; 9 + 10 + export const siteTitle = `${siteName} — ${siteTagline}`;
public/opengraph.png

This is a binary file and will not be displayed.