Overview
This issue is independent — it can be worked in parallel with any other issue.
Add the legal pages and SEO infrastructure required before real users interact with the protocol. Terms of Service and Privacy Policy are baseline requirements whenever users deposit funds. The SEO files (sitemap.xml, robots.txt) are missing entirely.
Problem
- No Terms of Service page exists
- No Privacy Policy page exists
- No
sitemap.xml — search engines cannot efficiently crawl and index the app
- No
robots.txt — search engine crawler behaviour is undefined
app/src/app/layout.tsx sets title and description metadata but has no openGraph or twitter card metadata, meaning link previews on Twitter/X and in messaging apps show no image and minimal info
Proposed Solution
1. /terms page (app/src/app/terms/page.tsx)
A Terms of Service page covering:
- Nature of the protocol (non-custodial, smart contract interaction)
- User responsibilities (wallet security, understanding of risk)
- No warranty and no guarantee of yield
- Risk acknowledgement (smart contract risk, impermanent loss, stablecoin depeg)
- Jurisdiction and governing law section (to be filled by legal counsel)
- Reference to the risk model in the README
2. /privacy page (app/src/app/privacy/page.tsx)
A Privacy Policy covering:
- What data is collected (wallet address when connected; no emails, no KYC)
- What is not collected (the protocol is non-custodial and has no backend user accounts)
- Use of analytics (if any)
- Cookie policy
3. sitemap.xml (app/public/sitemap.xml)
Static sitemap listing all routes:
/, /dashboard, /deposit, /portfolio
/analytics, /allocations, /harvest, /governance
/learn, /faq, /audit, /contracts, /roadmap
/terms, /privacy
4. robots.txt (app/public/robots.txt)
User-agent: *
Allow: /
Sitemap: https://yieldladder.dev/sitemap.xml
5. Complete OpenGraph and Twitter Card meta in layout.tsx
openGraph: {
title: 'YieldLadder — Time-Locked USDC Vaults on Stellar',
description: '...',
url: 'https://yieldladder.dev',
images: [{ url: '/og-image.png', width: 1200, height: 630 }],
type: 'website',
},
twitter: {
card: 'summary_large_image',
title: '...',
description: '...',
images: ['/og-image.png'],
}
6. Footer links
Add Terms and Privacy links to the footer in app/src/app/page.tsx.
Acceptance Criteria
Overview
This issue is independent — it can be worked in parallel with any other issue.
Add the legal pages and SEO infrastructure required before real users interact with the protocol. Terms of Service and Privacy Policy are baseline requirements whenever users deposit funds. The SEO files (
sitemap.xml,robots.txt) are missing entirely.Problem
sitemap.xml— search engines cannot efficiently crawl and index the approbots.txt— search engine crawler behaviour is undefinedapp/src/app/layout.tsxsetstitleanddescriptionmetadata but has noopenGraphortwittercard metadata, meaning link previews on Twitter/X and in messaging apps show no image and minimal infoProposed Solution
1.
/termspage (app/src/app/terms/page.tsx)A Terms of Service page covering:
2.
/privacypage (app/src/app/privacy/page.tsx)A Privacy Policy covering:
3.
sitemap.xml(app/public/sitemap.xml)Static sitemap listing all routes:
/,/dashboard,/deposit,/portfolio/analytics,/allocations,/harvest,/governance/learn,/faq,/audit,/contracts,/roadmap/terms,/privacy4.
robots.txt(app/public/robots.txt)5. Complete OpenGraph and Twitter Card meta in
layout.tsx6. Footer links
Add
TermsandPrivacylinks to the footer inapp/src/app/page.tsx.Acceptance Criteria
/termspage exists, is linked from the footer, and covers all points listed above/privacypage exists, is linked from the footer, and explains the no-account, wallet-only modelapp/public/sitemap.xmllists all app routes with correct URLsapp/public/robots.txtis present and allows all crawlerslayout.tsxincludes completeopenGraphandtwittermetadataog-image.png/termsand/privacy