initial work on refactor

This commit is contained in:
2022-07-02 22:53:41 +03:00
parent 9841cd9895
commit b9fe05953a
31 changed files with 455 additions and 737 deletions

View File

@@ -1,47 +1,21 @@
<script context="module">
import { locale, loadTranslations } from "$lib/translations";
export const load = async ({ url }) => {
const { pathname } = url;
const defaultLocale = "en"; // get from cookie, user session, ...
const initLocale = locale.get() || defaultLocale; // set default if no locale already set
await loadTranslations(initLocale, pathname); // keep this just before the `return`
// firefox
// https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language
// chrome
// https://developer.chrome.com/extensions/i18n#overview-getAcceptLanguages
// edge
// https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx
return {};
};
</script>
<script>
import "$lib/app.css";
import Nav from "$lib/Nav.svelte";
import Footer from "$lib/Footer.svelte";
import SvelteSeo from "svelte-seo";
import Banner from "$lib/images/ProjectSegfault_Desktop_16-9.png";
import * as global from "../i18n/_global.json";
import { t } from "$lib/translations";
</script>
<SvelteSeo
title="{global.NAME}"
description="{$t("common.INDEX_DESCRIPTION")}"
title="Project Segfault"
description="4 idiots, a Sun server and a Hitachi Compute Rack."
canonical="https://projectsegfau.lt/"
openGraph={{
url: "https://projectsegfau.lt/",
title: global.NAME,
description: $t("common.INDEX_DESCRIPTION"),
title: "Project Segfault",
description: "4 idiots, a Sun server and a Hitachi Compute Rack.",
images: [
{
url: Banner,
url: "/ProjectSegfault_Desktop_16-9.png",
width: 850,
height: 650,
alt: "Our banner"

18
src/routes/contact.md Normal file
View File

@@ -0,0 +1,18 @@
---
title: Contact Us
description: Do you want to contact us?
---
# { title }
{ description }
## Our email
[contact@projectsegfau.lt](mailto:contact@projectsegfau.lt)
*Please be aware that Microsoft often blocks non-popular emails, if you do contact us through there, make sure to check your spam and mark it as not-spam!*
## People
You can find ways to contact individual members [on our Members page](/members).

View File

@@ -1,125 +0,0 @@
<script lang="ts">
import { t } from "$lib/translations";
import * as global from "../i18n/_global.json";
import SvelteSeo from "svelte-seo";
</script>
<SvelteSeo
title="{$t("common.CONTACT_TITLE")} | {global.NAME}"
description="{$t("common.CONTACT_DESCRIPTION")}"
canonical="https://projectsegfau.lt/contact"
openGraph={{
url: "https://projectsegfau.lt/contact/",
title: "{$t('common.CONTACT_TITLE')} | {global.NAME}",
description: $t("common.CONTACT_DESCRIPTION")
}}
/>
<h1>{$t("common.CONTACT_TITLE")}</h1>
<h2>{$t("common.CONTACT_DESCRIPTION")}</h2>
<h1>{$t("common.CONTACT_OUR_EMAIL")}</h1>
<p><a href="mailto:{global.EMAIL}">{global.EMAIL}</a></p>
<p><i>{$t("common.CONTACT_EMAIL_SPAM")}</i></p>
<h1>{$t("common.CONTACT_PEOPLE")}</h1>
<div id="Active">
<div class="parent">
<div class="div1">{global.MIDOU}:</div>
<a class="div2 matrixcolored" href={global.MIDOU_MATRIX_URL}>[Matrix]</a
>
<div class="div3" />
<div class="div4">{global.MRLERIEN}:</div>
<a class="div5 discordcolored" href={global.MRLERIEN_DISCORD_URL}
>Discord</a
>
<div class="div6" />
<div class="div7">{global.AKISBLACK}:</div>
<a class="div8 matrixcolored" href={global.AKISBLACK_MATRIX_URL}
>[Matrix]</a
>
<a class="div9 discordcolored" href={global.AKISBLACK_DISCORD_URL}
>Discord</a
>
<div class="div10">{global.DEVNOL}:</div>
<a class="div11 matrixcolored" href={global.DEVNOL_MATRIX_URL}
>[Matrix]</a
>
<a class="div12 discordcolored" href={global.DEVNOL_DISCORD_URL}
>Discord</a
>
</div>
</div>
<style>
.parent {
display: grid;
grid-template-columns: repeat(3, max-content);
grid-template-rows: repeat(4, 1fr);
grid-column-gap: 16px;
grid-row-gap: 16px;
max-width: 50%;
align-items: center;
}
/* this is a hack to make the grid work, need to improve this */
.div1 {
grid-area: 1 / 1 / 2 / 2;
}
.div2 {
grid-area: 1 / 2 / 2 / 3;
}
.div3 {
grid-area: 1 / 3 / 2 / 4;
}
.div4 {
grid-area: 2 / 1 / 3 / 2;
}
.div5 {
grid-area: 2 / 2 / 3 / 3;
}
.div6 {
grid-area: 2 / 3 / 3 / 4;
}
.div7 {
grid-area: 3 / 1 / 4 / 2;
}
.div8 {
grid-area: 3 / 2 / 4 / 3;
}
.div9 {
grid-area: 3 / 3 / 4 / 4;
}
.div10 {
grid-area: 4 / 1 / 5 / 2;
}
.div11 {
grid-area: 4 / 2 / 5 / 3;
}
.div12 {
grid-area: 4 / 3 / 5 / 4;
}
#Active a {
border: none;
border-radius: 10px;
padding: 0.5rem;
cursor: pointer;
font-family: var(--font-primary);
color: var(--secondary);
text-decoration: none;
}
.matrixcolored {
background-color: #fff;
}
.discordcolored {
background-color: #5865f2;
color: #fff !important;
}
</style>

52
src/routes/donate.md Normal file
View File

@@ -0,0 +1,52 @@
---
title: Donate to Project Segfault
description: The ways you can donate to us and more.
---
# { title }
{ description }
## Reasons to donate to our project.
If you donate, we will be more motivated to work on the server and host more stuff and maybe even get more hardware. We really recommend you donate any spare money you have if you enjoy or use our services on a daily basis. Thanks!
## Donation Links
<div class="monero">
Monero: <code style="margin-left: 4px;">47L7Qsto7XcifY3CdG18ySe5Tt83kpFLDLve9jQwbc9taPBLNGv6ZrJNUKpMG9Nj9zHgCZ4FQMSyt75e8Jvx12JFLtJyFdA</code>
<img src="/Monero.png" alt="Monero Qr Code" />
</div>
<p class="reports-note">
You can find all of our financial reports on <a href="https://github.com/ProjectSegfault/transparency/">our transparency repository on GitHub</a>.
</p>
<style>
.monero {
display: flex;
align-items: center;
word-break: break-all;
}
.monero > img {
margin-left: 26px;
}
.reports-note {
margin-top: 32px;
font-style: italic;
}
@media only screen and (max-width: 930px) {
.monero {
flex-direction: column;
align-items: flex-start;
}
.monero > img {
margin-left: 0;
margin-top: 8px;
}
}
</style>

View File

@@ -1,75 +0,0 @@
<script lang="ts">
import MoneroQR from "$lib/images/Monero.png";
import { t } from "$lib/translations";
import * as global from "../i18n/_global.json";
import SvelteSeo from "svelte-seo";
</script>
<SvelteSeo
title="{$t("common.DONATE_TITLE")} | {global.NAME}"
description="{$t("common.DONATE_DESCRIPTION")}"
canonical="https://projectsegfau.lt/donate/"
openGraph={{
url: "https://projectsegfau.lt/donate/",
title: "{$t('common.DONATE_TITLE')} | {global.NAME}",
description: $t("common.DONATE_DESCRIPTION")
}}
/>
<h1>{$t("common.DONATE_TITLE")}</h1>
<h2>{$t("common.DONATE_DESCRIPTION")}</h2>
<h1>{$t("common.DONATE_PLEASE_DO")}</h1>
<p>{$t("common.DONATE_EXPLANATION")}</p>
<h1>{$t("common.DONATE_OK_SURE")}</h1>
<div class="monero">
<span
>{global.MONERO}:
<code
>47L7Qsto7XcifY3CdG18ySe5Tt83kpFLDLve9jQwbc9taPBLNGv6ZrJNUKpMG9Nj9zHgCZ4FQMSyt75e8Jvx12JFLtJyFdA</code
></span
>
<img src={MoneroQR} alt="Monero Qr Code" />
</div>
<p class="reports-note">
<i>
{$t("common.DONATE_TRANSPARENCY_1")}
<a href={global.TRANSPARENCY_REPO}
>{$t("common.DONATE_TRANSPARENCY_2")}</a
>
.
</i>
</p>
<style>
.monero {
display: flex;
align-items: center;
}
.monero > img {
margin-left: 26px;
}
.reports-note {
margin-top: 32px;
}
@media only screen and (max-width: 930px) {
.monero {
flex-direction: column;
align-items: flex-start;
}
.monero > img {
margin-left: 0;
margin-top: 8px;
}
}
</style>

22
src/routes/faq.md Normal file
View File

@@ -0,0 +1,22 @@
---
title: Frequently Asked Questions
description: Frequently Asked Questions
---
# { title }
## Who is the project owner?
The project doesn't have a single owner but is made up of a team of people. A list of the people involved and their positions can be found [on our members page](/members).
## One of your services contains toxic people!
You can contact us by mail or Matrix and we can figure this out with you. But we recommend that you put most of these requests in our support channel at [#support:projectsegfau.lt](https://matrix.to/#/#support:projectsegfau.lt) on Matrix. If it's something personal, just say that you have a report against someone on one of our services and you'd like to be contacted by an admin and we'll contact you as soon as possible. We generally tend to be active throughout the day.
## How can I trust your services?
Well, you really can't. We don't make our logs or anything else public, however, if you would like access to the data we have on you, please contact us. If you're extremely privacy/security conscious, **you are allowed to use Tor on our services**, but we don't host any `.onion` links.
## Which ways do you prefer to communicate?
Look at [Contact](/contact).

View File

@@ -1,44 +0,0 @@
<script lang="ts">
import { t } from "$lib/translations";
import * as global from "../i18n/_global.json";
import SvelteSeo from "svelte-seo";
</script>
<SvelteSeo
title="{$t("common.FAQ_TITLE")} | {global.NAME}"
description="{$t("common.FAQ_TITLE")}"
canonical="https://projectsegfau.lt/faq/"
openGraph={{
url: "https://projectsegfau.lt/faq/",
title: "{$t('common.FAQ_TITLE')} | {global.NAME}",
description: $t("common.FAQ_TITLE")
}}
/>
<h1>{$t("common.FAQ_TITLE")}</h1>
<h2>{$t("common.FAQ_OWNER_TITLE")}</h2>
<p>{$t("common.FAQ_OWNER")}</p>
<h2>{$t("common.FAQ_TOXICITY_TITLE")}</h2>
<p>
{$t("common.FAQ_TOXICITY_1")}
<a href="https://matrix.to/#/#support:projectsegfau.lt"
>#support:projectsegfau.lt</a
>
{$t("common.FAQ_TOXICITY_2")}
</p>
<h2>{$t("common.FAQ_TRUST_TITLE")}</h2>
<p>
{$t("common.FAQ_TRUST_1")}
<strong>{$t("common.FAQ_TRUST_2")}</strong>
{$t("common.FAQ_TRUST_3")}
</p>
<h2>{$t("common.FAQ_CONTACT_TITLE")}</h2>
<p>
{$t("common.FAQ_CONTACT")}
<a href="/contact">{$t("common.NAVBAR_CONTACT")}</a>
.
</p>

16
src/routes/index.md Normal file
View File

@@ -0,0 +1,16 @@
---
title: Home
description: 4 idiots, a Sun server and a Hitachi Compute Rack.
---
# Project Segfault
{ description }
## What is this?
We are 4 teenagers who have a decently powerful server. What do we do with this server? Host game servers and random assortment of privacy respecting tools like Invidious, Nextcloud, Matrix etc.... and maybe some original works. You'll see eventually!
## Tell me more! What do you guys host? Where can I contact you? Can you fix my daughter's iPad?
We can't fix your daughter's iPad, but there is a navigation bar at the top of the page with links to websites and pages that explain things about us, or contain useful information about our services.

View File

@@ -1,23 +0,0 @@
<script>
import { t } from "$lib/translations";
import * as global from "../i18n/_global.json";
</script>
<svelte:head>
<title>{global.NAME}</title>
</svelte:head>
<h1>{global.NAME}</h1>
<div>
<h2>{$t("common.INDEX_DESCRIPTION")}</h2>
<h1>{$t("common.INDEX_WHAT")}</h1>
<!-- Cause I feel the need to scream -->
<p>{$t("common.INDEX_WHO_ARE_WE")}</p>
<h1>{$t("common.INDEX_TELL_ME_MORE")}</h1>
<p>{$t("common.INDEX_MORE_INFO")}</p>
</div>

11
src/routes/legal/index.md Normal file
View File

@@ -0,0 +1,11 @@
---
title: Legal stuff
---
# { title }
Since we care about transparency, privacy and safety we have created some documents regarding these topics.
- [Privacy Policy](/legal/privacy-policy)
- [Terms of Service](/legal/tos)
- [Transparency reports](https://github.com/ProjectSegfault/transparency/)

View File

@@ -0,0 +1,33 @@
---
title: Privacy Policy
description: Our privacy policy
---
# { title }
We take your privacy more seriously than FAANG.
## We don't collect more information than we need to.
Here's what we collect.
- User agent (OS and browser)
- IP address (This is kind of obvious. Every website does this. If you're paranoid about this, get a [good VPN](https://wiki.pussthecat.org/general/privacy-guide/#vpn) or use Tor.)
- When you made a request
- Referrer (Where you came from when you made a request.)
The log looks like this, for reference: ``127.0.0.1 - - [17/Jun/2022:20:19:26 +0300] "GET / HTTP/2.0" 200 144 "https://projectsegfau.lt/" "Mozilla/5.0 (Windows NT 10.0; rv:100.0) Gecko/20100101 Firefox/100.0" "-"``
Some of our services have things like databases and things, for example [Pleroma](https://social.projectsegfau.lt), but that should be pretty obvious the moment you make an account on there. They may collect some things, however we barely even access those databases so you should be fine.
If you want the data we've collected on you to be sent, please contact us on Matrix in [this room](https://matrix.to/#/#gdpr:projectsegfau.lt). You don't need an account on our Matrix instance in order to chat there, you can choose from a bunch of public instances or make your own.
## We don't give any of the data we collect to anyone outside of Project Segfault.
What we just described above won't be sold or given to anyone outside of Project Segfault. It could be given to law enforcement IF they have a warrant.
There is no reason for anyone outside of Project Segfault to see your data. In fact, Project Segfault really has no reason to see your data, unless there's something to suspect.
## Data may be cleared at any point upon request, but...
As we said, you can request any GDPR/Privacy things in [this Matrix room](https://matrix.to/#/#gdpr:projectsegfau.lt). But, if there's any ongoing investigations and a law enforcement agency contacts us, we will comply. But, we will only do it if we can verify it's official and they have a warrant.
We hope you can understand our privacy policy.

13
src/routes/legal/tos.md Normal file
View File

@@ -0,0 +1,13 @@
---
title: Terms of Service
description: We're not anarchists, so we have some rules.
---
# { title }
## { description }
1. Do not use our Services to (D)DOS or attempt to disrupt someone else's online stability.
2. Do not use our Services to Dox someone.
3. Do not do anything on our Services that would be illegal in Greece or France.
4. Refrain from using our services to harass people.

65
src/routes/members.svelte Normal file
View File

@@ -0,0 +1,65 @@
<script lang="ts">
import members from "$lib/Members.json";
</script>
<svelte:head>
<title>Members | Project Segfault</title>
<meta name="description" content="Members of Project Segfault.">
</svelte:head>
<div class="members">
<h1>Members</h1>
<div class="member-outer">
{#each members as { name, discord, matrix, position }}
<div class="member-inner">
<h2>{name}</h2>
<h3>Position: {position} </h3>
<div class="socials">
{#if matrix}
<a href={matrix} class="matrixcolored">[Matrix]</a>
{/if}
{#if discord}
<a href={discord} class="discordcolored">Discord</a>
{/if}
</div>
</div>
{/each}
</div>
</div>
<style>
.member-outer {
display: flex;
flex-direction: column;
gap: 2rem;
}
a {
border: none;
border-radius: 10px;
padding: 0.5rem;
cursor: pointer;
font-family: var(--font-primary);
color: var(--secondary);
text-decoration: none;
width: fit-content;
}
.matrixcolored {
background-color: #fff;
}
.discordcolored {
background-color: #5865f2;
color: #fff !important;
}
.socials {
display: flex;
flex-direction: row;
gap: .5rem;
}
</style>

View File

@@ -0,0 +1,25 @@
---
title: Recommended Client Side Mods
description: Recommended client side mods for use when playing on our server.
---
# { title }
{ description }
*[Click me to go back to the Minecraft page](/minecraft)*
## How are these mods picked?
These are picked by our community or are required for server features like voice chatting.
## Can I use these plugins on Bedrock edition or the Forge mod loader?
These plugins only support Minecraft Java edition and most only work on the Fabric/Quilt modloaders. If you play on Bedrock or Forge mod loader, try to find an alternative to these. Mods like Simple Voice Chat have no alternative on Bedrock, sorry.
## The list
- [Xaero's World Map](https://www.curseforge.com/minecraft/mc-mods/xaeros-world-map/)
- [Xaero's Minimap](https://www.curseforge.com/minecraft/mc-mods/xaeros-minimap/)
- [Simple Voice Chat](https://modrinth.com/mod/simple-voice-chat/)
- Any optimization mod (we recommend at least Sodium, but you can find more on [Modrinth](https://modrinth.com/).)

View File

@@ -1,43 +0,0 @@
<script>
import { t } from "$lib/translations";
import * as global from "../../i18n/_global.json";
import SvelteSeo from "svelte-seo";
</script>
<SvelteSeo
title="{$t("common.MINECRAFT_TITLE")} | {global.NAME}"
description="{$t("common.CSM_TITLE")}"
canonical="https://projectsegfau.lt/minecraft/client-side-mods"
openGraph={{
url: "https://projectsegfau.lt/minecraft/client-side-mods",
title: "{$t('common.MINECRAFT_TITLE')} | {global.NAME}",
description: $t("common.CSM_TITLE")
}}
/>
<h1>{$t("common.MINECRAFT_TITLE")}</h1>
<h1><a href="/minecraft">{$t("common.CSM_GOBACK")}</a></h1>
<h2>{$t("common.CSM_TITLE")}</h2>
<p>{$t("common.CSM_HOW_THEY_ARE_PICKED")}</p>
<p>{$t("common.CSM_NOTE_BEDROCK")}</p>
<ul>
<li>
<a href="https://www.curseforge.com/minecraft/mc-mods/xaeros-world-map"
>Xaero's World Map</a
>
&
<a href="https://www.curseforge.com/minecraft/mc-mods/xaeros-minimap"
>Xaero's Minimap</a
>
</li>
<li>{$t("common.CSM_OPTIMIZATION_MODS_NOTE")}</li>
<li>
<a href="https://modrinth.com/mod/simple-voice-chat/"
>Simple Voice Chat</a
>
</li>
</ul>

View File

@@ -0,0 +1,59 @@
---
title: Minecraft
description: Information about our Minecraft server.
---
# { title }
We have an invite-only SMP server running on our network on version 1.18* (1.18, 1.18.1, 1.18.2) which is also bridged to Bedrock using GeyserMC.
## How do I join?
If you would like to join, please join our Matrix space or Discord server and ask a project member to whitelist your account. The links to either the Matrix or the Discord can be found on the footer of the page.
## Rules
1. Do not modify buildings without permission.
2. Do not bypass protections. (mining around a protected door, bypassing chest locks etc.)
3. Do not cheat.
4. Do not lag the server purposely.
## IP
**Java**: `mc.projectsegfau.lt:25565`
**Bedrock**: `mc.projectsegfau.lt:19132`
*Psst, you can join bedrock on your Switch using the app weve linked below!*
## Links
[Dynmap](https://map.mc.projectsegfau.lt/)
[MC Server Connector for iOS](https://apps.apple.com/us/app/mc-server-connector/id1548251304/)
[MC Server Connector for Android](https://play.google.com/store/apps/details?id=com.smokiem.mcserverconnector/)
## Recommended Client Side Mods
[Click me for a list of recommended client side mods.](/minecraft/client-side-mods/)
## Plugin List
A list of plugins we use on our server via PaperMC.
*This is a manually made list of our plugins, so it might not reflect the plugins currently on the server.*
- BlockLocker
- CoreProtect
- [Dynmap](https://map.mc.projectsegfau.lt/)
- EssentialsX (EssentialsXDiscord, EssentialsXGeoIP)
- Geyser & Floodgate
- LuckPerms
- mcMMO ([Click here to download our build of mcMMO.](https://dl.odyssey346.dev/Software/mcMMO.jar))
- TabTPS
- Vault
- ViaVersion (You may only connect from a base version and its subversions (1.18, 1.18.1, 1.18.2). You cannot connect from a major version older or newer than the major version the server is running.)
- PlugMan
- CombatLogX
- Simple Voice Chat

View File

@@ -1,87 +0,0 @@
<script>
import { t } from "$lib/translations";
import * as global from "../../i18n/_global.json";
import SvelteSeo from "svelte-seo";
</script>
<SvelteSeo
title="{$t("common.MINECRAFT_TITLE")} | {global.NAME}"
description="{$t("common.MINECRAFT_DESCRIPTION")}"
canonical="https://projectsegfau.lt/minecraft/"
openGraph={{
url: "https://projectsegfau.lt/minecraft/",
title: "{$t('common.MINECRAFT_TITLE')} | {global.NAME}",
description: $t("common.MINECRAFT_DESCRIPTION")
}}
/>
<h1>{$t("common.MINECRAFT_TITLE")}</h1>
<h1>{$t("common.MINECRAFT_DESCRIPTION")}</h1>
<p>{$t("common.MINECRAFT_SMP")}</p>
<p>{$t("common.MINECRAFT_JOIN")}</p>
<a href={global.DISCORD_INVITE}>{$t("common.MINECRAFT_DISCORD")}</a>
<h2>{$t("common.MINECRAFT_RULES")}</h2>
<p>{$t("common.MINECRAFT_RULE_1")}</p>
<p>{$t("common.MINECRAFT_RULE_2")}</p>
<p>{$t("common.MINECRAFT_RULE_3")}</p>
<p>{$t("common.MINECRAFT_RULE_4")}</p>
<h2>{$t("common.MINECRAFT_IP")}</h2>
<p><b>Java</b>: {global.MINECRAFT_JAVA_IP}</p>
<p><b>Bedrock</b>: {global.MINECRAFT_BEDROCK_IP}</p>
<i>{$t("common.MINECRAFT_NOTE_1")}</i>
<br />
<i>{$t("common.MINECRAFT_NOTE_2")}</i>
<h2>{$t("common.MINECRAFT_LINKS")}</h2>
<a href="https://map.mc.projectsegfau.lt">Dynmap</a>
<a href="https://apps.apple.com/us/app/mc-server-connector/id1548251304"
>{$t("common.MINECRAFT_MC_IOS")}</a
>
<a
href="https://play.google.com/store/apps/details?id=com.smokiem.mcserverconnector&hl=no&gl=US"
>{$t("common.MINECRAFT_MC_ANDROID")}</a
>
<h2>{$t("common.MINECRAFT_CLIENT_SIDE_MODS")}</h2>
<a href="/minecraft/client-side-mods"
>{$t("common.MINECRAFT_CLIENT_SIDE_MODS_URL")}</a
>
<h2>{$t("common.MINECRAFT_PLUGIN_LIST_TITLE")}</h2>
<p>{$t("common.MINECRAFT_PLUGIN_LIST_NOTE")}</p>
<ul>
<li>BlockLocker</li>
<li>CoreProtect</li>
<li><a href="https://map.mc.projectsegfau.lt">Dynmap</a></li>
<li>EssentialsX (EssentialsXDiscord, EssentialsXGeoIP)</li>
<li>Geyser & Floodgate</li>
<li>LuckPerms</li>
<li>
mcMMO <a href="https://dl.odyssey346.dev/Software/mcMMO.jar"
>{$t("common.MINECRAFT_MCMMO")}</a
>
</li>
<li>TabTPS</li>
<li>Vault</li>
<li>ViaVersion ({$t("common.MINECRAFT_VIAVERSION_NOTE")})</li>
<li>PlugMan</li>
<li>CombatLogX</li>
<li>Simple Voice Chat</li>
</ul>