···11+export { default as Button } from "./Button";
22+export { default as Avatar } from "./Avatar";
33+export { default as Tabs } from "./Tabs";
44+export { default as Input } from "./Input";
55+export { default as Skeleton, SkeletonCard } from "./Skeleton";
66+export { default as EmptyState } from "./EmptyState";
77+export { default as Badge, CountBadge } from "./Badge";
···11+---
22+import BaseLayout from '../layouts/BaseLayout.astro';
33+---
44+55+<BaseLayout title="Privacy Policy - Margin" description="Margin Privacy Policy">
66+ <div class="max-w-3xl mx-auto py-12 px-4">
77+ <a href="/home" class="inline-flex items-center gap-2 text-sm font-medium text-surface-500 hover:text-surface-900 dark:hover:text-white transition-colors mb-8">
88+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m12 19-7-7 7-7"/><path d="M19 12H5"/></svg>
99+ <span>Home</span>
1010+ </a>
1111+1212+ <div class="prose prose-surface dark:prose-invert max-w-none">
1313+ <h1 class="font-display font-bold text-3xl mb-2 text-surface-900 dark:text-white">Privacy Policy</h1>
1414+ <p class="text-surface-500 dark:text-surface-400 mb-8">Last updated: January 11, 2026</p>
1515+1616+ <section class="mb-8">
1717+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">Overview</h2>
1818+ <p class="text-surface-700 dark:text-surface-300 leading-relaxed">
1919+ Margin ("we", "our", or "us") is a web annotation tool that lets you highlight, annotate, and bookmark any webpage. Your data is stored on the decentralized AT Protocol network, giving you ownership and control over your content.
2020+ </p>
2121+ </section>
2222+2323+ <section class="mb-8">
2424+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">Data We Collect</h2>
2525+ <h3 class="text-lg font-semibold text-surface-900 dark:text-white mb-2">Account Information</h3>
2626+ <p class="text-surface-700 dark:text-surface-300 mb-4">
2727+ When you log in with your Bluesky/AT Protocol account, we access your:
2828+ </p>
2929+ <ul class="list-disc pl-5 mb-4 text-surface-700 dark:text-surface-300 space-y-1">
3030+ <li>Decentralized Identifier (DID)</li>
3131+ <li>Handle (username)</li>
3232+ <li>Display name and avatar (for showing your profile)</li>
3333+ </ul>
3434+3535+ <h3 class="text-lg font-semibold text-surface-900 dark:text-white mb-2">Annotations & Content</h3>
3636+ <p class="text-surface-700 dark:text-surface-300 mb-4">When you use Margin, we store:</p>
3737+ <ul class="list-disc pl-5 mb-4 text-surface-700 dark:text-surface-300 space-y-1">
3838+ <li>URLs of pages you annotate</li>
3939+ <li>Text you highlight or select</li>
4040+ <li>Annotations and comments you create</li>
4141+ <li>Bookmarks you save</li>
4242+ <li>Collections you organize content into</li>
4343+ </ul>
4444+4545+ <h3 class="text-lg font-semibold text-surface-900 dark:text-white mb-2">Authentication</h3>
4646+ <p class="text-surface-700 dark:text-surface-300 mb-4">
4747+ We store OAuth session tokens locally in your browser to keep you logged in. These tokens are used solely for authenticating API requests.
4848+ </p>
4949+ </section>
5050+5151+ <section class="mb-8">
5252+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">How We Use Your Data</h2>
5353+ <p class="text-surface-700 dark:text-surface-300 mb-4">Your data is used exclusively to:</p>
5454+ <ul class="list-disc pl-5 mb-4 text-surface-700 dark:text-surface-300 space-y-1">
5555+ <li>Display your annotations on webpages</li>
5656+ <li>Sync your content across devices</li>
5757+ <li>Show your public annotations to other users</li>
5858+ <li>Enable social features like replies and likes</li>
5959+ </ul>
6060+ </section>
6161+6262+ <section class="mb-8">
6363+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">Data Storage</h2>
6464+ <p class="text-surface-700 dark:text-surface-300 mb-4">
6565+ Your annotations are stored on the AT Protocol network through your Personal Data Server (PDS). This means:
6666+ </p>
6767+ <ul class="list-disc pl-5 mb-4 text-surface-700 dark:text-surface-300 space-y-1">
6868+ <li>You own your data</li>
6969+ <li>You can export or delete it at any time</li>
7070+ <li>Your data is portable across AT Protocol services</li>
7171+ </ul>
7272+ <p class="text-surface-700 dark:text-surface-300">
7373+ We also maintain a local index of annotations to provide faster search and discovery features.
7474+ </p>
7575+ </section>
7676+7777+ <section class="mb-8">
7878+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">Data Sharing</h2>
7979+ <p class="text-surface-700 dark:text-surface-300 mb-4">
8080+ <strong>We do not sell your data.</strong> We do not share your data with third parties for advertising or marketing purposes.
8181+ </p>
8282+ <p class="text-surface-700 dark:text-surface-300 mb-4">Your public annotations may be visible to:</p>
8383+ <ul class="list-disc pl-5 mb-4 text-surface-700 dark:text-surface-300 space-y-1">
8484+ <li>Other Margin users viewing the same webpage</li>
8585+ <li>Anyone on the AT Protocol network (for public content)</li>
8686+ </ul>
8787+ </section>
8888+8989+ <section class="mb-8">
9090+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">Browser Extension Permissions</h2>
9191+ <p class="text-surface-700 dark:text-surface-300 mb-4">The Margin browser extension requires certain permissions:</p>
9292+ <ul class="list-disc pl-5 mb-4 text-surface-700 dark:text-surface-300 space-y-1">
9393+ <li><strong>All URLs:</strong> To display and create annotations on any webpage</li>
9494+ <li><strong>Storage:</strong> To save your preferences and session locally</li>
9595+ <li><strong>Cookies:</strong> To maintain your logged-in session</li>
9696+ <li><strong>Tabs:</strong> To know which page you're viewing</li>
9797+ </ul>
9898+ </section>
9999+100100+ <section class="mb-8">
101101+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">Your Rights</h2>
102102+ <p class="text-surface-700 dark:text-surface-300 mb-4">You can:</p>
103103+ <ul class="list-disc pl-5 mb-4 text-surface-700 dark:text-surface-300 space-y-1">
104104+ <li>Delete any annotation, highlight, or bookmark you've created</li>
105105+ <li>Delete your collections</li>
106106+ <li>Export your data from your PDS</li>
107107+ <li>Revoke the extension's access at any time</li>
108108+ </ul>
109109+ </section>
110110+111111+ <section class="mb-8">
112112+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">Contact</h2>
113113+ <p class="text-surface-700 dark:text-surface-300">
114114+ For privacy questions or concerns, contact us at <a href="mailto:hello@margin.at" class="text-primary-600 dark:text-primary-400 hover:text-primary-700 dark:hover:text-primary-300 hover:underline">hello@margin.at</a>
115115+ </p>
116116+ </section>
117117+ </div>
118118+ </div>
119119+</BaseLayout>
+67
web/src/pages/terms.astro
···11+---
22+import BaseLayout from '../layouts/BaseLayout.astro';
33+---
44+55+<BaseLayout title="Terms of Service - Margin" description="Margin Terms of Service">
66+ <div class="max-w-3xl mx-auto py-12 px-4">
77+ <a href="/home" class="inline-flex items-center gap-2 text-sm font-medium text-surface-500 hover:text-surface-900 dark:hover:text-white transition-colors mb-8">
88+ <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m12 19-7-7 7-7"/><path d="M19 12H5"/></svg>
99+ <span>Home</span>
1010+ </a>
1111+1212+ <div class="prose prose-surface dark:prose-invert max-w-none">
1313+ <h1 class="font-display font-bold text-3xl mb-2 text-surface-900 dark:text-white">Terms of Service</h1>
1414+ <p class="text-surface-500 dark:text-surface-400 mb-8">Last updated: January 17, 2026</p>
1515+1616+ <section class="mb-8">
1717+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">Overview</h2>
1818+ <p class="text-surface-700 dark:text-surface-300 leading-relaxed">
1919+ Margin is an open-source project. By using our service, you agree to these terms ("Terms"). If you do not agree to these Terms, please do not use the Service.
2020+ </p>
2121+ </section>
2222+2323+ <section class="mb-8">
2424+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">Open Source</h2>
2525+ <p class="text-surface-700 dark:text-surface-300 leading-relaxed">
2626+ Margin is open source software. The code is available publicly and is provided "as is", without warranty of any kind, express or implied.
2727+ </p>
2828+ </section>
2929+3030+ <section class="mb-8">
3131+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">User Conduct</h2>
3232+ <p class="text-surface-700 dark:text-surface-300 mb-4">
3333+ You are responsible for your use of the Service and for any content you provide, including compliance with applicable laws, rules, and regulations.
3434+ </p>
3535+ <p class="text-surface-700 dark:text-surface-300 mb-4">
3636+ We reserve the right to remove any content that violates these terms, including but not limited to:
3737+ </p>
3838+ <ul class="list-disc pl-5 mb-4 text-surface-700 dark:text-surface-300 space-y-1">
3939+ <li>Illegal content</li>
4040+ <li>Harassment or hate speech</li>
4141+ <li>Spam or malicious content</li>
4242+ </ul>
4343+ </section>
4444+4545+ <section class="mb-8">
4646+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">Decentralized Nature</h2>
4747+ <p class="text-surface-700 dark:text-surface-300 leading-relaxed">
4848+ Margin interacts with the AT Protocol network. We do not control the network itself or the data stored on your Personal Data Server (PDS). Please refer to the terms of your PDS provider for data storage policies.
4949+ </p>
5050+ </section>
5151+5252+ <section class="mb-8">
5353+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">Disclaimer</h2>
5454+ <p class="text-surface-700 dark:text-surface-300 leading-relaxed uppercase">
5555+ THE SERVICE IS PROVIDED "AS IS" AND "AS AVAILABLE". WE DISCLAIM ALL CONDITIONS, REPRESENTATIONS AND WARRANTIES NOT EXPRESSLY SET OUT IN THESE TERMS.
5656+ </p>
5757+ </section>
5858+5959+ <section class="mb-8">
6060+ <h2 class="text-xl font-bold text-surface-900 dark:text-white mb-4">Contact</h2>
6161+ <p class="text-surface-700 dark:text-surface-300">
6262+ For questions about these Terms, please contact us at <a href="mailto:hello@margin.at" class="text-primary-600 dark:text-primary-400 hover:text-primary-700 dark:hover:text-primary-300 hover:underline">hello@margin.at</a>
6363+ </p>
6464+ </section>
6565+ </div>
6666+ </div>
6767+</BaseLayout>
···11-22-import React from 'react';
33-import { ArrowLeft } from 'lucide-react';
44-import { Link } from 'react-router-dom';
55-66-export default function Privacy() {
77- return (
88- <div className="max-w-3xl mx-auto py-12 px-4">
99- <Link to="/home" className="inline-flex items-center gap-2 text-sm font-medium text-surface-500 hover:text-surface-900 transition-colors mb-8">
1010- <ArrowLeft size={18} />
1111- <span>Home</span>
1212- </Link>
1313-1414- <div className="prose prose-surface max-w-none">
1515- <h1 className="font-display font-bold text-3xl mb-2 text-surface-900">Privacy Policy</h1>
1616- <p className="text-surface-500 mb-8">Last updated: January 11, 2026</p>
1717-1818- <section className="mb-8">
1919- <h2 className="text-xl font-bold text-surface-900 mb-4">Overview</h2>
2020- <p className="text-surface-700 leading-relaxed">
2121- Margin ("we", "our", or "us") is a web annotation tool that lets you highlight, annotate, and bookmark any webpage. Your data is stored on the decentralized AT Protocol network, giving you ownership and control over your content.
2222- </p>
2323- </section>
2424-2525- <section className="mb-8">
2626- <h2 className="text-xl font-bold text-surface-900 mb-4">Data We Collect</h2>
2727- <h3 className="text-lg font-semibold text-surface-900 mb-2">Account Information</h3>
2828- <p className="text-surface-700 mb-4">
2929- When you log in with your Bluesky/AT Protocol account, we access your:
3030- </p>
3131- <ul className="list-disc pl-5 mb-4 text-surface-700 space-y-1">
3232- <li>Decentralized Identifier (DID)</li>
3333- <li>Handle (username)</li>
3434- <li>Display name and avatar (for showing your profile)</li>
3535- </ul>
3636-3737- <h3 className="text-lg font-semibold text-surface-900 mb-2">Annotations & Content</h3>
3838- <p className="text-surface-700 mb-4">When you use Margin, we store:</p>
3939- <ul className="list-disc pl-5 mb-4 text-surface-700 space-y-1">
4040- <li>URLs of pages you annotate</li>
4141- <li>Text you highlight or select</li>
4242- <li>Annotations and comments you create</li>
4343- <li>Bookmarks you save</li>
4444- <li>Collections you organize content into</li>
4545- </ul>
4646-4747- <h3 className="text-lg font-semibold text-surface-900 mb-2">Authentication</h3>
4848- <p className="text-surface-700 mb-4">
4949- We store OAuth session tokens locally in your browser to keep you logged in. These tokens are used solely for authenticating API requests.
5050- </p>
5151- </section>
5252-5353- <section className="mb-8">
5454- <h2 className="text-xl font-bold text-surface-900 mb-4">How We Use Your Data</h2>
5555- <p className="text-surface-700 mb-4">Your data is used exclusively to:</p>
5656- <ul className="list-disc pl-5 mb-4 text-surface-700 space-y-1">
5757- <li>Display your annotations on webpages</li>
5858- <li>Sync your content across devices</li>
5959- <li>Show your public annotations to other users</li>
6060- <li>Enable social features like replies and likes</li>
6161- </ul>
6262- </section>
6363-6464- <section className="mb-8">
6565- <h2 className="text-xl font-bold text-surface-900 mb-4">Data Storage</h2>
6666- <p className="text-surface-700 mb-4">
6767- Your annotations are stored on the AT Protocol network through your Personal Data Server (PDS). This means:
6868- </p>
6969- <ul className="list-disc pl-5 mb-4 text-surface-700 space-y-1">
7070- <li>You own your data</li>
7171- <li>You can export or delete it at any time</li>
7272- <li>Your data is portable across AT Protocol services</li>
7373- </ul>
7474- <p className="text-surface-700">
7575- We also maintain a local index of annotations to provide faster search and discovery features.
7676- </p>
7777- </section>
7878-7979- <section className="mb-8">
8080- <h2 className="text-xl font-bold text-surface-900 mb-4">Data Sharing</h2>
8181- <p className="text-surface-700 mb-4">
8282- <strong>We do not sell your data.</strong> We do not share your data with third parties for advertising or marketing purposes.
8383- </p>
8484- <p className="text-surface-700 mb-4">Your public annotations may be visible to:</p>
8585- <ul className="list-disc pl-5 mb-4 text-surface-700 space-y-1">
8686- <li>Other Margin users viewing the same webpage</li>
8787- <li>Anyone on the AT Protocol network (for public content)</li>
8888- </ul>
8989- </section>
9090-9191- <section className="mb-8">
9292- <h2 className="text-xl font-bold text-surface-900 mb-4">Browser Extension Permissions</h2>
9393- <p className="text-surface-700 mb-4">The Margin browser extension requires certain permissions:</p>
9494- <ul className="list-disc pl-5 mb-4 text-surface-700 space-y-1">
9595- <li><strong>All URLs:</strong> To display and create annotations on any webpage</li>
9696- <li><strong>Storage:</strong> To save your preferences and session locally</li>
9797- <li><strong>Cookies:</strong> To maintain your logged-in session</li>
9898- <li><strong>Tabs:</strong> To know which page you're viewing</li>
9999- </ul>
100100- </section>
101101-102102- <section className="mb-8">
103103- <h2 className="text-xl font-bold text-surface-900 mb-4">Your Rights</h2>
104104- <p className="text-surface-700 mb-4">You can:</p>
105105- <ul className="list-disc pl-5 mb-4 text-surface-700 space-y-1">
106106- <li>Delete any annotation, highlight, or bookmark you've created</li>
107107- <li>Delete your collections</li>
108108- <li>Export your data from your PDS</li>
109109- <li>Revoke the extension's access at any time</li>
110110- </ul>
111111- </section>
112112-113113- <section className="mb-8">
114114- <h2 className="text-xl font-bold text-surface-900 mb-4">Contact</h2>
115115- <p className="text-surface-700">
116116- For privacy questions or concerns, contact us at <a href="mailto:hello@margin.at" className="text-primary-600 hover:text-primary-700 hover:underline">hello@margin.at</a>
117117- </p>
118118- </section>
119119- </div>
120120- </div>
121121- );
122122-}
···11-22-import React from 'react';
33-import { ArrowLeft } from 'lucide-react';
44-import { Link } from 'react-router-dom';
55-66-export default function Terms() {
77- return (
88- <div className="max-w-3xl mx-auto py-12 px-4">
99- <Link to="/home" className="inline-flex items-center gap-2 text-sm font-medium text-surface-500 hover:text-surface-900 transition-colors mb-8">
1010- <ArrowLeft size={18} />
1111- <span>Home</span>
1212- </Link>
1313-1414- <div className="prose prose-surface max-w-none">
1515- <h1 className="font-display font-bold text-3xl mb-2 text-surface-900">Terms of Service</h1>
1616- <p className="text-surface-500 mb-8">Last updated: January 17, 2026</p>
1717-1818- <section className="mb-8">
1919- <h2 className="text-xl font-bold text-surface-900 mb-4">Overview</h2>
2020- <p className="text-surface-700 leading-relaxed">
2121- Margin is an open-source project. By using our service, you agree to these terms ("Terms"). If you do not agree to these Terms, please do not use the Service.
2222- </p>
2323- </section>
2424-2525- <section className="mb-8">
2626- <h2 className="text-xl font-bold text-surface-900 mb-4">Open Source</h2>
2727- <p className="text-surface-700 leading-relaxed">
2828- Margin is open source software. The code is available publicly and is provided "as is", without warranty of any kind, express or implied.
2929- </p>
3030- </section>
3131-3232- <section className="mb-8">
3333- <h2 className="text-xl font-bold text-surface-900 mb-4">User Conduct</h2>
3434- <p className="text-surface-700 mb-4">
3535- You are responsible for your use of the Service and for any content you provide, including compliance with applicable laws, rules, and regulations.
3636- </p>
3737- <p className="text-surface-700 mb-4">
3838- We reserve the right to remove any content that violates these terms, including but not limited to:
3939- </p>
4040- <ul className="list-disc pl-5 mb-4 text-surface-700 space-y-1">
4141- <li>Illegal content</li>
4242- <li>Harassment or hate speech</li>
4343- <li>Spam or malicious content</li>
4444- </ul>
4545- </section>
4646-4747- <section className="mb-8">
4848- <h2 className="text-xl font-bold text-surface-900 mb-4">Decentralized Nature</h2>
4949- <p className="text-surface-700 leading-relaxed">
5050- Margin interacts with the AT Protocol network. We do not control the network itself or the data stored on your Personal Data Server (PDS). Please refer to the terms of your PDS provider for data storage policies.
5151- </p>
5252- </section>
5353-5454- <section className="mb-8">
5555- <h2 className="text-xl font-bold text-surface-900 mb-4">Disclaimer</h2>
5656- <p className="text-surface-700 leading-relaxed uppercase">
5757- THE SERVICE IS PROVIDED "AS IS" AND "AS AVAILABLE". WE DISCLAIM ALL CONDITIONS, REPRESENTATIONS AND WARRANTIES NOT EXPRESSLY SET OUT IN THESE TERMS.
5858- </p>
5959- </section>
6060-6161- <section className="mb-8">
6262- <h2 className="text-xl font-bold text-surface-900 mb-4">Contact</h2>
6363- <p className="text-surface-700">
6464- For questions about these Terms, please contact us at <a href="mailto:hello@margin.at" className="text-primary-600 hover:text-primary-700 hover:underline">hello@margin.at</a>
6565- </p>
6666- </section>
6767- </div>
6868- </div>
6969- );
7070-}