mirror of
https://github.com/dsec-hub/dsec-notebook.git
synced 2026-09-22 07:24:27 +00:00
Merge pull request #29 from dsec-hub/feature/terms-privacy
added terms and conditions, privacy policy and fixed redirecting to l…
This commit is contained in:
commit
635d2b9be6
6 changed files with 313 additions and 0 deletions
|
|
@ -19,6 +19,8 @@ const APP_SECTIONS = new Set([
|
||||||
"admin",
|
"admin",
|
||||||
"auth",
|
"auth",
|
||||||
"post",
|
"post",
|
||||||
|
"privacy",
|
||||||
|
"terms",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
export function toAppPath(href: string, origin?: string): string | null {
|
export function toAppPath(href: string, origin?: string): string | null {
|
||||||
|
|
@ -89,6 +91,10 @@ export function appPathLabel(appPath: string, titles?: Record<string, string>):
|
||||||
return "Sign in";
|
return "Sign in";
|
||||||
case "post":
|
case "post":
|
||||||
return rest === "question" ? "New question" : "New note";
|
return rest === "question" ? "New question" : "New note";
|
||||||
|
case "privacy":
|
||||||
|
return "Privacy policy";
|
||||||
|
case "terms":
|
||||||
|
return "Terms";
|
||||||
default:
|
default:
|
||||||
return rest ? `${head} post` : head;
|
return rest ? `${head} post` : head;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,10 @@
|
||||||
DSEC Notebook is a community resource for Deakin University students. Not affiliated
|
DSEC Notebook is a community resource for Deakin University students. Not affiliated
|
||||||
with Deakin University.
|
with Deakin University.
|
||||||
</p>
|
</p>
|
||||||
|
<nav class="mt-4 flex flex-wrap gap-x-5 gap-y-2" aria-label="Legal">
|
||||||
|
<a href="/privacy" class="nav-link">Privacy</a>
|
||||||
|
<a href="/terms" class="nav-link">Terms</a>
|
||||||
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
35
src/routes/auth/+layout.svelte
Normal file
35
src/routes/auth/+layout.svelte
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
<script lang="ts">
|
||||||
|
import { goto } from "$app/navigation";
|
||||||
|
import { initAuth, isAuthenticated } from "$lib/stores/auth";
|
||||||
|
import { onMount } from "svelte";
|
||||||
|
import { get } from "svelte/store";
|
||||||
|
|
||||||
|
let { children } = $props();
|
||||||
|
let ready = $state(false);
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
let cancelled = false;
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
await initAuth();
|
||||||
|
if (cancelled) return;
|
||||||
|
if (get(isAuthenticated)) {
|
||||||
|
await goto("/account", { replaceState: true });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ready = true;
|
||||||
|
})();
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
cancelled = true;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#if ready}
|
||||||
|
{@render children()}
|
||||||
|
{:else}
|
||||||
|
<div class="page">
|
||||||
|
<p class="kicker py-16">Loading</p>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
@ -242,6 +242,15 @@
|
||||||
{loading ? "Sending code..." : "Send verification code"}
|
{loading ? "Sending code..." : "Send verification code"}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
<p class="text-faint text-xs leading-relaxed">
|
||||||
|
By creating an account you agree to the
|
||||||
|
<a href="/terms" class="text-secondary hover:text-secondary-dark">Terms</a>
|
||||||
|
and
|
||||||
|
<a href="/privacy" class="text-secondary hover:text-secondary-dark"
|
||||||
|
>Privacy policy</a
|
||||||
|
>.
|
||||||
|
</p>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onclick={() => switchMode("signin")}
|
onclick={() => switchMode("signin")}
|
||||||
|
|
|
||||||
130
src/routes/privacy/+page.svelte
Normal file
130
src/routes/privacy/+page.svelte
Normal file
|
|
@ -0,0 +1,130 @@
|
||||||
|
<svelte:head>
|
||||||
|
<title>Privacy policy — DSEC Notebook</title>
|
||||||
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="How DSEC Notebook collects, uses, and stores personal information for Deakin University students."
|
||||||
|
/>
|
||||||
|
</svelte:head>
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<p class="kicker">Legal</p>
|
||||||
|
<h1 class="text-ink mt-2 font-serif text-4xl font-medium">Privacy policy</h1>
|
||||||
|
<p class="text-muted mt-2 text-sm">Last updated 18 September 2026</p>
|
||||||
|
|
||||||
|
<div class="markdown border-rule mt-8 max-w-2xl border-t pt-8 text-[15px] leading-relaxed">
|
||||||
|
<p>
|
||||||
|
DSEC Notebook (“Notebook”, “we”, “us”) is a student-run community resource at
|
||||||
|
<a href="https://notebook.dsec.club/">notebook.dsec.club</a>. It is not affiliated with
|
||||||
|
Deakin University. This policy explains what personal information we collect, why we
|
||||||
|
collect it, and the choices you have.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Information we collect</h2>
|
||||||
|
<p>We collect the information you give us when you use Notebook:</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<strong>Account details.</strong> Your Deakin email address, display name, password (stored
|
||||||
|
as a salted hash, not in plain text), and optional profile picture.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Content you post.</strong> Notes, questions, comments, votes, and units you pin.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Session data.</strong> A sign-in token stored in your browser so you stay signed
|
||||||
|
in.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Verification data.</strong> Short-lived email codes when you create an account
|
||||||
|
or reset a password. We also store hashed request limits so we can reduce abuse of verification
|
||||||
|
emails.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>How we use it</h2>
|
||||||
|
<p>We use this information to:</p>
|
||||||
|
<ul>
|
||||||
|
<li>create and maintain your account</li>
|
||||||
|
<li>verify that you have a <code>@deakin.edu.au</code> address</li>
|
||||||
|
<li>show your name, avatar, and posts to other visitors</li>
|
||||||
|
<li>send verification and password-reset emails</li>
|
||||||
|
<li>moderate the community and keep the service running</li>
|
||||||
|
</ul>
|
||||||
|
<p>We do not sell your personal information, and we do not use it for advertising.</p>
|
||||||
|
|
||||||
|
<h2>What is public</h2>
|
||||||
|
<p>
|
||||||
|
Your display name, profile picture, and the notes, questions, and comments you post are
|
||||||
|
visible to anyone who can open Notebook. Your email address is not shown on your public
|
||||||
|
profile.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Cookies and local storage</h2>
|
||||||
|
<p>Notebook stores a few things in your browser:</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<strong>Session token</strong> in local storage, so we can recognise you after you sign
|
||||||
|
in.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Theme preference</strong> in local storage (light or dark).
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong>Verification cookie</strong> (<code>dsec_verification_client</code>), an
|
||||||
|
http-only cookie used only to rate-limit verification emails and reduce abuse. It is
|
||||||
|
not used for advertising or cross-site tracking.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
We also receive the IP address of verification-email requests so we can apply the same
|
||||||
|
rate limits.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Email and other services</h2>
|
||||||
|
<p>
|
||||||
|
We send account emails (verification and password reset) through
|
||||||
|
<a href="https://resend.com/">Resend</a>. Those messages include your email address and
|
||||||
|
the one-time code. Uploaded profile images are stored on our server and served from
|
||||||
|
Notebook.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>How long we keep it</h2>
|
||||||
|
<p>
|
||||||
|
We keep your account, posts, and related records for as long as your account exists, or
|
||||||
|
as long as the content remains on Notebook. Verification codes expire after 10 minutes.
|
||||||
|
You can update your display name and profile picture from your
|
||||||
|
<a href="/account">account</a> page. To ask us to delete your account or personal information,
|
||||||
|
contact us using the details below.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Your choices</h2>
|
||||||
|
<ul>
|
||||||
|
<li>You can edit your profile and password while signed in.</li>
|
||||||
|
<li>
|
||||||
|
You can sign out at any time, which removes the session token from this browser.
|
||||||
|
</li>
|
||||||
|
<li>You can ask us to correct or delete personal information we hold about you.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Children</h2>
|
||||||
|
<p>
|
||||||
|
Notebook is intended for Deakin University students. It is not directed at children
|
||||||
|
under 16.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Changes</h2>
|
||||||
|
<p>
|
||||||
|
We may update this policy from time to time. The “Last updated” date at the top will
|
||||||
|
change when we do. Continued use of Notebook after an update means you accept the
|
||||||
|
revised policy.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Contact</h2>
|
||||||
|
<p>
|
||||||
|
Questions about this policy or your personal information can be sent through the DSEC
|
||||||
|
Discord at <a href="https://discord.dsec.club">discord.dsec.club</a>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
See also our <a href="/terms">Terms and conditions</a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
129
src/routes/terms/+page.svelte
Normal file
129
src/routes/terms/+page.svelte
Normal file
|
|
@ -0,0 +1,129 @@
|
||||||
|
<svelte:head>
|
||||||
|
<title>Terms and conditions — DSEC Notebook</title>
|
||||||
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="Terms and conditions for using DSEC Notebook, a student-run notes and questions hub for Deakin University."
|
||||||
|
/>
|
||||||
|
</svelte:head>
|
||||||
|
|
||||||
|
<div class="page">
|
||||||
|
<p class="kicker">Legal</p>
|
||||||
|
<h1 class="text-ink mt-2 font-serif text-4xl font-medium">Terms and conditions</h1>
|
||||||
|
<p class="text-muted mt-2 text-sm">Last updated 18 September 2026</p>
|
||||||
|
|
||||||
|
<div class="markdown border-rule mt-8 max-w-2xl border-t pt-8 text-[15px] leading-relaxed">
|
||||||
|
<p>
|
||||||
|
These terms govern your use of DSEC Notebook (“Notebook”), a student-run community
|
||||||
|
resource at <a href="https://notebook.dsec.club/">notebook.dsec.club</a>. By creating an
|
||||||
|
account or using Notebook, you agree to these terms. If you do not agree, do not use the
|
||||||
|
service.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>About Notebook</h2>
|
||||||
|
<p>
|
||||||
|
Notebook is an independent community project for Deakin University students. It is
|
||||||
|
<strong>not affiliated with, endorsed by, or operated by Deakin University</strong>.
|
||||||
|
Unit codes, unit names, and similar course details are used only to organise
|
||||||
|
student-shared material.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Eligibility</h2>
|
||||||
|
<p>
|
||||||
|
Contributing (creating an account, posting, voting, or commenting) is limited to people
|
||||||
|
with a valid <code>@deakin.edu.au</code> email address. You must be able to receive email
|
||||||
|
at that address to verify your account. Browsing public content does not require an account.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Accounts</h2>
|
||||||
|
<ul>
|
||||||
|
<li>You are responsible for the accuracy of the details you provide.</li>
|
||||||
|
<li>You must keep your password confidential and not share your account.</li>
|
||||||
|
<li>
|
||||||
|
You are responsible for activity that happens on your account. Tell us if you think
|
||||||
|
someone else has used it.
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
We may suspend or remove accounts that break these terms, including accounts that
|
||||||
|
are not genuine Deakin student accounts.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Your content</h2>
|
||||||
|
<p>
|
||||||
|
You keep ownership of the notes, questions, comments, and other material you post. By
|
||||||
|
posting, you give DSEC Notebook a non-exclusive licence to store, display, and
|
||||||
|
distribute that content on the service so other students can read it.
|
||||||
|
</p>
|
||||||
|
<p>You confirm that:</p>
|
||||||
|
<ul>
|
||||||
|
<li>you have the right to post the content</li>
|
||||||
|
<li>it does not infringe someone else’s copyright or other rights</li>
|
||||||
|
<li>it is not unlawful, harassing, or misleading</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
Content you post is public. Do not include personal information you would not want
|
||||||
|
others to see, such as student IDs, private correspondence, or unpublished assessment
|
||||||
|
material that is not yours to share.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Academic integrity</h2>
|
||||||
|
<p>
|
||||||
|
Notebook is for sharing study notes and asking questions. It is not a place to
|
||||||
|
commission, sell, or request completed assignments, exam answers, or other work that
|
||||||
|
would breach Deakin’s academic integrity rules. You remain responsible for following
|
||||||
|
Deakin’s policies. Using material from Notebook in assessed work without proper
|
||||||
|
acknowledgement may constitute academic misconduct.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Acceptable use</h2>
|
||||||
|
<p>You agree not to:</p>
|
||||||
|
<ul>
|
||||||
|
<li>harass, threaten, or abuse other users</li>
|
||||||
|
<li>post spam, malware, or content that is illegal</li>
|
||||||
|
<li>attempt to access other accounts or disrupt the service</li>
|
||||||
|
<li>scrape or copy the site in a way that overloads or undermines it</li>
|
||||||
|
<li>misrepresent your identity or affiliation</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Moderation</h2>
|
||||||
|
<p>
|
||||||
|
We may edit, hide, or delete content, and we may restrict or delete accounts, when we
|
||||||
|
consider it necessary to protect the community or the service. We are not obliged to
|
||||||
|
review every post before it appears.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>No warranty</h2>
|
||||||
|
<p>
|
||||||
|
Notebook is provided as a volunteer community resource, “as is”. Study notes and answers
|
||||||
|
are written by students and may be incomplete or incorrect. We do not guarantee that the
|
||||||
|
service will always be available, secure, or error-free, or that content is suitable for
|
||||||
|
any particular unit, assessment, or exam.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Limitation of liability</h2>
|
||||||
|
<p>
|
||||||
|
To the extent permitted by law, DSEC and the people who maintain Notebook are not liable
|
||||||
|
for loss arising from your use of the service or from reliance on content posted by
|
||||||
|
users. This does not exclude any rights you cannot waive under Australian consumer law.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Changes and termination</h2>
|
||||||
|
<p>
|
||||||
|
We may change these terms, or change or discontinue Notebook, at any time. The “Last
|
||||||
|
updated” date at the top will change when the terms are revised. Continued use after an
|
||||||
|
update means you accept the revised terms. You may stop using Notebook at any time.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Privacy</h2>
|
||||||
|
<p>
|
||||||
|
How we handle personal information is described in our
|
||||||
|
<a href="/privacy">Privacy policy</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Contact</h2>
|
||||||
|
<p>
|
||||||
|
Questions about these terms can be sent through the DSEC Discord at
|
||||||
|
<a href="https://discord.dsec.club">discord.dsec.club</a>.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
Loading…
Reference in a new issue