Code — how this page is built

Under the hood

The actual source of the components on this page, read straight from the repo. Copy it, read it, or open it on GitHub.


The manifesto page. A server component: it renders the WebSite + Person JSON-LD, the answer-first statement as the H1, and the giant footer wordmark, all wrapped in the three-lens shell. No visible top bar — navigation lives on the landing wheel.

import type { Metadata } from 'next';

import Link from 'next/link';

import { Jsonld } from '@/components/Jsonld';
import { SocialLinks } from '@/components/landing/SocialLinks';
import { PageFrame } from '@/components/shell/PageFrame';
import type { CodeRef, TaggingData } from '@/lib/lens';
import { normalizeView } from '@/lib/lens';
import { absoluteUrl, pageMetadata, personJsonLd, websiteJsonLd } from '@/lib/seo';

import styles from './home.module.css';

const TITLE = 'Home';
const STATEMENT =
  'kaspirius is a space for me. a name. a persona. pictures, writing, small software, and random pieces of information that never really have a specific theme. Long ago, I used to have random pages saved in my bookmarks, my goal is for you to use some of these pieces for the same purpose.';
const DESCRIPTION =
  'kaspirius is a space for me — a name, a persona. Pictures, writing, small software, and random pieces of information with no specific theme. Like the random pages once saved in your bookmarks.';

export const metadata: Metadata = pageMetadata({
  title: TITLE,
  description: DESCRIPTION,
  path: '/home',
});

const CODE_REFS: CodeRef[] = [
  {
    title: 'Home page',
    file: 'app/home/page.tsx',
    explanation:
      'The manifesto page. A server component: it renders the WebSite + Person JSON-LD, the answer-first statement as the H1, and the giant footer wordmark, all wrapped in the three-lens shell. No visible top bar — navigation lives on the landing wheel.',
  },
];

function HomeContent() {
  return (
    <div className={styles.root}>
      {/* No visible top bar — kept crawlable for internal linking / GEO. */}
      <nav className="sr-only" aria-label="Sections">
        <Link href="/">kaspirius</Link>
        <Link href="/articles">Articles</Link>
        <Link href="/content">Content</Link>
      </nav>

      <section className={styles.statement}>
        <h1 className={styles.statementText}>{STATEMENT}</h1>
      </section>

      <div className={styles.footer} aria-hidden="true">
        <span>anything</span>
        <span className={styles.dot} />
        <span>and</span>
        <span className={styles.dot} />
        <span>nothing</span>
      </div>
    </div>
  );
}

export default async function HomePage({
  searchParams,
}: {
  searchParams: Promise<{ view?: string }>;
}) {
  const { view: rawView } = await searchParams;
  const view = normalizeView(rawView);

  const jsonLd = [websiteJsonLd(), { '@context': 'https://schema.org', ...personJsonLd() }];

  const tagging: TaggingData = {
    title: TITLE,
    description: DESCRIPTION,
    canonical: absoluteUrl('/home'),
    headings: [{ level: 1, text: STATEMENT }],
    jsonLd,
  };

  return (
    <>
      <Jsonld data={jsonLd} />
      <PageFrame
        view={view}
        basePath="/home"
        content={<HomeContent />}
        tagging={tagging}
        code={CODE_REFS}
        bottomExtra={<SocialLinks />}
      />
    </>
  );
}
↖ kaspirius