Skip to content

Commit 3b991a7

Browse files
committed
terms of use
1 parent 191fd4b commit 3b991a7

5 files changed

Lines changed: 204 additions & 0 deletions

File tree

bitext/src/lib/components/layout/SiteFooter.svelte

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
<a href={resolve('/skill')} class={linkClass}>Agent skill</a>
3131
<span class="mx-2 text-gray-400 dark:text-gray-600" aria-hidden="true">·</span>
3232
<a href={resolve('/privacy')} class={linkClass}>Privacy policy</a>
33+
<span class="mx-2 text-gray-400 dark:text-gray-600" aria-hidden="true">·</span>
34+
<a href={resolve('/terms')} class={linkClass}>Terms of use</a>
3335
</p>
3436
<p class="mx-auto mt-5 max-w-md text-base leading-relaxed text-gray-700 dark:text-gray-300">
3537
Created by

bitext/src/routes/privacy/+page.svelte

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
<a href={resolve('/')} class={linkClass}>← Back to {SITE_NAME}</a>
3636
<span class="text-gray-300 dark:text-gray-600" aria-hidden="true">·</span>
3737
<a href={resolve('/about')} class={linkClass}>About</a>
38+
<span class="text-gray-300 dark:text-gray-600" aria-hidden="true">·</span>
39+
<a href={resolve('/terms')} class={linkClass}>Terms of use</a>
3840
</nav>
3941

4042
<h1

bitext/src/routes/sitemap.xml/+server.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ ${entry(`${base}/about`)}
2121
${entry(`${base}/api`)}
2222
${entry(`${base}/skill`)}
2323
${entry(`${base}/privacy`)}
24+
${entry(`${base}/terms`)}
2425
</urlset>`;
2526
return new Response(body, {
2627
headers: {
Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
<script lang="ts">
2+
import { page } from '$app/state';
3+
import { resolve } from '$app/paths';
4+
import { SITE_CONTACT_EMAIL } from '$lib/brand.js';
5+
import { SITE_NAME } from '$lib/seo/metadata.js';
6+
7+
const TITLE = 'Terms of use';
8+
const DESCRIPTION =
9+
'Terms of use for Word Aligner: a free, no-account browser tool. Covers acceptable use, your content and uploaded fonts, the API and MCP server, warranty disclaimer, and liability.';
10+
11+
const canonical = $derived(page.url.origin + page.url.pathname);
12+
/** Last meaningful content review of these terms. Bump when wording changes. */
13+
const LAST_UPDATED = '2026-06-27';
14+
15+
const headingClass = 'font-heading mt-8 text-xl font-semibold text-gray-900 dark:text-white';
16+
const linkClass =
17+
'font-medium text-primary-700 underline decoration-primary-700/40 underline-offset-2 hover:text-primary-800 hover:decoration-primary-800 dark:text-primary-400 dark:decoration-primary-400/50 dark:hover:text-primary-300';
18+
</script>
19+
20+
<svelte:head>
21+
<title>{TITLE} · {SITE_NAME}</title>
22+
<meta name="description" content={DESCRIPTION} />
23+
<link rel="canonical" href={canonical} />
24+
<meta name="robots" content="index,follow" />
25+
<meta property="og:type" content="article" />
26+
<meta property="og:title" content={`${TITLE} · ${SITE_NAME}`} />
27+
<meta property="og:description" content={DESCRIPTION} />
28+
<meta property="og:url" content={canonical} />
29+
</svelte:head>
30+
31+
<main
32+
class="mx-auto w-full max-w-3xl min-w-0 px-4 pt-6 pb-16 leading-relaxed text-gray-700 sm:px-6 md:pt-10 dark:text-gray-300"
33+
>
34+
<nav class="mb-6 flex flex-wrap items-center gap-x-3 gap-y-1 text-sm">
35+
<a href={resolve('/')} class={linkClass}>← Back to {SITE_NAME}</a>
36+
<span class="text-gray-300 dark:text-gray-600" aria-hidden="true">·</span>
37+
<a href={resolve('/about')} class={linkClass}>About</a>
38+
<span class="text-gray-300 dark:text-gray-600" aria-hidden="true">·</span>
39+
<a href={resolve('/privacy')} class={linkClass}>Privacy policy</a>
40+
</nav>
41+
42+
<h1
43+
class="font-heading text-3xl font-semibold tracking-tight text-gray-900 sm:text-4xl dark:text-white"
44+
>
45+
Terms of use
46+
</h1>
47+
<p class="mt-2 text-sm text-gray-500 dark:text-gray-400">
48+
Last updated: <time datetime={LAST_UPDATED}>{LAST_UPDATED}</time>
49+
</p>
50+
51+
<p class="mt-6">
52+
These terms govern your use of <a href={resolve('/')} class={linkClass}>{SITE_NAME}</a> ("the tool",
53+
"the service", "we", "us"), a free, browser-based visualizer for word-by-word translations available
54+
at aligner.tinygods.dev. By using the tool, its example pages, its HTTP API, or its MCP server, you
55+
agree to these terms. If you do not agree, do not use the service.
56+
</p>
57+
58+
<h2 class={headingClass}>The service</h2>
59+
<p class="mt-3">
60+
The tool lets you align words across stacked lines of text, add gloss and IPA tiers, style the
61+
result, and export or share it. It is provided free of charge. There are no user accounts, and
62+
you do not need to register or provide an email address to use it. How data is handled is
63+
described in our <a href={resolve('/privacy')} class={linkClass}>privacy policy</a>.
64+
</p>
65+
<p class="mt-3">
66+
We may change, suspend, or discontinue any part of the service at any time, including the
67+
editor, the example pages, the API, and the MCP server, without notice and without liability to
68+
you.
69+
</p>
70+
71+
<h2 class={headingClass}>Your content</h2>
72+
<p class="mt-3">
73+
You keep all rights to the text, translations, glosses, and other content you enter into the
74+
tool ("your content"). We do not claim ownership of it. Because the tool has no backend that
75+
stores your content, your content stays in your browser and in the share URLs and exports you
76+
choose to create.
77+
</p>
78+
<p class="mt-3">
79+
You are responsible for your content. You represent that you have the necessary rights to the
80+
text you input and that your use of it, and of any diagram you create, share, or publish, does
81+
not infringe the rights of others or break any applicable law.
82+
</p>
83+
84+
<h2 class={headingClass}>Uploaded fonts</h2>
85+
<p class="mt-3">
86+
The tool lets you upload custom font files for use in your visualization. These files are stored
87+
only in your browser and are embedded in some export formats (for example, self-contained HTML
88+
and SVG). You are responsible for holding the licenses required to use and to embed any font you
89+
upload and any font you redistribute inside an exported file. We do not provide font licenses
90+
and are not a party to your font licensing.
91+
</p>
92+
93+
<h2 class={headingClass}>Acceptable use</h2>
94+
<p class="mt-3">You agree not to:</p>
95+
<ul class="mt-3 list-disc space-y-2 pl-6">
96+
<li>use the service in any way that breaks an applicable law or regulation;</li>
97+
<li>
98+
attempt to disrupt, overload, or impair the service, its infrastructure, or its networks,
99+
including through automated requests beyond reasonable use;
100+
</li>
101+
<li>
102+
probe, scan, or test the vulnerability of the service, or breach its security or
103+
authentication measures;
104+
</li>
105+
<li>
106+
use the service to create or distribute content that is unlawful, infringing, or harmful to
107+
others;
108+
</li>
109+
<li>
110+
misrepresent the source of an exported diagram in a way that violates the rights of others.
111+
</li>
112+
</ul>
113+
114+
<h2 class={headingClass}>API and MCP server</h2>
115+
<p class="mt-3">
116+
The tool exposes a free HTTP API and an MCP server. They are provided for reasonable, good-faith
117+
use. We may apply rate limits, change the request and response formats, require attribution, or
118+
withdraw access at any time. You must not use the API or MCP server in a way that degrades the
119+
service for others. Output you generate through the API or MCP server is subject to the same
120+
rules as content created in the editor, including your responsibilities for your content and for
121+
any fonts you supply.
122+
</p>
123+
124+
<h2 class={headingClass}>Intellectual property</h2>
125+
<p class="mt-3">
126+
The tool itself, including its software, design, text, and example pages, is owned by the author
127+
and protected by intellectual property laws. These terms do not grant you any right in the tool
128+
beyond using it as intended. The project's source code is published separately and is governed
129+
by the license stated in its repository; nothing here overrides that license.
130+
</p>
131+
<p class="mt-3">
132+
Diagrams you export are yours to use. Exports may include a small attribution line referencing
133+
aligner.tinygods.dev; you may keep it or remove it as you see fit.
134+
</p>
135+
136+
<h2 class={headingClass}>Third-party services and links</h2>
137+
<p class="mt-3">
138+
The tool loads third-party services (such as Google Fonts, Google Analytics, and the Tally
139+
feedback form) as described in the <a href={resolve('/privacy')} class={linkClass}
140+
>privacy policy</a
141+
>. Your use of those services is governed by their own terms.
142+
</p>
143+
<p class="mt-3">
144+
To help cover hosting costs, the tool may show partner or affiliate links to third-party
145+
products. If you follow such a link and use the service, we may receive a commission at no extra
146+
cost to you. These links do not change the price you pay, and we describe the products on their
147+
own merits. We are not responsible for third-party products, sites, or services, and listing a
148+
link is not an endorsement you should rely on without your own judgment.
149+
</p>
150+
151+
<h2 class={headingClass}>Disclaimer of warranties</h2>
152+
<p class="mt-3">
153+
The service is provided "as is" and "as available", without warranties of any kind, whether
154+
express or implied, including warranties of merchantability, fitness for a particular purpose,
155+
and non-infringement. We do not warrant that the service will be uninterrupted, error-free, or
156+
secure, that exports or share URLs will always render correctly, or that any defect will be
157+
corrected. You use the service at your own risk and are responsible for keeping your own copies
158+
of anything you need to retain.
159+
</p>
160+
161+
<h2 class={headingClass}>Limitation of liability</h2>
162+
<p class="mt-3">
163+
To the maximum extent permitted by law, the author and operator of the service will not be
164+
liable for any indirect, incidental, special, consequential, or punitive damages, or for any
165+
loss of data, work, or goodwill, arising out of or related to your use of, or inability to use,
166+
the service. The service is free, and to the extent any liability cannot be excluded, it is
167+
limited to the amount you paid to use the service, which is zero.
168+
</p>
169+
170+
<h2 class={headingClass}>Changes to these terms</h2>
171+
<p class="mt-3">
172+
We may update these terms from time to time. When we do, the "Last updated" date above will be
173+
bumped and the change will be reflected in the project's repository history. Your continued use
174+
of the service after a change means you accept the updated terms.
175+
</p>
176+
177+
<h2 class={headingClass}>Governing law</h2>
178+
<p class="mt-3">
179+
These terms are governed by the laws of the State of Israel, where the operator resides, without
180+
regard to conflict-of-law rules, and the competent courts of Israel have jurisdiction over any
181+
dispute arising from them. Nothing in these terms removes any mandatory consumer rights you have
182+
under the law of your own country of residence.
183+
</p>
184+
185+
<h2 class={headingClass}>Contact</h2>
186+
<p class="mt-3">
187+
Questions about these terms:
188+
<a class={linkClass} href={`mailto:${SITE_CONTACT_EMAIL}`}>{SITE_CONTACT_EMAIL}</a>
189+
<span class="text-gray-400 dark:text-gray-600"> · </span>
190+
the
191+
<a
192+
class={linkClass}
193+
href="https://danipolani.github.io/en/"
194+
target="_blank"
195+
rel="noopener noreferrer">author's site</a
196+
>, or the in-app "Send feedback" form.
197+
</p>
198+
</main>

bitext/src/routes/terms/+page.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const prerender = true;

0 commit comments

Comments
 (0)