🛰 Init
This commit is contained in:
parent
7724b157e7
commit
4ddcf0ea01
79 changed files with 1954 additions and 1 deletions
32
src/components/Heading.astro
Normal file
32
src/components/Heading.astro
Normal file
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
const { Title, Description } = Astro.props;
|
||||
---
|
||||
|
||||
<div id={Title} class="heading">
|
||||
<!-- For Iconoir -->
|
||||
<slot name="icon" />
|
||||
<!-- Details -->
|
||||
<div class="heading-details">
|
||||
<h2>{Title}</h2>
|
||||
<p>{Description}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style lang="scss">
|
||||
.heading {
|
||||
padding: 42px 0px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
h2 {
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 12px;
|
||||
margin: 0px;
|
||||
}
|
||||
p {
|
||||
font-size: 14px;
|
||||
margin: 0px;
|
||||
}
|
||||
}
|
||||
</style>
|
48
src/components/global/Footer.astro
Normal file
48
src/components/global/Footer.astro
Normal file
|
@ -0,0 +1,48 @@
|
|||
---
|
||||
import { Copyright } from "@iconoir/vue";
|
||||
---
|
||||
|
||||
<div class="footer">
|
||||
<div>
|
||||
<a href="/branding/">Branding Guidelines</a>
|
||||
<a href="/umbrella-policy/">Umbrella Policy</a>
|
||||
<a href="/privacy-policy/">Privacy Policy</a>
|
||||
<a href="/refund-policy/">Refund Policy</a>
|
||||
</div>
|
||||
<p><Copyright/> 2014 - 2025 SudoVanilla</p>
|
||||
</div>
|
||||
|
||||
<style lang="scss" is:global>
|
||||
.footer {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 24px 0px;
|
||||
@media screen and (max-width: 864px) {
|
||||
flex-direction: column !important;
|
||||
}
|
||||
div {
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
@media screen and (max-width: 864px) {
|
||||
flex-direction: column !important;
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
p {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
color: gray;
|
||||
margin: 0px;
|
||||
}
|
||||
svg {
|
||||
width: 16px;
|
||||
}
|
||||
}
|
||||
</style>
|
45
src/components/global/SudoVanillaLogo.astro
Normal file
45
src/components/global/SudoVanillaLogo.astro
Normal file
|
@ -0,0 +1,45 @@
|
|||
---
|
||||
const { WithLogo, OnlyLogo } = Astro.props;
|
||||
---
|
||||
|
||||
<div class="sudovanilla-logo">
|
||||
{
|
||||
WithLogo ? (
|
||||
<img
|
||||
class="sv-logo-white"
|
||||
alt="SudoVanilla Logo"
|
||||
src="https://md.sudovanilla.org/images/sv-logo-4.png"
|
||||
/>
|
||||
) : null
|
||||
}
|
||||
{OnlyLogo ? (
|
||||
null
|
||||
):
|
||||
<p>
|
||||
<img
|
||||
style="width: fit-content; height: 16px;"
|
||||
class="sv-logo-white"
|
||||
alt="SudoVanilla Logo"
|
||||
src="https://md.sudovanilla.org/images/SudoVanilla-Text.png"
|
||||
/>
|
||||
</p>
|
||||
}
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.sudovanilla-logo {
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
align-items: center;
|
||||
p {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
img[src="https://md.sudovanilla.org/images/sv-logo-4.png"],
|
||||
img[src="https://md.sudovanilla.org/images/SudoVanilla%20Logo%20-%20Purple.png"]
|
||||
{
|
||||
width: 32px;
|
||||
height: 30px;
|
||||
}
|
||||
</style>
|
45
src/layouts/Default.astro
Normal file
45
src/layouts/Default.astro
Normal file
|
@ -0,0 +1,45 @@
|
|||
---
|
||||
// Properties
|
||||
const { NoSubHeader, MobileTitle } = Astro.props;
|
||||
|
||||
// Components
|
||||
/// Global
|
||||
import {Head, Header} from "@sudovanilla/pandora"
|
||||
import Footer from '@components/global/Footer.astro'
|
||||
import { Tooltips } from 'astro-tooltips';
|
||||
import SudoVanillaLogo from "@components/global/SudoVanillaLogo.astro";
|
||||
|
||||
// Styles
|
||||
import "@styles/index.scss";
|
||||
---
|
||||
|
||||
<Head
|
||||
Title={MobileTitle}
|
||||
ThemeColor="#000000"
|
||||
Favicon="https://md.sudovanilla.org/images/SudoVanilla%20Logo%20-%20Letter%20V.svg"
|
||||
>
|
||||
<!-- Tooltip -->
|
||||
<Tooltips interactive={false} delay={[15, 14000]} />
|
||||
|
||||
<!-- Analytics -->
|
||||
<script defer src="https://stats.sudovanilla.org/script.js" data-website-id="9fde77c6-194c-437e-87d3-43176b8c6285"></script>
|
||||
</Head>
|
||||
|
||||
<Header MobilePosition="Top">
|
||||
<slot slot="header-start">
|
||||
<a href="/"><SudoVanillaLogo WithLogo /></a>
|
||||
</slot>
|
||||
<slot slot="header-center"></slot>
|
||||
<slot slot="header-end">
|
||||
<a class="pd-link-item" href="/blog/">Blog</a>
|
||||
<a class="pd-link-item" href="https://ark.sudovanilla.org/">Ark</a>
|
||||
<a class="pd-link-item" href="/services/">Services</a>
|
||||
<a class="pd-link-item" href="/donate/">Donate</a>
|
||||
<a class="pd-link-item" href="https://status.sudovanilla.org/">Status</a>
|
||||
</slot>
|
||||
</Header>
|
||||
|
||||
<div class="page-content">
|
||||
<slot name="body" />
|
||||
<Footer/>
|
||||
</div>
|
48
src/layouts/Markdown.astro
Normal file
48
src/layouts/Markdown.astro
Normal file
|
@ -0,0 +1,48 @@
|
|||
---
|
||||
// Properties
|
||||
const { frontmatter } = Astro.props
|
||||
|
||||
// Components
|
||||
/// Global
|
||||
import {Head, Header} from "@sudovanilla/pandora"
|
||||
import Footer from '@components/global/Footer.astro'
|
||||
import Heading from "@components/Heading.astro"
|
||||
import { Tooltips } from 'astro-tooltips';
|
||||
|
||||
import SudoVanillaLogo from "@components/global/SudoVanillaLogo.astro";
|
||||
|
||||
// Styles
|
||||
import "@styles/index.scss";
|
||||
---
|
||||
|
||||
<Head
|
||||
Title={frontmatter.Title}
|
||||
ThemeColor="#000000"
|
||||
Favicon="https://md.sudovanilla.org/images/SudoVanilla%20Logo%20-%20Letter%20V.svg"
|
||||
>
|
||||
<!-- Tooltip -->
|
||||
<Tooltips interactive={false} delay={[15, 14000]} />
|
||||
|
||||
<!-- Analytics -->
|
||||
<script defer src="https://stats.sudovanilla.org/script.js" data-website-id="9fde77c6-194c-437e-87d3-43176b8c6285"></script>
|
||||
</Head>
|
||||
|
||||
<Header MobilePosition="Top">
|
||||
<slot slot="header-start" name="header-start">
|
||||
<a href="/"><SudoVanillaLogo WithLogo /></a>
|
||||
</slot>
|
||||
<slot slot="header-center" name="header-center"></slot>
|
||||
<slot slot="header-end" name="header-end">
|
||||
<a class="pd-link-item" href="/blog/">Blog</a>
|
||||
<a class="pd-link-item" href="https://ark.sudovanilla.org/">Ark</a>
|
||||
<a class="pd-link-item" href="/services/">Services</a>
|
||||
<a class="pd-link-item" href="/donate/">Donate</a>
|
||||
<a class="pd-link-item" href="https://status.sudovanilla.org/">Status</a>
|
||||
</slot>
|
||||
</Header>
|
||||
|
||||
<div class="page-content markdown">
|
||||
<Heading Title={frontmatter.Title}/>
|
||||
<slot />
|
||||
<Footer/>
|
||||
</div>
|
7
src/library/ghost.ts
Normal file
7
src/library/ghost.ts
Normal file
|
@ -0,0 +1,7 @@
|
|||
import GhostContentAPI from '@tryghost/content-api'
|
||||
|
||||
export const ghostClient = new GhostContentAPI({
|
||||
url: 'https://blog.ghost.sudovanilla.org',
|
||||
key: import.meta.env.CONTENT_API_KEY,
|
||||
version: 'v5.0',
|
||||
})
|
8
src/pages/404.astro
Normal file
8
src/pages/404.astro
Normal file
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
import { Error } from "@sudovanilla/errors";
|
||||
---
|
||||
|
||||
<Error
|
||||
Title="Error 404"
|
||||
Message="The page you're looking for is not found."
|
||||
/>
|
149
src/pages/ark.astro
Normal file
149
src/pages/ark.astro
Normal file
|
@ -0,0 +1,149 @@
|
|||
---
|
||||
// Layout
|
||||
import Heading from "@components/Heading.astro";
|
||||
import Default from "@layouts/Default.astro";
|
||||
|
||||
// Components
|
||||
import { CallToAction, Card, Hero } from "@sudovanilla/pandora";
|
||||
---
|
||||
|
||||
<Default MobileTitle="SudoVanilla Ark">
|
||||
<Fragment slot="body">
|
||||
<Hero
|
||||
Title="SudoVanilla Ark"
|
||||
Description="The Heart of SudoVanilla"
|
||||
ImageSource="https://image.proxy.sudovanilla.org/1200,fit/https://md.sudovanilla.org/images/pexels-sukrit-lamthong-34482161-7443099.jpg"
|
||||
ImageAlt="Green Tall Trees on Park . Shot by Sukrit Lamthong on Pexels."
|
||||
/>
|
||||
|
||||
<CallToAction
|
||||
Title="Open Registration"
|
||||
Description="SudoVanilla Ark is an open registration Forgejo instance and is responsible for hosting all of SudoVanilla's source code"
|
||||
ImageSource="https://image.proxy.sudovanilla.org/560,fit/https://md.sudovanilla.org/images/captures/Screenshot From 2024-12-24 23-37-48.png"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="Login / Signup"
|
||||
PrimaryAction="https://ark.sudovanilla.org/user/login"
|
||||
SecondaryActionText="Explore"
|
||||
SecondaryAction="https://ark.sudovanilla.org/explore/"
|
||||
/>
|
||||
|
||||
<Heading
|
||||
Title="SudoVanilla Projects"
|
||||
Description="Every project created by SudoVanilla is open source and available here"
|
||||
/>
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit,minmax(300px,1fr)); gap: 12px;">
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/logo-square-nonskew.png"
|
||||
IconAlt="SudoVanilla Logo"
|
||||
Title="SudoVanilla Website"
|
||||
PrimaryAction="https://ark.sudovanilla.org/korbs/sudovanilla-website/"
|
||||
PrimaryActionText="View">
|
||||
Homepage of SudoVanilla
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/logos/butterflyvu/ButterflyVu%20-%20Original.svg"
|
||||
IconAlt="ButterflyVu Logo"
|
||||
Title="ButterflyVu"
|
||||
PrimaryAction="https://ark.sudovanilla.org/korbs/Butterflyvu/"
|
||||
PrimaryActionText="View">
|
||||
ButterflyVu is a documentation template built on the Astro Web Framework
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/Zorn%20Player.png"
|
||||
IconAlt="Zorn Logo"
|
||||
Title="Zorn"
|
||||
PrimaryAction="https://ark.sudovanilla.org/MinPluto/Zorn/"
|
||||
PrimaryActionText="View">
|
||||
In-House Player built by MinPluto
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/logo-square-nonskew.png"
|
||||
IconAlt="SudoVanilla Logo"
|
||||
Title="Pandora"
|
||||
PrimaryAction="https://ark.sudovanilla.org/korbs/Pandora/"
|
||||
PrimaryActionText="View">
|
||||
An Astro component library for SudoVanilla related websites and projects
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/logos/devojo/svg/white.svg"
|
||||
IconAlt="Devojo Logo"
|
||||
Title="Devojo"
|
||||
PrimaryAction="https://ark.sudovanilla.org/korbs/Devojo/"
|
||||
PrimaryActionText="View">
|
||||
Devojo delivers a desktop-like experience for Penpot users with the additional of integrating tabs to conveniently traverse back and forth between projects
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/logos/netweak-branding-2024.2/Logo/PNG/icon.png"
|
||||
IconAlt="Netweak Logo"
|
||||
Title="Netweak Agent Docker"
|
||||
PrimaryAction="https://ark.sudovanilla.org/Korbs/Netweak-Agent-Docker"
|
||||
PrimaryActionText="View">
|
||||
Run the Netweak Agent on Windows, macOS, Alpine Linux, and other operating systems with Docker
|
||||
</Card>
|
||||
<a style="text-decoration: underline;" href="https://ark.sudovanilla.org/explore/">View More</a>
|
||||
</div>
|
||||
|
||||
<Heading
|
||||
Title="Infrastructure"
|
||||
Description="Source code to most services that is hosted by SudoVanilla is mirrored"
|
||||
/>
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit,minmax(300px,1fr)); gap: 12px;">
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/Cloudreve.png"
|
||||
IconAlt="Cloudreve Icon"
|
||||
Title="Cloudreve"
|
||||
PrimaryAction="https://ark.sudovanilla.org/Infrastructure/Cloudreve"
|
||||
PrimaryActionText="View">
|
||||
Self-hosted file management system with muilt-cloud support
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/logos/forgejo/forgejo.png"
|
||||
IconAlt="Forgejo Icon"
|
||||
Title="Forgejo"
|
||||
PrimaryAction="https://ark.sudovanilla.org/Infrastructure/Forgejo"
|
||||
PrimaryActionText="View">
|
||||
Beyond coding. We forge.
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/OpenGist.svg"
|
||||
IconAlt="OpenGist Icon"
|
||||
Title="OpenGist"
|
||||
PrimaryAction="https://ark.sudovanilla.org/Infrastructure/Opengist"
|
||||
PrimaryActionText="View">
|
||||
Self-hosted pastebin powered by Git, open-source alternative to Github Gist
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/Pingvin.png"
|
||||
IconAlt="Share Icon"
|
||||
Title="Pingvin Share"
|
||||
PrimaryAction="https://ark.sudovanilla.org/Infrastructure/Pingvin-Share"
|
||||
PrimaryActionText="View">
|
||||
A self-hosted file sharing platform that combines lightness and beauty, perfect for seamless and efficient file sharing
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://4get.sudovanilla.org/favicon.ico"
|
||||
IconAlt="4Get Logo"
|
||||
Title="4Get"
|
||||
Description="Search Engine"
|
||||
PrimaryAction="https://ark.sudovanilla.org/Infrastructure/4get"
|
||||
PrimaryActionText="View">
|
||||
4get is a proxy search engine that doesn't suck
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/SafeTwitch.webp"
|
||||
IconAlt="SafeTwitch Logo"
|
||||
Title="SafeTwitch"
|
||||
Description="Twitch"
|
||||
PrimaryAction="https://ark.sudovanilla.org/Infrastructure/SafeTwitch"
|
||||
PrimaryActionText="View">
|
||||
A privacy respecting frontend for twitch.tv
|
||||
</Card>
|
||||
<a style="text-decoration: underline;" href="https://ark.sudovanilla.org/Infrastructure/">View More</a>
|
||||
</div>
|
||||
</Default>
|
||||
|
||||
<style is:global>
|
||||
.pd-cta {
|
||||
margin: 24px 0px 0px 0px !important;
|
||||
}
|
||||
</style>
|
113
src/pages/blog/[...slug].astro
Normal file
113
src/pages/blog/[...slug].astro
Normal file
|
@ -0,0 +1,113 @@
|
|||
---
|
||||
// Layout
|
||||
import Default from "@layouts/Default.astro";
|
||||
|
||||
// Fetch Post (Ghost)
|
||||
import { ghostClient } from "@library/ghost";
|
||||
|
||||
export async function getStaticPaths() {
|
||||
const posts = await ghostClient.posts
|
||||
.browse({
|
||||
limit: "all",
|
||||
})
|
||||
.catch((err) => {
|
||||
console.error(err);
|
||||
});
|
||||
|
||||
return posts.map((post) => {
|
||||
return {
|
||||
params: {
|
||||
slug: post.slug,
|
||||
},
|
||||
props: {
|
||||
post: post,
|
||||
},
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
const { post } = Astro.props;
|
||||
export const prerender = true;
|
||||
|
||||
// Icons
|
||||
import { Calendar } from "@iconoir/vue";
|
||||
|
||||
const Id = Astro.url.href.split("?postid=").pop();
|
||||
const GhostPostFetch =
|
||||
"https://blog.ghost.sudovanilla.org/ghost/api/content/posts/" +
|
||||
Id +
|
||||
"/?key=bef2ed15d9e38f7703be9412b3";
|
||||
const GhostPostResponse = await fetch(GhostPostFetch);
|
||||
const GhostPost = await GhostPostResponse.json();
|
||||
---
|
||||
|
||||
<Default MobileTitle="Blog" NoSubHeader>
|
||||
<slot slot="body">
|
||||
<div class="blog-post">
|
||||
{post.custom_excerpt ?
|
||||
<img width="100%" class="blog-banner" src={'https://image.proxy.sudovanilla.org/1200,fit/' + post.custom_excerpt}/>
|
||||
:
|
||||
null
|
||||
}
|
||||
<h1>{post.title}</h1>
|
||||
<p id="date">
|
||||
<Calendar />
|
||||
{new Date(post.published_at).toLocaleDateString()}
|
||||
</p>
|
||||
<div class="blog-post-content">
|
||||
<Fragment set:html={post.html} />
|
||||
</div>
|
||||
</div>
|
||||
</slot>
|
||||
</Default>
|
||||
|
||||
<style lang="scss" is:global>
|
||||
.blog-post {
|
||||
a {
|
||||
text-decoration: underline;
|
||||
}
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
hr {
|
||||
border: none;
|
||||
background: #383838;
|
||||
border-radius: 1rem;
|
||||
height: 3px;
|
||||
max-width: 124px;
|
||||
}
|
||||
blockquote {
|
||||
margin: 0px;
|
||||
background: #131313;
|
||||
padding: 1px 16px;
|
||||
border-radius: 5px;
|
||||
border-left: 6px white solid;
|
||||
font-size: 14px;
|
||||
}
|
||||
.blog-banner {
|
||||
width: 100%;
|
||||
border-radius: 24px;
|
||||
}
|
||||
h1 {
|
||||
text-align: center;
|
||||
}
|
||||
#date {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 6px;
|
||||
opacity: 0.6;
|
||||
}
|
||||
.blog-post-content {
|
||||
max-width: 700px;
|
||||
margin: auto;
|
||||
margin-top: 48px;
|
||||
}
|
||||
img {
|
||||
display: block;
|
||||
width: 100% !important;
|
||||
max-width: 100% !important;
|
||||
height: fit-content;
|
||||
}
|
||||
}
|
||||
</style>
|
92
src/pages/blog/index.astro
Normal file
92
src/pages/blog/index.astro
Normal file
|
@ -0,0 +1,92 @@
|
|||
---
|
||||
// Layout
|
||||
import Default from "@layouts/Default.astro";
|
||||
|
||||
// Components
|
||||
import Posts from "@components/blog/posts.astro";
|
||||
import Heading from "@components/Heading.astro";
|
||||
import {BlogPost} from "@sudovanilla/pandora"
|
||||
|
||||
// Get Posts
|
||||
import { ghostClient } from "@library/ghost";
|
||||
const posts = await ghostClient.posts
|
||||
.browse({
|
||||
limit: "all",
|
||||
})
|
||||
.catch(() => {null})
|
||||
---
|
||||
|
||||
<Default MobileTitle="Recommended Reading" NoSubHeader>
|
||||
<Fragment slot="body">
|
||||
<Heading Title="Posts"/>
|
||||
<div class="posts">
|
||||
{
|
||||
posts.map((post) => (
|
||||
<BlogPost
|
||||
Link={"/blog/" + post.slug}
|
||||
Title={post.title}
|
||||
ImageSource={post.custom_excerpt}
|
||||
Author="Korbs"
|
||||
Category={post.codeinjection_head}
|
||||
Date={new Date(post.published_at).toLocaleDateString()}
|
||||
/>
|
||||
))
|
||||
}
|
||||
</div>
|
||||
</Fragment>
|
||||
</Default>
|
||||
|
||||
<style lang="scss">
|
||||
.posts {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
||||
grid-gap: 12px;
|
||||
.card-post {
|
||||
border-radius: 6px;
|
||||
border: 1px var(--border-color) solid;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
&:hover {
|
||||
border-color: var(--border-color-hover);
|
||||
}
|
||||
img {
|
||||
width: 100%;
|
||||
border-radius: 6px 6px 0px 0px;
|
||||
aspect-ratio: 16/9;
|
||||
object-fit: cover;
|
||||
}
|
||||
#bg {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
object-position: center;
|
||||
opacity: 1;
|
||||
z-index: -1;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.card-post-content {
|
||||
padding: 12px 16px 32px 16px;
|
||||
backdrop-filter: blur(24px) brightness(0.3);
|
||||
height: 100%;
|
||||
border-radius: 0px 0px 6px 6px;
|
||||
p {
|
||||
margin: 0px;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
#date {
|
||||
font-size: 12px;
|
||||
text-align: right;
|
||||
color: gray;
|
||||
font-weight: normal;
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
right: 0px;
|
||||
margin: 6px 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
86
src/pages/branding.md
Normal file
86
src/pages/branding.md
Normal file
|
@ -0,0 +1,86 @@
|
|||
---
|
||||
layout: '../layouts/Markdown.astro'
|
||||
Title: 'Branding Guidelines'
|
||||
---
|
||||
|
||||
<style>
|
||||
table img {
|
||||
display: block;
|
||||
width: 64%;
|
||||
margin: auto auto 64px auto;
|
||||
}
|
||||
td {
|
||||
padding: 32px;
|
||||
}
|
||||
</style>
|
||||
|
||||
## Name
|
||||
|
||||
The name should be exactly spelt as "SudoVanilla".
|
||||
|
||||
The first letter ,"S", should be capitalize along with the letter "V".
|
||||
|
||||
Examples of how to **NOT** spell it: sv, SV, Sv, sudovanilla, Sudovanilla, Sudo Vanilla, sudo vanilla
|
||||
|
||||
## Logo
|
||||
|
||||
Make sure you're using the up-to-date version of the logo, was logo has been made more bolder back in May 2024. A much thinner version is still available to view, but is outdated.
|
||||
|
||||
Absolutely NEVER set the logo to the color black, please use the purple variant instead.
|
||||
|
||||
<br/>
|
||||
|
||||
### Logo (Circle with letter V)
|
||||
|
||||
| | |
|
||||
|-|-|
|
||||
|  |  |
|
||||
|
||||
Do not make the logo 1:1, as the logo is not 1:1, since the letter V sticks out a little to the left.
|
||||
|
||||
<br/>
|
||||
|
||||
### Logo (Just the letter V)
|
||||
|
||||
| | |
|
||||
|-|-|
|
||||
| |  |
|
||||
|
||||
This version of the logo was mainly created to use as the favicon, which is the icon you usually see in the tab of your web browser.
|
||||
|
||||
Fun fact: The letter "V" is not custom. It is simply the letter "V" using the Wingsong font.
|
||||
|
||||
<br/>
|
||||
|
||||
### Text (SudoVanilla)
|
||||
|
||||
You must use the text as it is in it's own logo. The "Sudo" portion is regular size using Raleway font, the "Vanilla" portion is bolder using Red Hat Text font.
|
||||
|
||||
| | |
|
||||
|-|-|
|
||||
|  |  |
|
||||
|
||||
If you're using light mode on this site, like right now, toggle dark mode to view the original logo, which is in white.
|
||||
|
||||
<br/>
|
||||
|
||||
### Text with Sub-Text
|
||||
|
||||
There are variants of the text logo with sub-text under it, which to be only used in SudoVanilla services and pages where it applies. The sub-text is to be placed in the bottom right corner, below the main text logo, at a smaller font. The font on newer version is Red Hat Text, older versions use Raleway on the sub-text, but are still used.
|
||||
|
||||
Here are examples that are used on both the new Gateway and Status page:
|
||||
|
||||
| | |
|
||||
|-|-|
|
||||
|  |  |
|
||||
|  |  |
|
||||
|
||||
<br/>
|
||||
|
||||
### Logo with Inserted Text
|
||||
|
||||
There are variants of the logo with text included, which to be only used in SudoVanilla services where it applies. The text is to be placed in the bottom right corner of the logo that cuts out this section of the circle as well.
|
||||
|
||||
An example would be the SudoVanilla Gateway:
|
||||
|
||||

|
28
src/pages/donate.astro
Normal file
28
src/pages/donate.astro
Normal file
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
// Layout
|
||||
import Default from "@layouts/Default.astro";
|
||||
|
||||
// Components
|
||||
import Heading from "@components/Heading.astro";
|
||||
|
||||
// List Posts
|
||||
import { getCollection } from "astro:content";
|
||||
const posts = await getCollection("posts");
|
||||
---
|
||||
|
||||
<Default MobileTitle="Become a Sponsor">
|
||||
<Fragment slot="body">
|
||||
<a style="margin-right: 12px;" target="_blank" href="https://paypal.me/SudoVanilla">Paypal</a>
|
||||
<a style="margin-right: 12px;" target="_blank" href="https://liberapay.com/SudoVanilla">Liberapay</a>
|
||||
<a style="margin-right: 12px;" target="_blank" href="https://wise.com/pay/me/corbinj6">Wise</a>
|
||||
<span style="margin-right: 12px;">-</span>
|
||||
<a target="_blank" href="https://payments.sudovanilla.org/p/login/3cs28Rcxeg1EbjG7ss">Stripe Login</a>
|
||||
<noscript>
|
||||
<p>This page generates a pricing table from Stripe, using JavaScript. You appear to have JavaScript disabled or using an unsupported browser.</p>
|
||||
</noscript>
|
||||
<script async src="https://js.stripe.com/v3/pricing-table.js"></script>
|
||||
<stripe-pricing-table pricing-table-id="prctbl_1NgOhRLMVfOpFIdGFBjAVARS"
|
||||
publishable-key="pk_live_51MF34bLMVfOpFIdGXPQfwLICjlGvNE5R6oWklF0apeX91hTx7EGXd7WzqtOI5tFn0ciLnIewoiORGXlGtPzCdvyw00kmt3Ibjk">
|
||||
</stripe-pricing-table>
|
||||
</Fragment>
|
||||
</Default>
|
141
src/pages/index.astro
Normal file
141
src/pages/index.astro
Normal file
|
@ -0,0 +1,141 @@
|
|||
---
|
||||
// Layout
|
||||
import Default from "@layouts/Default.astro";
|
||||
|
||||
// Components
|
||||
import { CallToAction, Hero } from "@sudovanilla/pandora";
|
||||
---
|
||||
|
||||
<Default MobileTitle="SudoVanilla" NoSubHeader>
|
||||
<Fragment slot="body">
|
||||
<Hero
|
||||
Title="SudoVanilla"
|
||||
Description="Counting on the Open Web"
|
||||
ImageSource="https://image.proxy.sudovanilla.org/1200,fit/https://md.sudovanilla.org/images/pexels-jeremy-bishop-1260133-2422970.jpg"
|
||||
ImageAlt="Yosemite Valley, CA, United States. Shot by Forest Trees Photography on Pexels."
|
||||
/>
|
||||
|
||||
<CallToAction
|
||||
Title="Instances"
|
||||
Description="Clients, services, and frontends hosted by SudoVanilla"
|
||||
ImageSource="https://image.proxy.sudovanilla.org/560,fit/https://md.sudovanilla.org/images/8108969777692270658741264896182357708404070882901004771113430719.png"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="Instances"
|
||||
PrimaryAction="/services"
|
||||
/>
|
||||
|
||||
<CallToAction
|
||||
Title="Bunnystone"
|
||||
Description="Minecraft Java Server, in Beta "
|
||||
ImageSource="https://image.proxy.sudovanilla.org/560,fit/https://md.sudovanilla.org/images/minecraft-screenshots/2025-01-10_20.09.40_4K.png"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="Website"
|
||||
PrimaryAction="/services"
|
||||
SecondaryActionText="Guides"
|
||||
SecondaryAction="https://bunnystone.docs.sudovanilla.org"
|
||||
/>
|
||||
|
||||
<CallToAction
|
||||
Title="MinPluto"
|
||||
Description="SudoVanilla Studio"
|
||||
ImageSource="https://image.proxy.sudovanilla.org/560,fit/https://md.sudovanilla.org/images/mp-ba-1.png"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="Website"
|
||||
PrimaryAction="https://studio.sudovanilla.org/"
|
||||
/>
|
||||
|
||||
<CallToAction
|
||||
Title="Zorn Player"
|
||||
Description="Video Player for Astro"
|
||||
ImageSource="https://image.proxy.sudovanilla.org/560,fit/https://md.sudovanilla.org/images/Screenshot From 2024-12-03 22-07-36.png"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="Documentation"
|
||||
PrimaryAction="/docs/zorn/introduction/"
|
||||
/>
|
||||
|
||||
<CallToAction
|
||||
Title="ButterflyVu"
|
||||
Description="Documentation Site"
|
||||
ImageSource="https://md.sudovanilla.org/images/logos/butterflyvu/ButterflyVu%20-%20Banner.png"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="Source Code"
|
||||
PrimaryAction="https://ark.sudovanilla.org/Korbs/butterflyvu"
|
||||
/>
|
||||
|
||||
<CallToAction
|
||||
Title="Init Privacy"
|
||||
Description="Taking Back Control"
|
||||
ImageSource="https://image.proxy.sudovanilla.org/560,fit/https://md.sudovanilla.org/images/6560385685.png"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="Source Code"
|
||||
PrimaryAction="https://ark.sudovanilla.org/Korbs/butterflyvu"
|
||||
Label="Development Paused"
|
||||
LabelType="Note"
|
||||
/>
|
||||
|
||||
<CallToAction
|
||||
Title="Devojo"
|
||||
Description="A Desktop-Like Experience"
|
||||
ImageSource="https://md.sudovanilla.org/images/Z1.webp"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="Source Code"
|
||||
PrimaryAction="https://ark.sudovanilla.org/Korbs/Devojo"
|
||||
/>
|
||||
</Fragment>
|
||||
</Default>
|
||||
|
||||
|
||||
<style lang="scss">
|
||||
.posts {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
||||
grid-gap: 12px;
|
||||
.card-post {
|
||||
border-radius: 6px;
|
||||
border: 1px var(--border-color) solid;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
&:hover {
|
||||
border-color: var(--border-color-hover);
|
||||
}
|
||||
img {
|
||||
width: 100%;
|
||||
border-radius: 6px 6px 0px 0px;
|
||||
aspect-ratio: 16/9;
|
||||
object-fit: cover;
|
||||
}
|
||||
#bg {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
object-position: center;
|
||||
opacity: 1;
|
||||
z-index: -1;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.card-post-content {
|
||||
padding: 12px 16px 32px 16px;
|
||||
backdrop-filter: blur(24px) brightness(0.3);
|
||||
height: 100%;
|
||||
border-radius: 0px 0px 6px 6px;
|
||||
p {
|
||||
margin: 0px;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
#date {
|
||||
font-size: 12px;
|
||||
text-align: right;
|
||||
color: gray;
|
||||
font-weight: normal;
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
right: 0px;
|
||||
margin: 6px 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
134
src/pages/privacy-policy/index.md
Normal file
134
src/pages/privacy-policy/index.md
Normal file
|
@ -0,0 +1,134 @@
|
|||
---
|
||||
layout: '../../layouts/Markdown.astro'
|
||||
Title: 'Privacy Policy'
|
||||
---
|
||||
|
||||
<p style="opacity: 0.5; font-size: 14px">Last Updated: December 3rd, 2024</p>
|
||||
|
||||
## Contact for data protection issues
|
||||
|
||||
If you have any questions regarding data protection, please contact SudoVanilla at privacy (at) sudovanilla.org.
|
||||
|
||||
## Where is the personal data stored?
|
||||
|
||||
SudoVanilla runs it's main server locally, as everything is selfhosted. SudoVanilla is located in the Unites States.
|
||||
|
||||
## Support
|
||||
|
||||
**Email**
|
||||
|
||||
When you send an email to any sudovanilla.org emails, your email address and the information you sent is collected. All emails are archived.
|
||||
|
||||
## Donations and Other Payments
|
||||
|
||||
**Payments**
|
||||
|
||||
Payment information are processed for when you donate to SudoVanilla or any other purchases. Stripe is used as the preferred payment processor for all of SudoVanilla and it's donations.
|
||||
|
||||
Stripe logs the following details:
|
||||
- Charge ID
|
||||
- Expire Date
|
||||
- Last 4 digits of the card
|
||||
- Card Type
|
||||
- Origin Country
|
||||
- Issuer
|
||||
- Owner
|
||||
- Owner Email
|
||||
|
||||
If you don't want your information shared with SudoVanilla, it is recommended to use https://privacy.com to create a masked card. You can join Privacy with SudoVanilla's invite link to https://app.privacy.com/join/MCHG9.
|
||||
|
||||
Emails sent from Stripe should be sent via a sudovanilla.org email, as of November 15th 2024. If not, report back.
|
||||
|
||||
All payments should done via sudovanilla.org with a Stripe user dashboard. If not, report back.
|
||||
|
||||
~~SudoVanilla prints phyical copies of all receipts, as of November 15th 2024.~~ (Out of ink)
|
||||
|
||||
**Retention Period**
|
||||
|
||||
Stripe seems to keep all records so far, with no retention period.
|
||||
|
||||
## Analytics
|
||||
|
||||
SudoVanilla uses Umami analytics software on it's main website and it's studio webite.
|
||||
|
||||
The following is recorded:
|
||||
- Page visited
|
||||
- Referrers
|
||||
- User Agent
|
||||
- OS
|
||||
- Device Type
|
||||
- Country
|
||||
|
||||
All analytics are public to view:
|
||||
- [sudovanilla.org](https://stats.sudovanilla.org/share/KfVISbb3ize2FhSJ/sudovanilla.org)
|
||||
- [studio.sudovanilla.org](https://stats.sudovanilla.org/share/EeQwCMbGzkygdN04/studio.sudovanilla.org)
|
||||
|
||||
**Retention Period**
|
||||
|
||||
The stats are kept as long as possible, they do not get reset unless the entire Umami setup is reset.
|
||||
|
||||
## Services:
|
||||
|
||||
**SudoVanilla Gateway**
|
||||
|
||||
When you sign up for any services on SudoVanilla, most of the time you'll be required go through SudoVanilla Gateway.
|
||||
|
||||
**Logs**
|
||||
|
||||
Gateway is powered by LogTo, which is selfhosted on the primary server, it has audit logs for the admin to view.
|
||||
|
||||
The following is what SudoVanilla can see in these logs:
|
||||
- Event Key
|
||||
- User
|
||||
- Application
|
||||
- Time
|
||||
- Log ID
|
||||
- User Agent
|
||||
- IPv4 Address
|
||||
|
||||
Some data is also logged when you interact with the Gateway like user-agent and IP address, without an account, as LogTo also logs certain "interactions". Such as focusing on the email input as you're signing-in or creating an account.
|
||||
|
||||
**SudoVanilla Ark (Forgejo)**
|
||||
|
||||
When you sign up for SudoVanilla Ark, the following information is recorded:
|
||||
- ID
|
||||
- Email
|
||||
- Username
|
||||
- Created Date
|
||||
- Last Sign-In Date
|
||||
|
||||
**Opengist**
|
||||
|
||||
When you sign up for Opengist on SudoVanilla, the following information is recorded:
|
||||
- ID
|
||||
- Username
|
||||
- Created Date
|
||||
|
||||
**SudoVanilla Cloud (Cloudreve)**
|
||||
|
||||
When you sign up for SudoVanilla Cloud, the following information is recorded:
|
||||
- Email
|
||||
- Quota Used
|
||||
|
||||
**SudoVanilla Share (Pingvin)**
|
||||
|
||||
All files you share on SudoVanilla Share are deleted after 72 hours.
|
||||
|
||||
When you sign up for SudoVanilla Share, the following information is recorded:
|
||||
- Email
|
||||
- Username
|
||||
|
||||
**Zipline**
|
||||
|
||||
All content you upload to Zipline on SudoVanilla do not expire.
|
||||
|
||||
When you sign up for SudoVanilla Share, the following information is recorded:
|
||||
- Username
|
||||
|
||||
## Deletion Request
|
||||
|
||||
If you're not comfortable with SudoVanilla keeping data suchs as emails you send, physical copies of your reciepts, or etc; then you can request this information to be deleted by [sending an email](mailto:privacy-deletion-PLEASE-REMOVE-THIS-FOR-SPAM-PROTECTION@sudovanilla.org?subject=Privacy%20Request&body=I%20want%20the%20following%20information%20deleted%3A%20).
|
||||
|
||||
If you would like to delete your SudoVanilla Gateway account, feel free to [send an email](mailto:privacy-deletion-PLEASE-REMOVE-THIS-FOR-SPAM-PROTECTION@sudovanilla.org?subject=Privacy%20Request&body=I%20want%20the%20following%20information%20deleted%3A%20). All accounts attached to your SudoVanilla Gateway will be deleted.
|
||||
|
||||
If you would like to delete your SudoVanilla Ark account, go to your [Account settings](privacy-deletion-PLEASE-REMOVE-THIS-FOR-SPAM-PROTECTION@sudovanilla.org) and follow the prompt in the "Delete your account" portion. If you're unable to access your SudoVanilla Ark account, please send a reset password request instead, then try again.
|
66
src/pages/privacy-policy/social.md
Normal file
66
src/pages/privacy-policy/social.md
Normal file
|
@ -0,0 +1,66 @@
|
|||
---
|
||||
layout: '../../layouts/Markdown.astro'
|
||||
Title: 'SudoVanilla Social Privacy Policy'
|
||||
---
|
||||
|
||||
<p style="opacity: 0.5; font-size: 14px">Last Updated: January 3rd, 2025</p>
|
||||
|
||||
This privacy policy describes how social.sudovanilla.org ("social.sudovanilla.org", "we", "us") collects, protects and uses the personally identifiable information you may provide through the social.sudovanilla.org website or its API. The policy also describes the choices available to you regarding our use of your personal information and how you can access and update this information. This policy does not apply to the practices of companies that social.sudovanilla.org does not own or control, or to individuals that social.sudovanilla.org does not employ or manage.
|
||||
|
||||
# What information do we collect?
|
||||
|
||||
* **Basic account information**: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography, profile picture and header image are always listed publicly.
|
||||
* **Posts, following and other public information**: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public.
|
||||
* **Direct and followers-only posts**: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it's important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. **Please keep in mind that the operators of the server and any receiving server may view such messages**, and that recipients may screenshot, copy or otherwise re-share them. **Do not share any sensitive information over Mastodon.**
|
||||
* **IPs and other metadata**: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server.
|
||||
|
||||
# What do we use your information for?
|
||||
|
||||
Any of the information we collect from you may be used in the following ways:
|
||||
|
||||
* To provide the core functionality of Mastodon. You can only interact with other people's content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline.
|
||||
* To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations.
|
||||
* The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions.
|
||||
|
||||
# How do we protect your information?
|
||||
|
||||
We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.
|
||||
|
||||
# What is our data retention policy?
|
||||
|
||||
We will make a good faith effort to:
|
||||
|
||||
* Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days.
|
||||
* Retain the IP addresses associated with registered users no more than 12 months.
|
||||
|
||||
You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image.
|
||||
|
||||
You may irreversibly delete your account at any time.
|
||||
|
||||
# Do we use cookies?
|
||||
|
||||
Yes. Cookies are small files that a site or its service provider transfers to your computer's hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account.
|
||||
|
||||
We use cookies to understand and save your preferences for future visits.
|
||||
|
||||
# Do we disclose any information to outside parties?
|
||||
|
||||
We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.
|
||||
|
||||
Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.
|
||||
|
||||
When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.
|
||||
|
||||
# Site usage by children
|
||||
|
||||
If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.
|
||||
|
||||
If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.
|
||||
|
||||
Law requirements can be different if this server is in another jurisdiction.
|
||||
|
||||
- - -
|
||||
|
||||
This document is CC-BY-SA. Originally adapted from the [Discourse privacy policy](https://github.com/discourse/discourse).
|
||||
|
||||
Please also view the [Privacy Policy for SudoVanilla Gateway](https://sudovanilla.org/privacy-policy/#:~:text=SudoVanilla%20Gateway,creating%20an%20account.).
|
8
src/pages/refund-policy.md
Normal file
8
src/pages/refund-policy.md
Normal file
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
layout: '../layouts/Markdown.astro'
|
||||
Title: 'Refund Policy'
|
||||
---
|
||||
|
||||
**Donations**
|
||||
|
||||
SudoVanilla only accepts donations via Stripe or Liberapay, all donations sent to SudoVanilla are final and refunds will not be allowed.
|
253
src/pages/services.astro
Normal file
253
src/pages/services.astro
Normal file
|
@ -0,0 +1,253 @@
|
|||
---
|
||||
// Layout
|
||||
import Default from "@layouts/Default.astro";
|
||||
|
||||
// Components
|
||||
import Heading from "@components/Heading.astro";
|
||||
import {Card} from "@sudovanilla/pandora"
|
||||
---
|
||||
|
||||
<Default MobileTitle="Instances">
|
||||
<Fragment slot="body">
|
||||
<Heading Title="Fediverse"/>
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit,minmax(300px,1fr)); gap: 12px;">
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/Mastodon.svg"
|
||||
IconAlt="Mastodon Icon"
|
||||
Title="Mastodon"
|
||||
PrimaryAction="https://social.sudovanilla.org/"
|
||||
SecondaryAction="https://github.com/mastodon/mastodon"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Join the Fediverse
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/Lemmy_logo.svg"
|
||||
IconAlt="Lemmy Icon"
|
||||
Title="Lemmy"
|
||||
PrimaryAction="https://lemmy.sudovanilla.org/"
|
||||
SecondaryAction="https://github.com/LemmyNet"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Reddit Alternative
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/writefreely.svg"
|
||||
IconAlt="Writefreely Icon"
|
||||
Title="Writefreely"
|
||||
PrimaryAction="https://write.sudovanilla.org/"
|
||||
SecondaryAction="https://github.com/writefreely/writefreely"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Write a blog
|
||||
</Card>
|
||||
</div>
|
||||
<Heading Title="Cloud Storage and File Share"/>
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit,minmax(300px,1fr)); gap: 12px;">
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/Cloudreve.png"
|
||||
IconAlt="Cloudreve Icon"
|
||||
Title="Cloudreve"
|
||||
PrimaryAction="https://cloud.sudovanilla.org/"
|
||||
SecondaryAction="https://github.com/cloudreve/Cloudreve"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Cloud Storage
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/immich-logo.png"
|
||||
IconAlt="Immich Icon"
|
||||
Title="Immich"
|
||||
PrimaryAction="https://photos.sudovanilla.org/"
|
||||
SecondaryAction="https://ark.sudovanilla.org/Infrastructure/immich"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Photos and Videos Backup
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/Pingvin.png"
|
||||
IconAlt="Share Icon"
|
||||
Title="Pingvin Share"
|
||||
PrimaryAction="https://s.sudovanilla.org/"
|
||||
SecondaryAction="https://github.com/stonith404/pingvin-share"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
File Share
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/zipline_small.png"
|
||||
IconAlt="Zipline Logo"
|
||||
Title="Zipline"
|
||||
Description="ShareX"
|
||||
PrimaryAction="https://zp.sudovanilla.org/"
|
||||
SecondaryAction="https://ark.sudovanilla.org/Infrastructure/zipline"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
ShareX
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/Vaultwarden%20Icon%20-%20White.svg"
|
||||
IconAlt="Vaultwarden Icon"
|
||||
Title="Vaultwarden"
|
||||
PrimaryAction="https://vault.sudovanilla.org/"
|
||||
SecondaryAction="https://ark.sudovanilla.org/Infrastructure/vaultwarden"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Password Manager
|
||||
</Card>
|
||||
</div>
|
||||
<Heading Title="Developers"/>
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit,minmax(300px,1fr)); gap: 12px;">
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/logos/forgejo/forgejo.png"
|
||||
IconAlt="Forgejo Icon"
|
||||
Title="Forgejo"
|
||||
PrimaryAction="https://ark.sudovanilla.org/"
|
||||
SecondaryAction="https://ark.sudovanilla.org/Infrastructure/forgejo"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Git
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/OpenGist.svg"
|
||||
IconAlt="OpenGist Icon"
|
||||
Title="OpenGist"
|
||||
PrimaryAction="https://gist.sudovanilla.org/"
|
||||
SecondaryAction="https://github.com/thomiceli/opengist"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Gist
|
||||
</Card>
|
||||
</div>
|
||||
<Heading Title="Search Engines"/>
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit,minmax(300px,1fr)); gap: 12px;">
|
||||
<Card
|
||||
Icon="https://4get.sudovanilla.org/favicon.ico"
|
||||
IconAlt="4Get Logo"
|
||||
Title="4Get"
|
||||
Description="Search Engine"
|
||||
PrimaryAction="https://4get.sudovanilla.org/"
|
||||
SecondaryAction="https://git.lolcat.ca/lolcat/4get"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
4get is a proxy search engine that doesn't suck
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/Araa.png"
|
||||
IconAlt="Araa Logo"
|
||||
Title="Araa"
|
||||
Description="Search Engine"
|
||||
PrimaryAction="https://araa.sudovanilla.org/"
|
||||
SecondaryAction="https://github.com/Extravi/araa-search"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
A privacy-respecting, ad-free, self-hosted Google metasearch engine with strong security
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/Whoogle.png"
|
||||
IconAlt="Whoogle Logo"
|
||||
Title="Whoogle"
|
||||
Description="Search Engine"
|
||||
PrimaryAction="https://whoogle.sudovanilla.org/"
|
||||
SecondaryAction="https://sr.ht/~benbusby/whoogle-search/"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
A self-hosted, ad-free, privacy-respecting "metasearch engine"
|
||||
</Card>
|
||||
</div>
|
||||
<Heading Title="Clients"/>
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit,minmax(300px,1fr)); gap: 12px;">
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/cinny.svg"
|
||||
IconAlt="Cinny Logo"
|
||||
Title="Cinny"
|
||||
Description="Matrix Chat"
|
||||
PrimaryAction="https://chat.sudovanilla.org/"
|
||||
SecondaryAction="https://github.com/cinnyapp/cinny"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Matrix Chat
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/phanpy.svg"
|
||||
IconAlt="Phanpy Logo"
|
||||
Title="Phanpy"
|
||||
Description="Mastodon"
|
||||
PrimaryAction="https://m.sudovanilla.org/"
|
||||
SecondaryAction="https://github.com/cheeaun/phanpy"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Mastodon
|
||||
</Card>
|
||||
</div>
|
||||
<Heading Title="Frontends"/>
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit,minmax(300px,1fr)); gap: 12px;">
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/libreddit.svg"
|
||||
IconAlt="LibRedirect Logo"
|
||||
Title="LibRedirect"
|
||||
Description="Reddit"
|
||||
PrimaryAction="https://lr.sudovanilla.org/"
|
||||
SecondaryAction="https://github.com/redlib-org/redlib"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Reddit
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/SafeTwitch.webp"
|
||||
IconAlt="SafeTwitch Logo"
|
||||
Title="SafeTwitch"
|
||||
Description="Twitch"
|
||||
PrimaryAction="https://twitch.sudovanilla.org/"
|
||||
SecondaryAction="https://codeberg.org/SafeTwitch/safetwitch"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Twitch
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/Rimgo.svg"
|
||||
IconAlt="Rimgo Logo"
|
||||
Title="Rimgo"
|
||||
Description="Imgur"
|
||||
PrimaryAction="https://i.sudovanilla.org/"
|
||||
SecondaryAction="https://codeberg.org/rimgo/rimgo"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Imgur
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/AnonymousOverflow.webp"
|
||||
IconAlt="AnonymousOverflow Logo"
|
||||
Title="AnonymousOverflow"
|
||||
Description="StackOverflow"
|
||||
PrimaryAction="https://o.sudovanilla.org/"
|
||||
SecondaryAction="https://github.com/httpjamesm/AnonymousOverflow"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
StackOverflow
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/Quetre.webp"
|
||||
IconAlt="Quetre Logo"
|
||||
Title="Quetre"
|
||||
Description="Quora"
|
||||
PrimaryAction="https://a.sudovanilla.org/"
|
||||
SecondaryAction="https://github.com/zyachel/quetre"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Quora
|
||||
</Card>
|
||||
<Card
|
||||
Icon="https://md.sudovanilla.org/images/icons/libmedium.png"
|
||||
IconAlt="LibMedium Logo"
|
||||
Title="LibMedium"
|
||||
Description="Medium"
|
||||
PrimaryAction="https://r.sudovanilla.org/"
|
||||
SecondaryAction="https://github.com/realaravinth/libmedium"
|
||||
PrimaryActionText="View"
|
||||
SecondaryActionText="Source">
|
||||
Medium
|
||||
</Card>
|
||||
</div>
|
||||
</Fragment>
|
||||
</Default>
|
83
src/pages/umbrella-policy.md
Normal file
83
src/pages/umbrella-policy.md
Normal file
|
@ -0,0 +1,83 @@
|
|||
---
|
||||
layout: '../layouts/Markdown.astro'
|
||||
Title: 'Umbrella Policy'
|
||||
---
|
||||
|
||||
<img src="https://md.sudovanilla.org/images/umbrella-white-glove.png" style="width: 100%"/>
|
||||
|
||||
<p style="opacity: 0.5; font-size: 14px">Last Updated: December 19th, 2024</p>
|
||||
<p style="opacity: 0.75; font-size: 14px">This policy goes into effect on January 1st, 2025</p>
|
||||
|
||||
## Hardware
|
||||
|
||||
All physical servers must be on-premise, where the owner of SudoVanilla can access it locally by hand and over the local network.
|
||||
|
||||
## Domain and URLs
|
||||
|
||||
Everything that runs on SudoVanilla must be viewed via only the "sudovanilla.org" domain and it's subdomains. Any other domains such as "sudovanilla.com", "korbsstudio.com", "minpluto.org", and any other domains are not allowed.
|
||||
|
||||
Any content hosted on services provided by SudoVanilla needs to pulling from the "sudovanilla.org" domain and it's subdomains and not outside sources. Services should either proxy the content or provide it locally in the source code.
|
||||
|
||||
If you host any content on services such as SudoVanilla Ark, SudoVanilla's Opengist, or etc and you need to host media from an external source for API usage or to make the media dynamic, SudoVanilla has it's own image proxy that can be used. The image proxy is "https://image.proxy.sudovanilla.org/" followed by your external URL.
|
||||
|
||||
Example would be: "https://image.proxy.sudovanilla.org/https://md.sudovanilla.org/images/Screenshot%20From%202024-12-03%2022-07-36.png". You can use something like "/560,fit/" between the parameters to force the image to resize.
|
||||
|
||||
The image proxy does not support video or audio, you can use SudoVanilla's Zipline instance for this usage. Zipline supports video and audio formats.
|
||||
|
||||
**Exceptions**
|
||||
- [All Clients](https://sudovanilla.org/services#Clients)
|
||||
|
||||
## Software
|
||||
|
||||
Software such as NodeJS packages(NPM, Yarn, PNPM, Bun, JavaScript, TypeScript) built by SudoVanilla must be uploaded to only the SudoVanilla Registry.
|
||||
|
||||
Software such as Docker or OCI images built by SudoVanilla must be uploaded to only the SudoVanilla Registry.
|
||||
|
||||
Software such as source code of any kind, and anything else built by SudoVanilla must be uploaded to only SudoVanilla Ark or SudoVanilla's Opengist.
|
||||
|
||||
All software built by SudoVanilla is not allowed on any other sources besides SudoVanilla Ark or SudoVanilla Registry. Re-uploading, cloning, or forking any software to any other outside sources such as GitHub is not allowed. SudoVanilla is aware that not allowing this can be controversial in the open source community, some exceptions have been made, view "Exceptions" list below this section of the Umbrella Policy.
|
||||
|
||||
NOTE: The open source licenses that SudoVanilla projects use 'can't legally enforce' this restriction of the Umbrella Policy, if you proceed SudoVanilla will not hesitate 'if caught' to send a takedown request to you or eventfully the webmaster. Exceptions are still allowed, view "Exceptions" list below this section of the Umbrella Policy. SudoVanilla will never send takedown requests to said exceptions unless you violated the open source license of the project.
|
||||
|
||||
SudoVanilla mirrors projects it personally likes and mirrors from other sources to it's own server, if you're the developer of the software that was mirrored and do not want it mirrored anymore, please send a request takedown via email. Doing so will be publicly added to a transparency report.
|
||||
|
||||
SudoVanilla sometimes re-publish Docker images and NodeJS packages that it uses it's own projects to it's own server.
|
||||
|
||||
**Exceptions**
|
||||
- Codeberg - "codeberg.org"
|
||||
- Pub Solar - "git.pub.solar"
|
||||
|
||||
## Gateway
|
||||
|
||||
When logging into a service hosted by SudoVanilla such as SudoVanilla Ark, Penpot, Opengist, Pingvin, and etc it must be setup to only allow a login via the gateway using the OpenID Connect method. SudoVanilla Gateway is a login portal where your central account is for most SudoVanilla services.
|
||||
|
||||
If the software in question is not able to provide a method for this, more specifically allow for an OpenID Connect login, the software will be disabled and removed from SudoVanilla.
|
||||
|
||||
**Exceptions**
|
||||
- [All Clients](https://sudovanilla.org/services#Clients)
|
||||
- SudoVanilla Cloud
|
||||
- Jellyfin
|
||||
|
||||
<p style="opacity: 0.75; font-size: 14px">SudoVanilla Gateway is selfhosted, powered by <a href="https://logto.io">LogTo</a></p>
|
||||
|
||||
## Communication and Socials
|
||||
|
||||
Any socials accounts operated by SudoVanilla and Korbs must be ran under the "sudovanilla.org" domain. This means that the platform must be at least part of the Fediverse and using ActivityPub to communicate with other servers.
|
||||
|
||||
- Mastodon - [@korbs@social.sudovanilla.org](https://social.sudovanilla.org/@korbs)
|
||||
- Lemmy - [@korbs@lemmy.sudovanilla.org](https://lemmy.sudovanilla.org/u/Korbs)
|
||||
|
||||
## Media and Streaming
|
||||
|
||||
Any video provided by SudoVanilla such as tutorials, generic captures, or updates should be published to SudoVanilla's media domain, "md.sudovanilla", or to it's ocean domain, "ocean.sudovanilla.org".
|
||||
|
||||
If SudoVanilla were to stream any content such as live stream, it's .m3u8 source must be under "live.sudovanilla.org".
|
||||
|
||||
## Exceptions
|
||||
|
||||
SudoVanilla is not capable of keep every service it uses within it's walls, therefore some exceptions have been made:
|
||||
- Email
|
||||
- SMTP
|
||||
- VPNs
|
||||
- Domain Registrar
|
||||
- Status Page
|
113
src/styles/index.scss
Normal file
113
src/styles/index.scss
Normal file
|
@ -0,0 +1,113 @@
|
|||
@font-face {
|
||||
font-family: OpenSans;
|
||||
src: url(/fonts/Open_Sans/static/OpenSans-Regular.ttf);
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: OpenSans;
|
||||
src: url(/fonts/Open_Sans/static/OpenSans-Bold.ttf);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url(/fonts/Raleway/static/Raleway_Regular.ttf);
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url(/fonts/Raleway/static/Raleway-Bold.ttf);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
:root {
|
||||
--pandora-text: white;
|
||||
--pandora-shadows: #121212;
|
||||
--pandora-borders: white;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: auto;
|
||||
max-width: 1200px;
|
||||
padding: 0px 24px !important;
|
||||
font-family: OpenSans;
|
||||
color: white;
|
||||
background: black;
|
||||
cursor: default;
|
||||
transition: 1s color, 1s background;
|
||||
mobilebar {
|
||||
display: none;
|
||||
}
|
||||
@media screen and (max-width: 800px) {
|
||||
header, .sidebar {
|
||||
display: none;
|
||||
}
|
||||
mobilebar {
|
||||
display: flex;
|
||||
}
|
||||
.mobile-docs-dropdown {
|
||||
display: block !important;
|
||||
}
|
||||
.document-layout {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
table {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
|
||||
td,
|
||||
th {
|
||||
border: 1px solid transparent;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
tr:nth-child(odd) {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
tr:nth-child(even) {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
tr:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
th {
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12pqx;
|
||||
text-align: left;
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
* {
|
||||
::-webkit-scrollbar {
|
||||
width: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.page-content {
|
||||
max-width: 1200px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.markdown {
|
||||
a {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue