Compare commits
10 commits
51aebf04b7
...
3593d4c42e
Author | SHA1 | Date | |
---|---|---|---|
|
3593d4c42e | ||
|
54c5e38455 | ||
|
aad9fa8804 | ||
|
f1cd50fe9d | ||
|
7f4edf307f | ||
|
2037a41f81 | ||
|
6bff4150ec | ||
|
c085380219 | ||
|
6cf8fde198 | ||
|
035e622fb8 |
32 changed files with 120 additions and 1061 deletions
|
@ -1,9 +1,7 @@
|
|||
import { defineConfig } from 'astro/config';
|
||||
import markdoc from '@astrojs/markdoc';
|
||||
import robotsTxt from 'astro-robots-txt';
|
||||
import mdx from '@astrojs/mdx';
|
||||
import vue from "@astrojs/vue";
|
||||
import betterImageService from "astro-better-image-service";
|
||||
import node from '@astrojs/node';
|
||||
|
||||
export default defineConfig({
|
||||
|
@ -13,69 +11,16 @@ export default defineConfig({
|
|||
'/docs/': '/docs/zorn/introduction/',
|
||||
'/docs/minpluto': '/docs/zorn/introduction/'
|
||||
},
|
||||
integrations: [markdoc(), mdx(),
|
||||
betterImageService({
|
||||
limitInputPixels: true
|
||||
}),
|
||||
(await import("@playform/compress")).default(),
|
||||
robotsTxt({
|
||||
policy: [{
|
||||
userAgent: 'Googlebot',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'Bingbot',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: '404checker',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'MJ12Bot',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'AspiegelBot',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'PetalBot',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'AhrefsBot',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'SEMrushBot',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'DotBot',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'Slurp',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'DuckDuckBot',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'YandexBot',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'MauiBot',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'baiduspider',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'adidxbot',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'microsoftbot',
|
||||
disallow: '/'
|
||||
}, {
|
||||
userAgent: 'OtherBot',
|
||||
disallow: '/'
|
||||
}]
|
||||
}), vue()],
|
||||
integrations: [
|
||||
mdx(),
|
||||
vue(),
|
||||
robotsTxt({policy: [{userAgent: 'Googlebot',disallow: '/'}, {userAgent: 'Bingbot',disallow: '/'}, {userAgent: '404checker',disallow: '/'}, {userAgent: 'MJ12Bot',disallow: '/'}, {userAgent: 'AspiegelBot',disallow: '/'}, {userAgent: 'PetalBot',disallow: '/'}, {userAgent: 'AhrefsBot',disallow: '/'}, {userAgent: 'SEMrushBot',disallow: '/'}, {userAgent: 'DotBot',disallow: '/'}, {userAgent: 'Slurp',disallow: '/'}, {userAgent: 'DuckDuckBot',disallow: '/'}, {userAgent: 'YandexBot',disallow: '/'}, {userAgent: 'MauiBot',disallow: '/'}, {userAgent: 'baiduspider',disallow: '/'}, {userAgent: 'adidxbot',disallow: '/'}, {userAgent: 'microsoftbot',disallow: '/'}, {userAgent: 'OtherBot',disallow: '/'}]})
|
||||
],
|
||||
output: 'server',
|
||||
adapter: node({
|
||||
mode: 'standalone',
|
||||
}), server: {
|
||||
}),
|
||||
server: {
|
||||
port: 5522,
|
||||
host: true
|
||||
},
|
||||
|
|
BIN
bun.lockb
BIN
bun.lockb
Binary file not shown.
|
@ -20,6 +20,7 @@
|
|||
"@meilisearch/instant-meilisearch": "^0.22.0",
|
||||
"@playform/compress": "^0.1.6",
|
||||
"@sudovanilla/errors": "^3.0.0",
|
||||
"@sudovanilla/pandora": "^1.7.0",
|
||||
"@tryghost/content-api": "^1.11.21",
|
||||
"astro": "^4.16.14",
|
||||
"astro-better-image-service": "^2.0.37",
|
||||
|
|
|
@ -1,197 +0,0 @@
|
|||
---
|
||||
// Properties
|
||||
const {
|
||||
Title,
|
||||
Description,
|
||||
Image,
|
||||
ImageAlt,
|
||||
ImageProperties,
|
||||
CTA_Primary,
|
||||
CTA_Primary_Link,
|
||||
CTA_Secondary,
|
||||
CTA_Secondary_Link,
|
||||
Label,
|
||||
LabelVarient,
|
||||
Custom,
|
||||
CreditImage
|
||||
} = Astro.props;
|
||||
|
||||
// Icons
|
||||
import { InfoCircle } from "@iconoir/vue";
|
||||
---
|
||||
|
||||
<div class="large-card">
|
||||
<div class="lc-start">
|
||||
<h2 id={Title}>{Title}</h2>
|
||||
<p>{Description}</p>
|
||||
<div class="lc-cta">
|
||||
{
|
||||
CTA_Secondary ? (
|
||||
<a id="cta-secondary" href={CTA_Secondary_Link}>
|
||||
{CTA_Secondary}
|
||||
</a>
|
||||
) : null
|
||||
}
|
||||
{
|
||||
CTA_Primary ? (
|
||||
<a id="cta-primary" href={CTA_Primary_Link}>
|
||||
{CTA_Primary}
|
||||
</a>
|
||||
) : null
|
||||
}
|
||||
{
|
||||
Label ? (
|
||||
<a class:list={'label-varient-' + LabelVarient} style="pointer-events: none;" href="#">{Label}</a>
|
||||
) : null
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="lc-end">
|
||||
{Custom ? <slot/> : <img loading="lazy" src={Image} alt={ImageAlt} style={ImageProperties} />}
|
||||
{CreditImage ? <InfoCircle title={CreditImage} id="video-credit-js" width={16} height={16} /> : null}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style lang="scss">
|
||||
.large-card {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: row-reverse;
|
||||
justify-content: space-between;
|
||||
gap: 48px;
|
||||
margin: 24px 0px 140px 0px;
|
||||
@media screen and (max-width: 800px) {
|
||||
flex-direction: column-reverse;
|
||||
}
|
||||
&:nth-child(3) {
|
||||
flex-direction: row;
|
||||
@media screen and (max-width: 800px) {
|
||||
flex-direction: column-reverse;
|
||||
}
|
||||
img {
|
||||
box-shadow: 10px 10px 0px 0px #13151a;
|
||||
transition: 1s box-shadow;
|
||||
&:hover {
|
||||
box-shadow: 20px 20px 0px 0px #13151a;
|
||||
transition: 1s box-shadow;
|
||||
}
|
||||
}
|
||||
}
|
||||
&:nth-child(5) {
|
||||
flex-direction: row;
|
||||
@media screen and (max-width: 800px) {
|
||||
flex-direction: column-reverse;
|
||||
}
|
||||
img {
|
||||
box-shadow: 10px 10px 0px 0px #13151a;
|
||||
transition: 1s box-shadow;
|
||||
&:hover {
|
||||
box-shadow: 20px 20px 0px 0px #13151a;
|
||||
transition: 1s box-shadow;
|
||||
}
|
||||
}
|
||||
}
|
||||
&:nth-child(7) {
|
||||
flex-direction: row;
|
||||
@media screen and (max-width: 800px) {
|
||||
flex-direction: column-reverse;
|
||||
}
|
||||
img {
|
||||
box-shadow: 10px 10px 0px 0px #13151a;
|
||||
transition: 1s box-shadow;
|
||||
&:hover {
|
||||
box-shadow: 20px 20px 0px 0px #13151a;
|
||||
transition: 1s box-shadow;
|
||||
}
|
||||
}
|
||||
}
|
||||
&:nth-child(9) {
|
||||
flex-direction: row;
|
||||
@media screen and (max-width: 800px) {
|
||||
flex-direction: column-reverse;
|
||||
}
|
||||
img {
|
||||
box-shadow: 10px 10px 0px 0px #13151a;
|
||||
transition: 1s box-shadow;
|
||||
&:hover {
|
||||
box-shadow: 20px 20px 0px 0px #13151a;
|
||||
transition: 1s box-shadow;
|
||||
}
|
||||
}
|
||||
}
|
||||
&:nth-child(11) {
|
||||
flex-direction: row;
|
||||
@media screen and (max-width: 800px) {
|
||||
flex-direction: column-reverse;
|
||||
}
|
||||
img {
|
||||
box-shadow: 10px 10px 0px 0px #13151a;
|
||||
transition: 1s box-shadow;
|
||||
&:hover {
|
||||
box-shadow: 20px 20px 0px 0px #13151a;
|
||||
transition: 1s box-shadow;
|
||||
}
|
||||
}
|
||||
}
|
||||
.lc-start {
|
||||
min-width: 50%;
|
||||
max-width: 50%;
|
||||
@media screen and (max-width: 800px) {
|
||||
min-width: inherit;
|
||||
max-width: inherit;
|
||||
width: 100%;
|
||||
}
|
||||
#Zorn {
|
||||
font-family: MajorMonoDisplay;
|
||||
}
|
||||
a {
|
||||
background: transparent;
|
||||
border: 1px white solid;
|
||||
padding: 8px 16px;
|
||||
border-radius: 3rem;
|
||||
display: inline-block;
|
||||
margin: 12px 2px 36px 2px;
|
||||
transition:
|
||||
0.3s background,
|
||||
0.6s color;
|
||||
&:hover {
|
||||
background: white;
|
||||
color: black;
|
||||
transition:
|
||||
0.3s background,
|
||||
0.6s color;
|
||||
}
|
||||
}
|
||||
.label-varient-Warning {
|
||||
border-color: rgb(247, 247, 149) !important;
|
||||
background: rgb(247, 247, 149) !important;
|
||||
color: black !important;
|
||||
}
|
||||
.label-varient-New {
|
||||
border-color: rgb(94, 255, 94) !important;
|
||||
background: rgb(94, 255, 94) !important;
|
||||
color: black !important;
|
||||
}
|
||||
}
|
||||
.lc-end {
|
||||
position: relative;
|
||||
#video-credit-js {
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
right: 0px;
|
||||
margin: 24px;
|
||||
padding: 12px;
|
||||
}
|
||||
}
|
||||
img {
|
||||
border-radius: 10px;
|
||||
width: 100%;
|
||||
box-shadow: -10px 10px 0px 0px #13151a;
|
||||
transition: 1s box-shadow;
|
||||
&:hover {
|
||||
box-shadow: -20px 20px 0px 0px #13151a;
|
||||
transition: 1s box-shadow;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -1,41 +0,0 @@
|
|||
---
|
||||
const {Equal} = Astro.props
|
||||
---
|
||||
|
||||
<div class="card-grid">
|
||||
<slot/>
|
||||
</div>
|
||||
|
||||
{Equal ?
|
||||
<style lang="scss">
|
||||
.card-grid {
|
||||
display:flex;
|
||||
gap: 24px;
|
||||
margin-bottom: 12px;
|
||||
justify-content: flex-start;
|
||||
flex-direction: row;
|
||||
}
|
||||
.card-grid > .large-card {
|
||||
width: 50%;
|
||||
}
|
||||
@media only screen and (max-width: 700px) {
|
||||
.card-grid {
|
||||
grid-template-columns: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
:
|
||||
<style lang="scss">
|
||||
.card-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit,minmax(200px,1fr));
|
||||
grid-gap: 25px;
|
||||
margin-top: 50px;
|
||||
}
|
||||
@media only screen and (max-width: 700px) {
|
||||
.card-grid {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
}
|
|
@ -14,7 +14,7 @@ const { Title, Description } = Astro.props;
|
|||
|
||||
<style lang="scss">
|
||||
.heading {
|
||||
padding: 42px 16px;
|
||||
padding: 42px 0px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
**Privacy Guides**
|
||||
|
||||
Check out privacy alternatives to software, apps, and other tools you use. Privacy Guides also providies a decent knowledge base on privacy eassentials on enhancing your privacy in life and provides a great run-down on threat modeling.
|
||||
|
||||
https://www.privacyguides.org/
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
**Privacy Respecting**
|
||||
|
||||
A list of free services as alternatives to software, apps, and other tools you use.
|
||||
|
||||
https://github.com/nikitavoloboev/privacy-respecting?tab=readme-ov-file#what
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
**Offshore.CAT**
|
||||
|
||||
Offshore.CAT is a compiled list of the real & genuine, along with the bad & garbage offshore services that we have either used/have had experience with in the past.
|
||||
|
||||
https://offshore.cat/
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
**AlterativeTo**
|
||||
|
||||
A large database of alternatives to software, apps, and other tools you use. Make sure to use the "Filter" function of AlternativeTo to only use open source and privacy focused alternatives.
|
||||
|
||||
https://alternativeto.net/
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<style>
|
||||
a {
|
||||
text-decoration: underline
|
||||
}
|
||||
</style>
|
|
@ -1,201 +0,0 @@
|
|||
---
|
||||
const { Selected, Project, Search } = Astro.props
|
||||
import {ArrowDownCircle} from "@iconoir/vue"
|
||||
---
|
||||
|
||||
<div class="mobile-docs-dropdown">
|
||||
<span onclick="ToggleMDD()">{Project} <ArrowDownCircle/></span>
|
||||
<div class="mdd-expandable">
|
||||
<slot/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="sidebar">
|
||||
<div class="sb-docs">
|
||||
<slot/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script is:inline>
|
||||
/*
|
||||
@licstart The following is the entire license notice for the
|
||||
JavaScript code in this page.
|
||||
|
||||
Copyright (C) 2024 SudoVanilla
|
||||
|
||||
The JavaScript code in this page is free software: you can
|
||||
redistribute it and/or modify it under the terms of the GNU
|
||||
General Public License (GNU GPL) as published by the Free Software
|
||||
Foundation, either version 3 of the License, or (at your option)
|
||||
any later version. The code is distributed WITHOUT ANY WARRANTY;
|
||||
without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
|
||||
|
||||
As additional permission under GNU GPL version 3 section 7, you
|
||||
may distribute non-source (e.g., minimized or compacted) forms of
|
||||
that code without the copy of the GNU GPL normally required by
|
||||
section 4, provided you include this license notice and a URL
|
||||
through which recipients can access the Corresponding Source.
|
||||
|
||||
|
||||
@licend The above is the entire license notice
|
||||
for the JavaScript code in this page.
|
||||
*/
|
||||
function ToggleMDD() {
|
||||
var MobileDocsDropdown = document.querySelector(".mdd-expandable");
|
||||
if (MobileDocsDropdown.style.display === "flex") {
|
||||
MobileDocsDropdown.style.display = "none";
|
||||
document.querySelector('.mobile-docs-dropdown span').style.padding = "6px 0px";
|
||||
document.querySelector('.mobile-docs-dropdown span svg').style.transform = "rotate(0deg)";
|
||||
} else {
|
||||
MobileDocsDropdown.style.display = "flex";
|
||||
document.querySelector('.mobile-docs-dropdown span').style.padding = "24px 0px";
|
||||
document.querySelector('.mobile-docs-dropdown span svg').style.transform = "rotate(180deg)";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.mobile-docs-dropdown {
|
||||
backdrop-filter: blur(24px) brightness(0.6);
|
||||
border-radius: 6px;
|
||||
border: 1px #2b2b2b solid;
|
||||
padding: 6px 14px;
|
||||
width: calc(100% - 32px);
|
||||
display: none;
|
||||
span {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
transition: 0.3s padding;
|
||||
svg {
|
||||
transition: 0.3s transform;
|
||||
}
|
||||
}
|
||||
.mdd-expandable {
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
gap: 0px;
|
||||
h2 {
|
||||
font-size: 16px;
|
||||
}
|
||||
a {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="scss" is:global>
|
||||
.sidebar {
|
||||
max-width: 224px;
|
||||
width: 100%;
|
||||
.key {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 12px;
|
||||
background: #594646;
|
||||
border-radius: 4px;
|
||||
padding: 0px 6px;
|
||||
height: 24px;
|
||||
gap: 2px;
|
||||
p {color: white !important;}
|
||||
svg {
|
||||
width: 10px;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
.sidebar-global-search {
|
||||
margin-bottom: 6px;
|
||||
width: 100%;
|
||||
background: #282323;
|
||||
border: 1px var(--border-color) solid;
|
||||
border-radius: 6px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 6px 6px 6px 12px;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
border-color: var(--border-color-hover);
|
||||
}
|
||||
svg {
|
||||
color: white;
|
||||
}
|
||||
p {
|
||||
margin: 0px;
|
||||
color: gray;
|
||||
}
|
||||
}
|
||||
.sb-project {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 6px;
|
||||
.project-selected {
|
||||
background: rgb(19, 18, 18);
|
||||
border: 1px var(--border-color) solid;
|
||||
}
|
||||
a {
|
||||
display: flex;
|
||||
border-radius: 6px;
|
||||
align-items: center;
|
||||
padding: 6px 12px;
|
||||
font-size: 14px;
|
||||
justify-content: space-between;
|
||||
border: 1px transparent solid;
|
||||
&:hover {
|
||||
border-color: var(--border-color-hover);
|
||||
}
|
||||
p {
|
||||
margin: 0px;
|
||||
}
|
||||
img {
|
||||
border-radius: 4px;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
object-fit: cover;
|
||||
}
|
||||
.sb-doc-amount {
|
||||
opacity: 0.5;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.sb-docs {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 6px;
|
||||
.doc-selected {
|
||||
background: rgb(19, 18, 18);
|
||||
border: 1px var(--border-color) solid;
|
||||
}
|
||||
h2 {
|
||||
font-size: 12px;
|
||||
padding-left: 12px;
|
||||
}
|
||||
a {
|
||||
display: flex;
|
||||
border-radius: 6px;
|
||||
align-items: center;
|
||||
padding: 6px 12px;
|
||||
font-size: 14px;
|
||||
gap: 6px;
|
||||
border: 1px transparent solid;
|
||||
&:hover {
|
||||
border-color: var(--border-color-hover);
|
||||
}
|
||||
svg {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
p {
|
||||
font-size: 14px;
|
||||
margin: 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -4,10 +4,10 @@ import { Copyright } from "@iconoir/vue";
|
|||
|
||||
<div class="footer">
|
||||
<div>
|
||||
<a href="#">Privacy Policy</a>
|
||||
<a href="#">Refund Policy</a>
|
||||
<a href="/privacy-policy/">Privacy Policy</a>
|
||||
<a href="/refund-policy/">Refund Policy</a>
|
||||
</div>
|
||||
<p><Copyright/> 2014 - 2024 SudoVanilla</p>
|
||||
<p><Copyright/> 2014 - 2025 SudoVanilla</p>
|
||||
</div>
|
||||
|
||||
<style lang="scss" is:global>
|
||||
|
|
|
@ -18,15 +18,20 @@ SunLight
|
|||
<a class="header-link-item" href="/blog/">Blog</a>
|
||||
<a class="header-link-item" href="https://ark.sudovanilla.org/">Ark</a>
|
||||
<a class="header-link-item" href="/instances/">Instances</a>
|
||||
<a class="header-link-item" href="/docs/">Docs</a>
|
||||
<a class="header-link-item special" href="/donate/">Donate</a>
|
||||
<!-- <a class="header-link-item" href="/init/">Init Privacy</a> -->
|
||||
<a class="header-link-item" href="/donate/">Donate</a>
|
||||
<a class="header-link-item" href="https://status.sudovanilla.org/">Status</a>
|
||||
</div>
|
||||
<a href="/"><SudoVanilla OnlyLogo WithLogo /></a>
|
||||
<p>{MobileTitle}</p>
|
||||
<button onclick="ToggleMobileMenu()">
|
||||
<MenuScale/>
|
||||
</button>
|
||||
<div style="display: flex; align-items: center;">
|
||||
<button id="toggle-da-theme" data-color-mode-switch style="display: none;"></button>
|
||||
<button onclick="document.querySelector('#toggle-da-theme').click()" data-color-mode-switch class="theme-toggle-button theme-is-light"><SunLight/></button>
|
||||
<button onclick="document.querySelector('#toggle-da-theme').click()" data-color-mode-switch class="theme-toggle-button theme-is-dark"><HalfMoon/></button>
|
||||
<button style="color: white;" onclick="ToggleMobileMenu()">
|
||||
<MenuScale/>
|
||||
</button>
|
||||
</div>
|
||||
</mobilebar>
|
||||
|
||||
<header>
|
||||
|
@ -34,18 +39,16 @@ SunLight
|
|||
<div class="header-row-top">
|
||||
<div>
|
||||
<a href="/"><SudoVanilla WithLogo /></a>
|
||||
<button id="toggle-da-theme" data-color-mode-switch style="display: none;"></button>
|
||||
<button onclick="document.querySelector('#toggle-da-theme').click()" data-color-mode-switch class="theme-toggle-button theme-is-light"><SunLight/></button>
|
||||
<button onclick="document.querySelector('#toggle-da-theme').click()" data-color-mode-switch class="theme-toggle-button theme-is-dark"><HalfMoon/></button>
|
||||
</div>
|
||||
<div>
|
||||
<a class="header-link-item" href="/blog/">Blog</a>
|
||||
<a class="header-link-item" href="https://ark.sudovanilla.org/">Ark</a>
|
||||
<a class="header-link-item" href="/instances/">Instances</a>
|
||||
<a class="header-link-item" href="/docs/">Docs</a>
|
||||
<!-- <a class="header-link-item" href="/init/">Init Privacy</a> -->
|
||||
<a class="header-link-item" href="/donate/">Donate</a>
|
||||
<a class="header-link-item" href="https://status.sudovanilla.org/">Status</a>
|
||||
<a class="header-link-item special" href="/donate/">Donate</a>
|
||||
<button id="toggle-da-theme" data-color-mode-switch style="display: none;"></button>
|
||||
<button onclick="document.querySelector('#toggle-da-theme').click()" data-color-mode-switch class="theme-toggle-button theme-is-light"><SunLight/></button>
|
||||
<button onclick="document.querySelector('#toggle-da-theme').click()" data-color-mode-switch class="theme-toggle-button theme-is-dark"><HalfMoon/></button>
|
||||
</div>
|
||||
</div>
|
||||
{
|
||||
|
@ -243,6 +246,7 @@ mobilebar {
|
|||
div:nth-child(1) {
|
||||
display: flex;
|
||||
gap: 12px;
|
||||
align-items: center;
|
||||
}
|
||||
div:nth-child(2) {
|
||||
display: flex;
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
---
|
||||
title: FAQ
|
||||
---
|
||||
Q: Is this official software?
|
||||
|
||||
A: No, Penpot Desktop is an Electron-based application developed by SudoVanilla. If the project was official, it would be sitting on Penpot’s GitHub, not SudoVanilla Code.
|
||||
|
||||
|
||||
|
||||
Q: Does Penpot Desktop support offline use? If so, how do I use it offline?
|
||||
|
||||
A: Penpot Desktop does support offline usage, you can do this by hosting Penpot on your own machine or in a local server within your home. To learn how to host Penpot yourself, please view their [official guide](https://penpot.app/self-host). Try installing with Docker or your preferrable method.
|
||||
|
||||
To switch Penpot Desktop to your self-hosted Penpot, click on the “Gear” icon in the upper right corner, then your Instance options, please put in where your self-hosted Penpot is. You should be able to use a local IP address, as long as you on are on the same network, an example looks like “[http://192.168.1.2:9001/](http://192.168.1.2:9001/)“. If you used your own machine, where you’ll also be using Penpot Desktop, then using “[http://localhost:9001](http://localhost:9001)” should work, even without internet enabled.
|
||||
|
||||
|
||||
|
||||
Q: There’s an issue with the app, where do I get help?
|
||||
|
||||
A: Please view the [support section](https://sudovanilla.com/code/Korbs/Penpot-Desktop/src/branch/main#support) of the README file. Email support is recommended for a faster response.
|
||||
|
||||
|
||||
|
||||
Q: What operating system does this support?
|
||||
|
||||
A: View [System Requirements](https://sudovanilla.com/docs/penpot-desktop/faq/docs/penpot-desktop/install/requirements/).\
|
||||
|
||||
|
||||
Q: If an update is available, how do I get it?
|
||||
|
||||
A: This is done automatically on Windows and Linux, with auto update builtin from Electron Builder. We recommend that you wait at the least 1 - 2 minutes for the update to download, or depending on your internet. This usually take about 10 - 30 seconds for decent internet(200mbps).
|
||||
|
||||
On macOS, however, each update must be installed manually by the user themself. No, you are not required to do this on a regular basis; nevertheless, updating Penpot Desktop is recommended if you want the most up-to-date version in general. It’s difficult to support macOS for auto updating at the time being. **(In newer version from v0.2.3 and newer, auto update will be supported.)**
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
title: Instance
|
||||
---
|
||||
A server running Penpot, is called an “Instance”. Their can be many and you don’t really need to choose one, commonly you only need to choose the offiical one that is ran by Penpot or to self-host your own.
|
||||
|
||||
As an example, “[https://design.penpot.app/](https://design.penpot.app/)” is an instance.
|
|
@ -1,32 +0,0 @@
|
|||
---
|
||||
title: What is Penpot?
|
||||
---
|
||||
Penpot is the first open-source design & prototyping tool for product teams, that allows full collaboration between designers and developers thanks to features such as Flex Layout and Code Inspect.
|
||||
|
||||
**Professional UI for the whole team**
|
||||
|
||||
Design systems, components, interactive prototypes, feedback loop and pixel perfect designs come together in an extremely intuitive and powerful web user interface that opens up the design process to all stakeholders.
|
||||
|
||||
**Designer & Developer collaboration for real**
|
||||
|
||||
Penpot brings both code-ready design capabilities and the familiarity of developer tools to a new workspace flow.
|
||||
|
||||
**Open Standards that deliver future-proof ownership of your designs**
|
||||
|
||||
Penpot supports unconditionally open standards for all your design work. Our SVG and web standards approach means zero vendor lock-in and extreme interoperability. Penpot delivers Freedom to Product teams.
|
||||
|
||||
**Penpot is free**
|
||||
|
||||
Both Cloud and self-host services are free. Penpot projects can be moved around easily across all Penpot deployment flavors so you’re free to change your mind at any time!
|
||||
|
||||
> SudoVanilla or this website is not associated with Penpot or Kaleidos.
|
||||
|
||||
## What is Penpot Desktop?
|
||||
|
||||
Penpot Desktop delivers a desktop-like experience for Penpot users with the additional of integrating tabs to conveniently traverse back and forth between projects. Offline support is available through the select your own instance option in settings, as well as the theme settings that may be applied to either the entire desktop app or simply the Penpot dashboard.
|
||||
|
||||
**Offline Use**
|
||||
|
||||
One of the major features of Penpot Desktop, is that it can be used [offline](https://sudovanilla.com/help/penpot-desktop/features/offline-use/) if you selfhost Penpot on your own machine. You could also connect Penpot Desktop to our own Penpot instance running on your own server. This is thanks to Penpot allowing you to use technology such as Docker to selfhost your own instance.
|
||||
|
||||
**Open Source** Proudly built with open source technology and libraries. Thanks to Electron, it’s cross-platform allowing it to work on operating systems such as Windows, macOS, and Linux. Anyone willing to help with Penpot Desktop are welcomed to contribute to it’s source code on SudoVanilla Code.
|
|
@ -1,96 +0,0 @@
|
|||
---
|
||||
title: Offline Use
|
||||
---
|
||||
> This article can be too techincal for some users. If it is for you, ask a friend who is familiar with techincal stuff. SudoVanilla is also willing to help you live in a call via Matrix or Jitsi Meet, [email to schedule a call](mailto:support@sudovanilla.com?subject=Schedule%20a%20Call\&body=I'll%20like%20to%20schedule%20a%20call%20at%20INSERT_TIME_AND_DATE_HERE.).
|
||||
|
||||
Penpot allows users, developers, and companies to selfhost Penpot on-premise or in the cloud on their servers. Thanks to this, it is possible selfhost Penpot directly on your daily driver and make Penpot Desktop work offline.
|
||||
|
||||
## Install Docker
|
||||
|
||||
> Skip this section if you already have docker installed, up and running.
|
||||
|
||||
Currently, Docker comes into two different flavours:
|
||||
|
||||
### Docker Desktop
|
||||
|
||||
This is the only option to have Docker in a Windows or MacOS. Recently it’s also available for Linux, in the most popular distributions (Debian, Ubuntu and Fedora).
|
||||
|
||||
You can install it following the official guide.
|
||||
|
||||
Docker Desktop has a graphical control panel (GUI) to manage the service and view the containers, images and volumes. But need the command line (Terminal in Linux and Mac, or PowerShell in Windows) to build and run the containers, and execute other operations.
|
||||
|
||||
It already includes docker compose utility, needed by Penpot.
|
||||
|
||||
### Docker Engine
|
||||
|
||||
This is the classic and default Docker setup for Linux machines, and the only option for a Linux VPS without graphical interface.
|
||||
|
||||
You can install it following the official guide.
|
||||
|
||||
And you also need the docker compose (V2) plugin. You can use the old docker-compose tool, but all the documentation supposes you are using the V2.
|
||||
|
||||
You can easily check which version of docker compose you have. If you can execute docker compose command, then you have V2. If you need to write docker-compose (with a -) for it to work, you have the old version.
|
||||
|
||||
## Start Penpot
|
||||
|
||||
After making sure that Docker is running on your machine, let’s go ahead and start Penpot with it.
|
||||
|
||||
First step is to obtain the `docker-compose.yml` file, you can download this from the Penpot repo using the following command in your terminal:
|
||||
|
||||
Terminal window
|
||||
|
||||
```
|
||||
curl -o docker-compose.yaml https://raw.githubusercontent.com/penpot/penpot/main/docker/images/docker-compose.yaml
|
||||
```
|
||||
|
||||
Afterwards, you can simply launch Penpot by using the composer command:
|
||||
|
||||
Terminal window
|
||||
|
||||
```
|
||||
docker compose -p penpot -f docker-compose.yaml up -d
|
||||
```
|
||||
|
||||
Wait a moment, then the server should be up and running on [http://localhost:9001](http://localhost:9001).
|
||||
|
||||
### Set Penpot Desktop to your Local Instance
|
||||
|
||||
Once you’ve confirmed that Penpot is now running on [http://localhost:9001](http://localhost:9001), go ahead and set this link inside of Penpot Desktop so that the app uses your local instance.
|
||||
|
||||
Click on the gear icon found in the upper-right corner of Penpot Desktop, then for instance please set “[http://localhost:9001](http://localhost:9001)”, and click the save button.
|
||||
|
||||
Now, reload or restart Penpot Desktop to start using Penpot Desktop offline.
|
||||
|
||||
### Creating an Account
|
||||
|
||||
You’ll need to setup an account in your own instance, since it’s hosted on your machine, you have full control.
|
||||
|
||||
Create an account by clicking “Create Account” link on the login page and it should be straight-forward from there.
|
||||
|
||||
If you have having issues with that, you can try doing it through the command line instead:
|
||||
|
||||
Terminal window
|
||||
|
||||
```
|
||||
docker exec -ti penpot-penpot-backend-1 python3 ./manage.py create-profile
|
||||
```
|
||||
|
||||
## Updating Penpot
|
||||
|
||||
Whenever an update is release, you can update your local Penpot instance by running:
|
||||
|
||||
Terminal window
|
||||
|
||||
```
|
||||
docker compose -f docker-compose.yaml pull
|
||||
```
|
||||
|
||||
## Backup Penpot
|
||||
|
||||
Penpot uses Docker volumes to store all persistent data. This allows you to delete and recreate containers whenever you want without losing information.
|
||||
|
||||
This also means you need to do regular backups of the contents of the volumes. You cannot directly copy the contents of the volume data folder. Docker provides you a volume backup procedure, that uses a temporary container to mount one or more volumes, and copy their data to an archive file stored outside of the container.
|
||||
|
||||
If you use Docker Desktop, [there is an extension](https://www.docker.com/blog/back-up-and-share-docker-volumes-with-this-extension/) that may ease the backup process.
|
||||
|
||||
If you use the default docker compose file, there are two volumes used: one for the Postgres database and another one for the assets uploaded by your users (images and svg clips). There may be more volumes if you enable other features, as explained in the file itself.
|
|
@ -1,4 +0,0 @@
|
|||
---
|
||||
title: progress
|
||||
---
|
||||
This part of the documentation is still being worked on, come back later. 
|
|
@ -1,18 +0,0 @@
|
|||
---
|
||||
title: Introduction
|
||||
---
|
||||
**Zorn is currently in beta stages. Not everything listed below, as in it’s feature set, is not not done or hasn’t been worked on yet.**
|
||||
|
||||
## Introduction
|
||||
|
||||
Zorn is a customizable HTML5 video player. The player is originally built for a SudoVanilla project called MinPluto, a privacy frontend for YouTube.
|
||||
|
||||
### What is a HTML5 Video Player?
|
||||
|
||||
HTML5 introduced the video player element in the late 2010s, which is embeded as `<video>`. It was intended by the creators of it to be the new standard to show video content on the web, instead of Adobe Flash which reached end-of-life in 2020. So, as of 2020, the HTML5 video is the only widely supported video playerback technology for modern browsers, with the Flash plugin being phased out.
|
||||
|
||||
You can see this in your browser as the built-in video player by [viewing this video](https://sudovanilla.com/content/videos/webm/Ennie-and-Yoyki.webm) or viewing in it’s own tab.
|
||||
|
||||
### Why not use the built-in player?
|
||||
|
||||
While you can build website or a video platform and having your visitors rely on their web browser’s built-in video player, it can be quite limited if you want or your visitors want certain features. Features such as quality selector, subtitles, seek, and more. The built-in player does not, usually, include those. Another reason is why a company or a project may want to use a custom player such as Zorn is to have a curated player for their website that fits the style and needs.
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
title: GitHubbub! GitHub Does Not Value Software Freedom.
|
||||
author: Mike Gerwitz
|
||||
date: 0001-01-01
|
||||
url: https://mikegerwitz.com/about/githubbub/
|
||||
image: https://md.sudovanilla.org/images/githubno.png
|
||||
---
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
title: 'ISPs are selling your private browsing history. Here’s how to prevent it. '
|
||||
author: Proton Team
|
||||
date: 2017-03-24
|
||||
url: https://proton.me/blog/private-browsing-history
|
||||
image: >-
|
||||
https://image.proxy.sudovanilla.org/https://res.cloudinary.com/dbulfrlrz/images/w_1434,h_717,c_scale/f_auto,q_auto/f_auto,q_auto/v1707577896/wp-pme/browsing_history_privacy/browsing_history_privacy
|
||||
---
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
title: Is TikTok Safe?
|
||||
author: Douglas Crawfold
|
||||
date: 2024-04-03
|
||||
url: https://protonvpn.com/blog/is-tiktok-safe/
|
||||
image: https://md.sudovanilla.org/images/is-tiktok-safe-blog.png
|
||||
---
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
title: Google ads are getting worse, at your expense
|
||||
author: Ben Wolford
|
||||
date: 0001-01-01
|
||||
url: https://proton.me/blog/google-shows-more-ads
|
||||
image: https://md.sudovanilla.org/images/new-ads-in-gmail-inbox_3542274c2d.webp
|
||||
---
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
title: Stop using Brave Browser
|
||||
author: Corbin Davenport
|
||||
date: 2023-08-07
|
||||
url: https://www.spacebar.news/stop-using-brave-browser/
|
||||
image: https://md.sudovanilla.org/images/braveno.jpg
|
||||
---
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
title: Stop using Opera Browser and Opera GX
|
||||
author: Corbin Davenport
|
||||
date: 2023-01-24
|
||||
url: https://www.spacebar.news/stop-using-opera-browser/
|
||||
image: https://md.sudovanilla.org/images/operano.jpg
|
||||
---
|
|
@ -1,8 +0,0 @@
|
|||
---
|
||||
title: 'Vivaldi presents: “Browser choices. A tale of two Gatekeepers.”'
|
||||
author: Jon Von Tetzchner
|
||||
date: 2024-02-14
|
||||
url: >-
|
||||
https://vivaldi.com/blog/technology/vivaldi-browser-choices-a-tale-of-two-gatekeepers/
|
||||
image: https://md.sudovanilla.org/images/browser-choices.png
|
||||
---
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
title: What is Free Software?
|
||||
author: GNU
|
||||
date: 0001-01-01
|
||||
url: https://www.gnu.org/philosophy/free-sw.en.html
|
||||
image: https://md.sudovanilla.org/images/Screenshot_20240426_135536.png
|
||||
---
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
title: Why Privacy Matters
|
||||
author: Jonah Aragon and Daniel Nathan Gray
|
||||
date: 2023-05-01
|
||||
url: https://www.privacyguides.org/en/basics/why-privacy-matters
|
||||
image: https://md.sudovanilla.org/images/why-privacy-matters.png
|
||||
---
|
|
@ -1,64 +0,0 @@
|
|||
---
|
||||
// Layout Properties
|
||||
const {
|
||||
ProjectCollection
|
||||
} = Astro.props
|
||||
|
||||
// Layout
|
||||
import Default from "@layouts/Default.astro";
|
||||
|
||||
// Icons
|
||||
import {
|
||||
WarningTriangleSolid
|
||||
} from "@iconoir/vue"
|
||||
---
|
||||
<Default MobileTitle="SudoVanilla Documentation">
|
||||
<Fragment slot="sub-header">
|
||||
<div>
|
||||
<p class="header-sub-service"><span id="show-w-scroll">SudoVanilla</span> Documentations</p>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://minpluto.docs.sudovanilla.org">MinPluto</a>
|
||||
<a href="/docs/zorn/introduction/">Zorn Player</a>
|
||||
<a href="/docs/penpot-desktop/introduction/">Penpot Desktop</a>
|
||||
</div>
|
||||
</Fragment>
|
||||
<Fragment slot="body">
|
||||
<div class="page-banner">
|
||||
<p><WarningTriangleSolid/> Documentation part of sudovanilla.org is being moved. Each project is being moved to it's own subdomain.</p>
|
||||
<p>Already moved: MinPluto</p>
|
||||
</div>
|
||||
<div class="document-layout">
|
||||
<div class="doc-content">
|
||||
<slot slot="content"/>
|
||||
</div>
|
||||
</div>
|
||||
</Fragment>
|
||||
</Default>
|
||||
|
||||
<style is:global>
|
||||
.document-layout {
|
||||
display: flex;
|
||||
gap: 24px;
|
||||
a {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
.page-banner {
|
||||
background: #ffff9e;
|
||||
color: black;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 12px 24px;
|
||||
border-radius: 6px;
|
||||
* {
|
||||
margin: 0px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
svg {
|
||||
margin-right: 12px;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -4,20 +4,14 @@ import Default from "@layouts/Default.astro";
|
|||
|
||||
// Components
|
||||
import Posts from "@components/blog/posts.astro";
|
||||
|
||||
// List Posts
|
||||
const GhostFetch = 'https://blog.ghost.sudovanilla.org/ghost/api/content/posts/?key=bef2ed15d9e38f7703be9412b3'
|
||||
const GhostResponse = await fetch(GhostFetch);
|
||||
const Ghost = await GhostResponse.json();
|
||||
|
||||
// Icons
|
||||
import { BookmarkBook, ReportColumns } from "@iconoir/vue";
|
||||
import Heading from "@components/Heading.astro";
|
||||
---
|
||||
|
||||
<Default MobileTitle="SudoVanilla" NoSubHeader>
|
||||
<Fragment slot="body">
|
||||
<Posts server:defer><div slot="fallback">Loading posts...</div></Posts>
|
||||
</Fragment>
|
||||
<Default MobileTitle="Recommended Reading" NoSubHeader>
|
||||
<Fragment slot="body">
|
||||
<Heading Title="Posts"/>
|
||||
<Posts server:defer><div slot="fallback">Loading posts...</div></Posts>
|
||||
</Fragment>
|
||||
</Default>
|
||||
|
||||
<style lang="scss">
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
---
|
||||
// Layout
|
||||
import Default from "@layouts/Default.astro";
|
||||
|
||||
// Components
|
||||
import Posts from "@components/blog/posts.astro";
|
||||
import Heading from "@components/Heading.astro";
|
||||
|
||||
// Markdown
|
||||
import Sources from "@components/blog/sources.md"
|
||||
|
||||
// List Posts
|
||||
import { getCollection } from "astro:content";
|
||||
const posts = await getCollection("recommend-reading");
|
||||
---
|
||||
|
||||
<Default MobileTitle="Recommended Reading">
|
||||
<Fragment slot="sub-header">
|
||||
<p class="header-sub-service"><span id="show-w-scroll">SudoVanilla</span> Blog</p>
|
||||
<div>
|
||||
<a href="/blog/">Posts</a>
|
||||
<a href="/blog/recommended-reading/">Recommended Reading</a>
|
||||
</div>
|
||||
</Fragment>
|
||||
<Fragment slot="body">
|
||||
<Heading Title="Posts"/>
|
||||
<Posts GetPosts={posts} PrefixSlug=""/>
|
||||
<p style="opacity: 0.5; font-size: 14px;">All links above goes to external sources, outside of SudoVanilla.</p>
|
||||
<p style="opacity: 0.5; font-size: 14px;">Some links may be set incorrectly. Check the URL and make sure it doesn't end in "/" or double "//".</p>
|
||||
<Heading Title="Looking for Alternatives?"/>
|
||||
<Sources/>
|
||||
</Fragment>
|
||||
</Default>
|
|
@ -1,91 +0,0 @@
|
|||
---
|
||||
// Icons
|
||||
import {ServerConnection,PeaceHand, SlashSquare, ClipboardCheck} from "@iconoir/vue";
|
||||
import {ServerConnection,PeaceHand, QuestionMark, WifiOff, DownloadCircle, ShieldAlert, ChatBubble} from "@iconoir/vue";
|
||||
|
||||
// Get Colletion and Slug
|
||||
import { getCollection, getEntry } from "astro:content";
|
||||
import Document from "@layouts/Document.astro"
|
||||
|
||||
const { slug } = Astro.params;
|
||||
if (!slug) throw new Error("Slug not found");
|
||||
const post = await getEntry("docs", slug);
|
||||
|
||||
if (!post) throw new Error("No post found for this slug");
|
||||
const { Content } = await post.render();
|
||||
|
||||
/// Generate static pages
|
||||
export async function getStaticPaths() {
|
||||
const posts = await getCollection("docs");
|
||||
return posts.map((post) => ({ params: { slug: post.slug } }));
|
||||
}
|
||||
export const prerender = true;
|
||||
|
||||
// Components
|
||||
import Sidebar from "@components/docs/sidebar.astro";
|
||||
---
|
||||
|
||||
<Document>
|
||||
<div class="document-layout">
|
||||
<Sidebar>
|
||||
<h2>Zorn</h2>
|
||||
<a href="/docs/zorn/introduction/">
|
||||
<PeaceHand/>
|
||||
<p>Introduction </p>
|
||||
</a>
|
||||
<h2>MinPluto</h2>
|
||||
<a href="/docs/minpluto/introduction/">
|
||||
<PeaceHand/>
|
||||
<p>Introduction </p>
|
||||
</a>
|
||||
<a href="/docs/minpluto/compatibility/">
|
||||
<ClipboardCheck />
|
||||
<p>Compatibility</p>
|
||||
</a>
|
||||
<a href="/docs/minpluto/requirements/">
|
||||
<ClipboardCheck />
|
||||
<p>Requirements</p>
|
||||
</a>
|
||||
<a href="/docs/minpluto/self-hosting/">
|
||||
<ServerConnection />
|
||||
<p>Self-Hosting</p>
|
||||
</a>
|
||||
<a href="/docs/minpluto/api/">
|
||||
<SlashSquare />
|
||||
<p>API</p>
|
||||
</a>
|
||||
<h2>Penpot Desktop</h2>
|
||||
<a href="/docs/penpot-desktop/introduction/">
|
||||
<PeaceHand/>
|
||||
<p>Introduction </p>
|
||||
</a>
|
||||
<a href="/docs/penpot-desktop/faq/">
|
||||
<QuestionMark />
|
||||
<p>FAQ</p>
|
||||
</a>
|
||||
<a href="/docs/penpot-desktop/offline-use/">
|
||||
<WifiOff />
|
||||
<p>Offline Use</p>
|
||||
</a>
|
||||
<a href="/docs/penpot-desktop/instance/">
|
||||
<ServerConnection />
|
||||
<p>Instance</p>
|
||||
</a>
|
||||
<a href="/docs/penpot-desktop/progress/">
|
||||
<DownloadCircle />
|
||||
<p>Installation</p>
|
||||
</a>
|
||||
<a href="/docs/penpot-desktop/progress/">
|
||||
<ShieldAlert />
|
||||
<p>Security Policy</p>
|
||||
</a>
|
||||
<a href="/docs/penpot-desktop/progress/">
|
||||
<ChatBubble />
|
||||
<p>Support</p>
|
||||
</a>
|
||||
</Sidebar>
|
||||
<div class="doc-content">
|
||||
<Content/>
|
||||
</div>
|
||||
</div>
|
||||
</Document>
|
|
@ -4,12 +4,7 @@ import Default from "@layouts/Default.astro";
|
|||
|
||||
// Components
|
||||
import Hero from "@components/Hero.astro";
|
||||
import Heading from "@components/Heading.astro";
|
||||
import Posts from "@components/blog/posts.astro";
|
||||
import LargeCard from "@components/Feature.astro";
|
||||
|
||||
// Icons
|
||||
import { BookmarkBook, ReportColumns } from "@iconoir/vue";
|
||||
import { CallToAction } from "@sudovanilla/pandora";
|
||||
---
|
||||
|
||||
<Default MobileTitle="SudoVanilla" NoSubHeader>
|
||||
|
@ -21,56 +16,61 @@ import { BookmarkBook, ReportColumns } from "@iconoir/vue";
|
|||
Image="https://md.sudovanilla.org/images/pexels-asphotograpy-94842.jpg"
|
||||
Credit="Green Pine Trees. Shot by AS Photography on Pexels."
|
||||
/>
|
||||
<Heading Title="Blog" Description="Tips, Tricks, and Updates">
|
||||
<slot slot="icon">
|
||||
<BookmarkBook width={32} height={32} />
|
||||
</slot>
|
||||
</Heading>
|
||||
<Posts server:defer><div slot="fallback">Loading posts...</div></Posts>
|
||||
<Heading Title="Projects" Description="What I've Made">
|
||||
<slot slot="icon">
|
||||
<ReportColumns width={32} height={32} />
|
||||
</slot>
|
||||
</Heading>
|
||||
<LargeCard
|
||||
|
||||
<CallToAction
|
||||
Title="Instances"
|
||||
Description="Clients, services, and frontends hosted by SudoVanilla"
|
||||
ImageSource="https://md.sudovanilla.org/images/8108969777692270658741264896182357708404070882901004771113430719.png"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="View Instances"
|
||||
PrimaryAction="/instances"
|
||||
/>
|
||||
|
||||
<CallToAction
|
||||
Title="MinPluto"
|
||||
Description="SudoVanilla Studio"
|
||||
Image="https://md.sudovanilla.org/images/mp-ba-1.png"
|
||||
CTA_Primary="View Website"
|
||||
CTA_Primary_Link="https://studio.sudovanilla.org/"
|
||||
ImageSource="https://md.sudovanilla.org/images/mp-ba-1.png"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="View Website"
|
||||
PrimaryAction="https://studio.sudovanilla.org/"
|
||||
/>
|
||||
<LargeCard
|
||||
|
||||
<CallToAction
|
||||
Title="Zorn Player"
|
||||
Description="Video Player for Astro"
|
||||
Image="https://md.sudovanilla.org/images/Screenshot%20from%202024-08-27%2001-41-34.png"
|
||||
CTA_Primary="Documentation"
|
||||
CTA_Primary_Link="/docs/zorn/introduction/"
|
||||
ImageSource="https://md.sudovanilla.org/images/Screenshot From 2024-12-03 22-07-36.png"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="Documentation"
|
||||
PrimaryAction="/docs/zorn/introduction/"
|
||||
/>
|
||||
<LargeCard
|
||||
|
||||
<CallToAction
|
||||
Title="ButterflyVu"
|
||||
Description="Documention Site"
|
||||
Image="https://md.sudovanilla.org/images/pexels-pixabay-326055.jpg"
|
||||
CTA_Primary="Source Code"
|
||||
CTA_Primary_Link="https://ark.sudovanilla.org/Korbs/butterflyvu"
|
||||
CreditImage="Close-up Photo of Glowing Blue Butterflies by Pixabay on Pixels."
|
||||
ImageSource="https://md.sudovanilla.org/images/pexels-pixabay-326055.jpg"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="Source Code"
|
||||
PrimaryAction="https://ark.sudovanilla.org/Korbs/butterflyvu"
|
||||
/>
|
||||
<LargeCard
|
||||
|
||||
<CallToAction
|
||||
Title="Init Privacy"
|
||||
Description="Taking Back Control"
|
||||
Image="https://md.sudovanilla.org/images/smartmockups_lvh9a29d.jpg"
|
||||
ImageSource="https://md.sudovanilla.org/images/6560385685.png"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="Source Code"
|
||||
PrimaryAction="https://ark.sudovanilla.org/Korbs/butterflyvu"
|
||||
Label="Development Paused"
|
||||
LabelVarient="Warning"
|
||||
CTA_Primary="View"
|
||||
CTA_Primary_Link="/init/"
|
||||
/>
|
||||
<LargeCard
|
||||
|
||||
<CallToAction
|
||||
Title="Penpot Desktop"
|
||||
Description="A Desktop-Like Experience"
|
||||
Image="https://md.sudovanilla.org/images/Z1.webp"
|
||||
ImageSource="https://md.sudovanilla.org/images/Z1.webp"
|
||||
ImageAlt="Image"
|
||||
PrimaryActionText="Source Code"
|
||||
PrimaryAction="https://ark.sudovanilla.org/Korbs/butterflyvu"
|
||||
Label="Discontinued"
|
||||
LabelVarient="Warning"
|
||||
CTA_Primary="Documentation"
|
||||
CTA_Primary_Link="/docs/penpot-desktop/introduction/"
|
||||
/>
|
||||
</Fragment>
|
||||
</Default>
|
||||
|
|
|
@ -3,12 +3,24 @@ layout: '../layouts/Markdown.astro'
|
|||
Title: 'Privacy Policy'
|
||||
---
|
||||
|
||||
<p style="opacity: 0.5; font-size: 14px">Last Updated: November 19th, 2024</p>
|
||||
<p style="opacity: 0.5; font-size: 14px">Last Updated: December 3rd, 2024</p>
|
||||
|
||||
**Support**
|
||||
## 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.
|
||||
|
@ -31,6 +43,24 @@ All payments should done via sudovanilla.org with a Stripe user dashboard. If no
|
|||
|
||||
SudoVanilla prints phyical copies of all receipts, as of November 15th 2024.
|
||||
|
||||
## 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)
|
||||
|
||||
## Services:
|
||||
|
||||
**SudoVanilla Ark**
|
||||
|
||||
When you sign up for SudoVanilla Ark, the following information is recorded:
|
||||
|
|
|
@ -48,6 +48,9 @@
|
|||
:root {
|
||||
--border-color: rgba(255, 255, 255, 0.25);
|
||||
--border-color-hover: rgba(255, 255, 255, 0.50);
|
||||
--pandora-text: white;
|
||||
--pandora-shadows: rgba(19, 21, 26, 0.5);
|
||||
--pandora-borders: white;
|
||||
}
|
||||
|
||||
body {
|
||||
|
@ -109,11 +112,13 @@ a {
|
|||
|
||||
:is(body) {
|
||||
@include color-mode(light) {
|
||||
:root {
|
||||
--pandora-text: black !important;
|
||||
--pandora-shadows: black !important;
|
||||
--pandora-borders: black !important;
|
||||
}
|
||||
color: black !important;
|
||||
background-color: white !important;
|
||||
:root {
|
||||
--box-shadow-color: white;
|
||||
}
|
||||
.theme-is-light {display: inherit}
|
||||
.theme-is-dark {display: none}
|
||||
.service-links a {
|
||||
|
@ -127,7 +132,7 @@ a {
|
|||
filter: invert(1);
|
||||
}
|
||||
}
|
||||
.large-card {
|
||||
.pd-cta-end {
|
||||
a {
|
||||
background: rgb(234, 234, 234) !important;
|
||||
color: black !important;
|
||||
|
@ -140,11 +145,13 @@ a {
|
|||
}
|
||||
}
|
||||
@include color-mode(dark) {
|
||||
:root {
|
||||
--pandora-text: white;
|
||||
--pandora-shadows: white;
|
||||
--pandora-borders: white;
|
||||
}
|
||||
color: white !important;
|
||||
background-color: black !important;
|
||||
:root {
|
||||
--box-shadow-color: black;
|
||||
}
|
||||
.theme-is-light {display: none}
|
||||
.theme-is-dark {display: inherit}
|
||||
.service-links a {
|
||||
|
@ -161,7 +168,7 @@ a {
|
|||
filter: invert(0);
|
||||
}
|
||||
}
|
||||
.large-card {
|
||||
.pd-cta-end {
|
||||
a {
|
||||
background: transparent !important;
|
||||
color: white !important;
|
||||
|
|
Loading…
Reference in a new issue