all repos — stealth-developers @ 9ad6d6ff214141cd385a8931dcbf25abd5b74861

feat(web): privacy policy & terms of service
vi did:web:vt3e.cat
Thu, 11 Jun 2026 23:49:16 +0100
commit

9ad6d6ff214141cd385a8931dcbf25abd5b74861

parent

f93551c2f70938fc10d0a5c77b6e42b4e92c0073

M pkgs/frontend/src/App.vuepkgs/frontend/src/App.vue

@@ -52,6 +52,11 @@ <img :src="user.avatarUrl" alt="Profile Picture" />

</div> <div class="username">{{ user.name }}</div> </div> + + <div class="links"> + <RouterLink to="/privacy">Privacy</RouterLink> + <RouterLink to="/tos">Terms of Service</RouterLink> + </div> </aside> <main class="main"> <RouterView v-slot="{ Component }">
M pkgs/frontend/src/router/index.tspkgs/frontend/src/router/index.ts

@@ -31,6 +31,16 @@ path: '/login',

name: 'Login', component: () => import('../views/LoginView.vue'), }, + { + path: '/tos', + name: 'Terms of Service', + component: () => import('../views/TermsOfService.vue'), + }, + { + path: '/privacy', + name: 'Privacy', + component: () => import('../views/PrivacyPolicy.vue'), + }, ], })
A pkgs/frontend/src/views/PrivacyPolicy.vue

@@ -0,0 +1,181 @@

+<script lang="ts" setup> +const lastUpdated = new Date(1781213982679) +</script> + +<template> + <div class="content"> + <section> + <h1>Privacy Policy</h1> + <p>Last updated: <time :datetime="lastUpdated.toISOString()">{{ lastUpdated.toLocaleDateString() }}</time></p> + + <p> + This Privacy Policy explains how we collect, use, store, and protect your information + when you use our Discord bot (the "Bot") and its associated website (the "Website"). + The Bot and Website are designed solely for use within the Stealth Developers + community. + </p> + </section> + + <section> + <h2>1. Data we collect</h2> + <p> + We only collect the minimum amount of data necessary to provide ticket-handling + services and website authentication. + </p> + + <h3>1.1. From the Discord Bot</h3> + <p> + When you interact with the bot (such as by opening a ticket or sending messages) + in a ticket channel, we collect: + </p> + <ul> + <li>The text content of messages sent within the ticket channel.</li> + <li>Any files or images sent within the ticket channel.</li> + <li>Your Discord user ID and username.</li> + </ul> + + <h3>1.2. From the Website</h3> + <p>When you log into or access the Website:</p> + <ul> + <li>We collect your Discord user ID and username for authentication purposes.</li> + <li>We log standard connection data such as your IP address, browser user agent, and the date/time of your request.</li> + </ul> + </section> + + <section> + <h2>2. How and why we use your data</h2> + <p> + Under the UK General Data Protection Regulation (UK GDPR), our lawful basis for processing this data is + Legitimate Interests. Specifically, we process your data: + </p> + <ul> + <li>To operate, maintain, and secure the ticket support system.</li> + <li>To allow moderators to review support history, handle player reports, and resolve inquiries.</li> + <li>To authenticate your access to the Website.</li> + <li>To ensure the safety and security of our Roblox games and Discord server, and to prevent abuse.</li> + </ul> + <p> + Your personal data is never sold to third parties, nor is it shared with anyone outside of + the infrastructure necessary to host our services (such as our cloud hosting providers). + </p> + </section> + + <section> + <h2>3. Data access and security</h2> + <p>Access to saved ticket data and transcripts is strictly restricted. The only entities with access are:</p> + <ul> + <li>The ticket author (you).</li> + <li>The moderators of Stealth Developers.</li> + <li>The developer and host of the Bot/Website.</li> + </ul> + <p> + We implement reasonable technical and organizational measures—such as secure database access controls, + encrypted connections (HTTPS), and strict token management—to protect your data from unauthorized access. + </p> + </section> + + <section> + <h2>4. Data retention and deletion</h2> + <p> + Ticket transcripts and associated attachments are kept for a maximum of one + year from the creation of the ticket to allow for moderation history and + appeal. After one year, attachments and text transcripts are pseudonymised + by permanently removing all direct user identifiers (such as your Discord ID + and username) from the record. + </p> + <p> + You may request the immediate deletion of your ticket transcripts and associated attachments at any time. + This can be done directly within Discord by using the <code>/ticket manage delete</code> command, + or by contacting the Bot developer. + </p> + </section> + + <section> + <h2>5. Children's Privacy</h2> + <p> + Our services are not intended for children under the age of 13. We do not knowingly collect personal data + from children under 13. If you are a parent or guardian and believe that your child has provided us with + personal data without your consent, please contact us so that we can take steps to delete it. + </p> + </section> + + <section> + <h2>6. Your rights</h2> + <p> + Under UK GDPR, you have the following rights regarding your data: + </p> + <ul> + <li> + You have the right to request a copy of the personal data we hold about you. + You can obtain this using the <code>/ticket manage copy</code> command in Discord. + </li> + <li> + You have the right to request that we delete your personal data. + You can trigger this using the <code>/ticket manage delete</code> command in Discord. + </li> + <li> + You have the right to object to or ask us to restrict how we process your data. + Exercising this right may require us to delete or close your active tickets, and + decline you access to the Bot and Website. + </li> + </ul> + </section> + + <section> + <h2>7. Contact</h2> + <p> + If you have any questions about this Privacy Policy, or if you wish to make a manual data request, you can contact us: + </p> + <ul> + <li>Email: <a href="mailto:apr@vt3e.cat">apr@vt3e.cat</a></li> + <li>Discord: either by creating a ticket or direct messaging @vt3e.cat</li> + </ul> + </section> + </div> +</template> + +<style> +.content { + max-width: 80ch; + display: flex; + flex-direction: column; + gap: 1rem; +} + +section { + display: flex; + flex-direction: column; + gap: 0.5rem; + max-width: 80ch; + padding-bottom: 1rem; + + position: relative; + &:not(:last-child)::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 6px; + border-radius: 1rem; + background-color: hsla(var(--surface0) / 1); + } + + p { + margin-left: 1ch; + } + + h3 { + margin-left: 1ch; + } + + ul { + margin-left: 3ch; + list-style-type: disc; + + li { + margin-bottom: 0.25rem; + } + } +} +</style>
A pkgs/frontend/src/views/TermsOfService.vue

@@ -0,0 +1,165 @@

+<script lang="ts" setup> +const lastUpdated = new Date(1781213982679) +</script> + +<template> + <div class="content"> + <section> + <h1>Terms of Service</h1> + <p>Last updated: <time :datetime="lastUpdated.toISOString()">{{ lastUpdated.toLocaleDateString() }}</time></p> + + <p> + These Terms of Service ("Terms") govern your use of our Discord bot (the "Bot") + and its associated website (the "Website"). The Bot and Website are operated by + the Stealth Developers community to provide support and ticket-handling services. + </p> + <p> + By using the Bot or accessing the Website, you agree to comply with and be bound + by these Terms. If you do not agree, please do not use these services. + </p> + </section> + + <section> + <h2>1. Eligibility and Accounts</h2> + <p> + To use our Bot and Website, you must meet the minimum age requirements set by + Discord (which is 13 years of age in most jurisdictions) and Roblox. + </p> + <p> + You are responsible for maintaining the security of your Discord account. Any + actions taken through your account within our ticket system are considered your + responsibility. + </p> + </section> + + <section> + <h2>2. Acceptable Use and Conduct</h2> + <p> + Our ticket system is designed to handle legitimate support inquiries, player reports, + and community questions. When opening a ticket or interacting with the Bot or Website, + you agree not to: + </p> + <ul> + <li>Spam, flood, or abuse the ticket creation system.</li> + <li>Submit intentionally false, misleading, or malicious player reports.</li> + <li>Harass, abuse, threaten, or insult the community moderators or developers.</li> + <li>Upload, send, or share illegal, harmful, offensive, or malicious content (including viruses, malware, or phishing links).</li> + <li>Attempt to exploit, reverse-engineer, or bypass any security features of the Bot or Website.</li> + </ul> + </section> + + <section> + <h2>3. Adherence to Platform Policies</h2> + <p> + Because our services operate in conjunction with external platforms, your use of the Bot + and Website must also strictly adhere to: + </p> + <ul> + <li>The Discord Terms of Service and Community Guidelines.</li> + <li>The Roblox Terms of Use and Community Standards.</li> + </ul> + <p> + Violations of these platform policies within our ticket system may be reported to the + respective platforms. + </p> + </section> + + <section> + <h2>4. Moderation and Service Access</h2> + <p> + We reserve the right, at our discretion, to suspend, terminate, or restrict your + access to the Bot, or Website if we believe you have violated these Terms or + behave disruptively within the community. + </p> + <p> + Active tickets may be closed or deleted by staff at any time if they are resolved, inactive, + or determined to be in violation of our guidelines. + </p> + </section> + + <section> + <h2>5. Disclaimer of Warranties and Limitation of Liability</h2> + <p> + The Bot and Website are provided on an "as is" and "as available" basis. While we strive + to provide a stable service, we make no guarantees that the services will be uninterrupted, + secure, or completely error-free. + </p> + <p> + To the maximum extent permitted by applicable law, the developers and community moderators + shall not be liable for any data loss, service interruptions, or indirect damages arising + from your use of or inability to use the Bot or Website. + </p> + <p> + + </p> + </section> + + <section> + <h2>6. Changes to Terms</h2> + <p> + We may update these Terms from time to time to reflect changes in our services or legal + requirements. When we make changes, we will update the "Last updated" date at the top of + this page. Continued use of our Bot or Website after updates are posted constitutes your + acceptance of the revised Terms. + </p> + </section> + + <section> + <h2>7. Contact</h2> + <p> + If you have any questions or concerns regarding these Terms of Service, please reach out + to us: + </p> + <ul> + <li>Email: <a href="mailto:apr@vt3e.cat">apr@vt3e.cat</a></li> + <li>Discord: either by creating a support ticket or direct messaging @vt3e.cat</li> + </ul> + </section> + </div> +</template> + +<style> +.content { + max-width: 80ch; + display: flex; + flex-direction: column; + gap: 1rem; +} + +section { + display: flex; + flex-direction: column; + gap: 0.5rem; + max-width: 80ch; + padding-bottom: 1rem; + + position: relative; + &:not(:last-child)::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 6px; + border-radius: 1rem; + background-color: hsla(var(--surface0) / 1); + } + + p { + margin-left: 1ch; + } + + h3 { + margin-left: 1ch; + } + + ul { + margin-left: 3ch; + list-style-type: disc; + + li { + margin-bottom: 0.25rem; + } + } +} +</style>