ghostguild-org/app/pages/policies/terms.vue
Jennie Robinson Faber c5e901ed24 feat(signup): community guidelines agreement and policies routes
Introduces /community-guidelines and /policies/{privacy,terms,[slug]} pages,
swaps the signup/invite checkbox from agreedToTerms to agreedToGuidelines,
adds Member.agreement.acceptedAt, and stamps the field when a Helcim
customer is created.
2026-04-18 17:06:10 +01:00

357 lines
12 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<PageShell title="Terms of Service" subtitle="Using ghostguild.org and wiki.ghostguild.org">
<div class="policy-prose">
<p class="policy-updated">Last updated: April 18, 2026</p>
<section class="policy-section">
<p>
These terms apply to your use of ghostguild.org and
wiki.ghostguild.org, run by Baby Ghosts (a Canadian non-profit). The
<NuxtLink to="/community-guidelines">Member Agreement</NuxtLink> and
<NuxtLink to="/policies/code-of-conduct">Code of Conduct</NuxtLink>
also apply if you're a member; they sit alongside these terms, and
the more specific document wins if there's ever a conflict.
</p>
</section>
<section class="policy-section">
<h2>Who can use Ghost Guild</h2>
<p>You can browse public pages without an account.</p>
<p>
To become a member, you have to be 18 or older, complete an
application, and be accepted by the Membership Committee. Membership
is reviewed against our values and processes; we can decline
applications, and we don't always provide detailed reasons.
</p>
</section>
<section class="policy-section">
<h2>Your account</h2>
<p>
You're responsible for what happens under your account. Don't share
login credentials. If you suspect unauthorized access, tell us at
<a href="mailto:hello@ghostguild.org">hello@ghostguild.org</a>.
</p>
<p>
We may suspend or close accounts that violate these terms, the
<NuxtLink to="/policies/code-of-conduct">Code of Conduct</NuxtLink>,
or the
<NuxtLink to="/community-guidelines">Member Agreement</NuxtLink>. The
process for that lives in our
<NuxtLink to="/policies/conflict-resolution">Conflict Resolution Policy</NuxtLink>.
</p>
<p>
We don't suspend or close accounts because a payment didn't go
through. If there's a problem with your contribution, we'll reach
out.
</p>
</section>
<section class="policy-section">
<h2>Membership and dues</h2>
<p>
Membership runs annually and renews unless you cancel. You can pay
your annual dues all at once or in monthly installments; both result
in the same annual membership.
</p>
<p>
Dues are pay-what-you-can: you choose your contribution, and you can
change it any time as your situation changes. The full pricing
structure is on the membership page.
</p>
<p>
We don't refund dues. If paying ever becomes a problem, the
Solidarity Fund is there for that reason; reach out and we'll work it
out.
</p>
</section>
<section class="policy-section">
<h2>Acceptable use</h2>
<p>
The
<NuxtLink to="/policies/code-of-conduct">Code of Conduct</NuxtLink>
governs how members behave in Ghost Guild spaces. Some basics that
also apply here:
</p>
<ul>
<li>Don't harass, harm, or discriminate against other members</li>
<li>
Don't share other members' content (Slack messages, profile
information, bulletin board posts, application materials, private
comments) outside the community without their consent
</li>
<li>
Don't feed community content, including other members'
contributions, into generative AI tools
</li>
<li>
Don't use Ghost Guild for illegal activity, spam, or attempts to
compromise the platform
</li>
<li>
Don't impersonate others or misrepresent your identity or
affiliations
</li>
<li>
Don't scrape the site or use automated tools to extract member data
</li>
</ul>
<p>
If you violate these, we follow the
<NuxtLink to="/policies/conflict-resolution">Conflict Resolution Policy</NuxtLink>.
Outcomes range from a conversation through to removal from the
community.
</p>
</section>
<section class="policy-section">
<h2>Your content</h2>
<p>
There are two different things happening with content on Ghost Guild,
and they work differently.
</p>
<h3>Profiles, bulletin board posts, comments, and other member-only content</h3>
<p>
You keep ownership of profile information, bulletin board posts,
comments, messages, and anything else you post in member-only spaces.
By posting these, you give Ghost Guild a non-exclusive license to
display them within the platform to other members.
</p>
<p>
If you delete your account, we remove this content from member-facing
areas. Backups may persist for a reasonable period before being
purged.
</p>
<h3>Wiki contributions</h3>
<p>
The wiki at
<a href="https://wiki.ghostguild.org">wiki.ghostguild.org</a> is a
knowledge commons. When you contribute to it (creating pages, editing
existing ones, adding examples, leaving comments on wiki pages), your
contribution is automatically and irrevocably licensed under the
<a href="https://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>
(CC-BY-SA 4.0).
</p>
<p>In plain terms:</p>
<ul>
<li>You still hold the copyright to what you wrote</li>
<li>
Anyone (members, the public, other cooperatives, organizations
adapting the material) can use, share, adapt, and build on your
contribution, including for commercial purposes, as long as they
credit you and license their derivatives under the same terms
</li>
<li>
You can't pull your contribution back out of the commons later,
even if you leave Ghost Guild
</li>
<li>
If we publish wiki material in other places (like
<a href="https://coop.love">coop.love</a>), it stays under
CC-BY-SA 4.0 and you stay credited
</li>
</ul>
<p>
This is how a knowledge commons works, and it's central to what Ghost
Guild is doing. We're explicit about it because we want you to
contribute knowing exactly what's happening to your work. If you have
something you'd rather keep private or under a more restrictive
license, don't put it in the wiki.
</p>
</section>
<section class="policy-section">
<h2>Our content</h2>
<p>
Educational materials, templates, and resources we publish on
ghostguild.org are for member use within the spirit of the
cooperative movement. Where a specific license is attached (like
Creative Commons), follow that license. We ask for attribution to
Ghost Guild or Baby Ghosts.
</p>
</section>
<section class="policy-section">
<h2>Third-party services</h2>
<p>
Ghost Guild relies on Helcim (payments), Resend (email), Hetzner
(hosting), Outline (wiki), Plausible (analytics), and Slack (via the
shared Gamma Space workspace). Their terms apply when you interact
with their services. We've picked them carefully but we can't
guarantee they'll never have outages, security issues, or policy
changes.
</p>
</section>
<section class="policy-section">
<h2>Disclaimers</h2>
<p>
Ghost Guild is provided as-is. We work to keep things running and
resources accurate, but we don't guarantee uptime, completeness, or
that information on the site is right for your specific situation.
Treat our templates and educational materials as starting points, not
legal, financial, or business advice. Talk to qualified professionals
before you make decisions that need them.
</p>
</section>
<section class="policy-section">
<h2>Limitation of liability</h2>
<p>
To the extent the law allows, Baby Ghosts isn't liable for indirect,
incidental, or consequential damages arising from your use of the
site. Our total liability is capped at the amount of dues you've paid
in the past 12 months (which may well be zero, given how our pricing
works).
</p>
</section>
<section class="policy-section">
<h2>Disputes</h2>
<p>
For disputes between members, we use the
<NuxtLink to="/policies/conflict-resolution">Conflict Resolution Policy</NuxtLink>.
</p>
<p>
For disputes with Baby Ghosts about these terms or your account,
please reach out first. Most things we can sort out by talking. If we
can't, the dispute will be governed by the laws of Ontario, Canada.
</p>
</section>
<section class="policy-section">
<h2>Changes</h2>
<p>
We'll update these terms from time to time. For changes that
materially affect your rights or our obligations, we'll email members
at least 30 days before the new terms take effect. Continued use
after that means you accept the changes. If you don't, close your
account before they kick in.
</p>
</section>
<section class="policy-section">
<h2>Contact</h2>
<p>
<a href="mailto:hello@ghostguild.org">hello@ghostguild.org</a>
</p>
<p class="policy-address">
Baby Ghosts<br>
3230 Yonge Street #4052<br>
Toronto ON M4N 3P6<br>
Canada
</p>
</section>
</div>
</PageShell>
</template>
<script setup>
useHead({
title: 'Terms of Service · Ghost Guild',
})
</script>
<style scoped>
.policy-prose {
max-width: 720px;
padding: 32px;
}
.policy-updated {
font-family: "Commit Mono", monospace;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--candle);
margin-bottom: 24px;
}
.policy-section {
padding: 28px 0;
border-bottom: 1px dashed var(--border);
}
.policy-section:first-of-type {
padding-top: 0;
}
.policy-section:last-child {
border-bottom: none;
}
.policy-section h2 {
font-family: "Brygada 1918", serif;
font-size: 20px;
font-weight: 600;
color: var(--text-bright);
letter-spacing: -0.01em;
margin-bottom: 16px;
line-height: 1.25;
}
.policy-section h3 {
font-family: "Commit Mono", monospace;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--text-bright);
margin: 20px 0 10px;
}
.policy-section p {
font-size: 13px;
color: var(--text-dim);
line-height: 1.7;
margin-bottom: 12px;
}
.policy-section ul {
list-style: none;
padding: 0;
margin: 8px 0 14px;
}
.policy-section ul li {
position: relative;
padding: 2px 0 2px 18px;
font-size: 13px;
color: var(--text-dim);
line-height: 1.7;
margin-bottom: 4px;
}
.policy-section ul li::before {
content: "";
position: absolute;
left: 0;
top: 2px;
color: var(--candle-faint);
font-size: 14px;
line-height: 1.7;
}
.policy-section a {
color: var(--candle);
}
.policy-section strong {
color: var(--text-bright);
font-weight: 600;
}
.policy-address {
font-family: "Commit Mono", monospace;
font-size: 12px;
line-height: 1.7;
color: var(--text-dim);
margin-top: 16px;
}
@media (max-width: 640px) {
.policy-prose {
padding: 20px 16px;
}
}
</style>