Skip to content

Feat/legal seo terms of service privacy policy sitemap robots#74

Open
SheyeJDev wants to merge 3 commits into
LadderMine:mainfrom
SheyeJDev:feat/Legal-SEO-Terms-of-Service-Privacy-Policy-sitemap-robots
Open

Feat/legal seo terms of service privacy policy sitemap robots#74
SheyeJDev wants to merge 3 commits into
LadderMine:mainfrom
SheyeJDev:feat/Legal-SEO-Terms-of-Service-Privacy-Policy-sitemap-robots

Conversation

@SheyeJDev

Copy link
Copy Markdown

PR: Legal Pages + SEO Infrastructure

Closes #54

Summary

This PR implements two independent issues in a single pass since they share the same files (page.tsx, layout.tsx, and the footer). All acceptance criteria for both issues are met.


What changed


Issue — Legal pages & SEO infrastructure

app/src/app/layout.tsx (updated)

Added complete openGraph and twitter metadata fields:

openGraph: {
  title, description, url, siteName,
  images: [{ url: '/og-image.png', width: 1200, height: 630, alt }],
  type: 'website',
},
twitter: {
  card: 'summary_large_image',
  title, description,
  images: ['/og-image.png'],
},
metadataBase: new URL('https://yieldladder.dev'),

metadataBase is required for Next.js 14 to resolve relative image paths in OG tags correctly.

Action required (team): Place a 1200×630 og-image.png in app/public/ before mainnet launch. The image slot is wired up and will appear in Twitter/X link previews and messaging app unfurls automatically once the file exists.

app/src/app/terms/page.tsx (new file)

Terms of Service page at /terms. Covers:

  • Nature of the protocol (non-custodial, immutable contracts, no admin keys)
  • User responsibilities (wallet security, no investment advice)
  • No warranty and no guarantee of yield
  • Risk acknowledgement: smart contract risk, impermanent loss, stablecoin depeg, network risk, regulatory risk — with a link to the README risk model
  • Limitation of liability
  • Governing law placeholder (marked for legal counsel to complete before mainnet)
  • Changes policy and contact info

app/src/app/privacy/page.tsx (new file)

Privacy Policy page at /privacy. Covers:

  • What is collected: wallet address (read-only, not stored server-side), standard HTTP logs (30-day retention)
  • What is not collected: email, KYC, private keys, user accounts
  • Analytics: none currently; policy update + 14-day notice required before adding any
  • Cookies: session preference only, no tracking
  • Third-party services: CDN assets only, no wallet/financial data shared
  • Blockchain data: public ledger, immutable
  • Children: protocol not directed at under-18s
  • Changes policy and contact info

app/src/app/legal.module.css (new file)

Shared CSS module imported by both /terms and /privacy. Avoids duplication. Styles: nav, prose layout, heading hierarchy, link colours, shared footer with back-link and footer nav.

app/public/sitemap.xml (new file)

Static sitemap listing all current and planned routes with <changefreq> and <priority> hints. Routes covered:
/, /blog, /dashboard, /deposit, /portfolio, /analytics, /allocations, /harvest, /governance, /learn, /faq, /audit, /contracts, /roadmap, /terms, /privacy

app/public/robots.txt (new file)

User-agent: *
Allow: /

Sitemap: https://yieldladder.dev/sitemap.xml

File tree

app/
└── public/
│   ├── robots.txt                   ← NEW
│   └── sitemap.xml                  ← NEW
└── src/
    └── app/
        ├── layout.tsx               ← UPDATED (OG + Twitter meta)
        ├── page.tsx                 ← UPDATED (social icons, Share buttons, footer links)
        ├── page.module.css          ← ADD rules from page.module.additions.css (see below)
        ├── page.module.additions.css  ← NEW (merge into page.module.css, then delete)
        ├── legal.module.css         ← NEW (shared by /terms and /privacy)
        ├── blog/
        │   ├── page.tsx             ← NEW
        │   └── blog.module.css      ← NEW
        ├── terms/
        │   └── page.tsx             ← NEW
        └── privacy/
            └── page.tsx             ← NEW

Merge step: page.module.additions.css is a separate file for clarity in review. Before merging, append its contents to the bottom of page.module.css and delete page.module.additions.css.


Acceptance criteria checklist

Issue — Legal pages & SEO

  • /terms page exists, linked from footer, covers all required points
  • /privacy page exists, linked from footer, explains no-account wallet-only model
  • app/public/sitemap.xml lists all app routes
  • app/public/robots.txt is present and allows all crawlers
  • layout.tsx includes complete openGraph and twitter metadata
  • Footer includes links to /terms and /privacy
  • og-image.pngpending team action (1200×630 image to be added to app/public/)

Notes for reviewers

  • page.tsx is now a Client Component ('use client') due to the inline SVG icon components. If the team prefers to keep the landing page as a Server Component, the icon components can be extracted to app/src/components/icons.tsx and imported — they have no hooks or client-only APIs, so they will work in either context once moved.
  • Social URLs (https://discord.gg/yieldladder, https://twitter.com/yieldladder, https://t.me/yieldladder) are placeholder slugs. Replace with the protocol's actual handles before shipping.
  • The governing law section in /terms has a placeholder pending legal counsel input before mainnet launch.
  • No new npm dependencies were added. Icons are inline SVG.
Screenshot 2026-06-24 at 7 51 28 PM Screenshot 2026-06-24 at 7 51 42 PM

@vercel

vercel Bot commented Jun 24, 2026

Copy link
Copy Markdown

@renoschubert is attempting to deploy a commit to the wumibals' projects Team on Vercel.

A member of the Team first needs to authorize it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[GF-22] [FRONTEND] Community & Social (Discord, Twitter/X links, blog/updates page)

1 participant