Added legal sites, etc.

This commit is contained in:
nsde 2023-07-23 02:07:22 +02:00
parent 9f681e94a9
commit 63ee4059fd
21 changed files with 446 additions and 28 deletions

View file

@ -11,11 +11,15 @@
"**/*.map": true, "**/*.map": true,
"static/css/base.css": true, "static/css/base.css": true,
"static/css/home.css": true, "static/css/home.css": true,
"static/css/navbar.css": true "static/css/navbar.css": true,
"static/css/input.css": true,
"static/css/footer.css": true
}, },
"hide-files.files": [ "hide-files.files": [
"static/css/base.css", "static/css/base.css",
"static/css/home.css", "static/css/home.css",
"static/css/navbar.css" "static/css/navbar.css",
"static/css/input.css",
"static/css/footer.css"
] ]
} }

38
app.py
View file

@ -6,19 +6,37 @@ from dotenv import load_dotenv
load_dotenv() load_dotenv()
app = flask.Flask(__name__)
log = logging.getLogger('werkzeug') log = logging.getLogger('werkzeug')
log.disabled = True log.disabled = True
@app.context_processor def create_app() -> flask.Flask:
def inject_variables(): app = flask.Flask(__name__)
return {
'contact_email': os.getenv('CONTACT_EMAIL')
}
@app.route('/') @app.context_processor
def index(): def inject_variables():
return flask.render_template('index.html') return {
'contact_email': os.getenv('CONTACT_EMAIL')
}
app.run(debug=True, use_evalex=False, port=2323) @app.route('/')
def index():
return flask.render_template('index.html')
@app.route('/panel')
def panel():
return flask.render_template('panel.html')
@app.route('/favicon.ico')
def favicon():
return flask.send_file('static/img/fav.ico', mimetype='image/vnd.microsoft.icon')
@app.route('/legal/<path:subpath>')
def legal_site(subpath):
return flask.render_template(f'legal/{subpath}.html')
return app
if __name__ == '__main__':
create_app().run(debug=True, use_evalex=False, port=2323, host='0.0.0.0', threaded=True)

View file

@ -1,10 +1,12 @@
$text: #f3f3f3 $text: #f3f3f3
$background: #03060d $background: #03060d
$secondary: #253038 $secondary: #252a38
$border: #161d2bb0 $border: #161d2bb0
$primary: #922646 $primary: #b53d61
$primary-light: #f45a88 $primary-light: #f45a88
$primary-glow: #f45a8861
$primary-soft: #f79ab624
$accent: #28aaf0 $accent: #28aaf0
$edge: 5px $edge: 5px

View file

@ -25,17 +25,31 @@ a {
h1, h1 *, h2, h2 *, h3, h3 * { h1, h1 *, h2, h2 *, h3, h3 * {
font-weight: 700; font-weight: 700;
line-height: 4.8rem; line-height: 3rem;
font-family: "Syne", sans-serif; font-family: "Syne", sans-serif;
} }
main a {
text-decoration: underline;
text-decoration-color: #b53d61;
text-underline-offset: 2px;
text-decoration-thickness: 5px;
transition: 0.2s;
}
main a:hover {
background: rgba(247, 154, 182, 0.1411764706);
}
main p {
opacity: 0.9;
}
img { img {
display: block; display: block;
max-width: 100%; max-width: 100%;
} }
p { p, p *, main ul {
line-height: 18px;
line-height: 32px; line-height: 32px;
} }
@ -45,11 +59,17 @@ p {
mark { mark {
color: #f3f3f3; color: #f3f3f3;
background: #f45a88; background: #b53d61;
padding: 5px 7px; padding: 5px 7px;
border-radius: 5px; border-radius: 5px;
} }
.special-gradient {
background: linear-gradient(83deg, rgb(244, 90, 136) 7%, rgb(40, 170, 240) 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
@media (max-width: 900px) { @media (max-width: 900px) {
body { body {
margin: 0 2rem; margin: 0 2rem;

View file

@ -1 +1 @@
{"version":3,"sources":["base.sass","base.css","_vars.sass"],"names":[],"mappings":"AACQ,kFAAA;AAER;EACI,uBAAA;ACDJ;;ADGA;EACI,yBENS;ADMb;;ADEA;EACI,gBECS;EFAT,cAAA;ACCJ;;ADCA;EACI,sBAAA;EACA,YAAA;EACA,cEhBG;EFiBH,gCAAA;ACEJ;;ADAA;EACI,qBAAA;ACGJ;;ADAI;EACI,gBAAA;EACA,mBAAA;EACA,+BAAA;ACGR;;ADDA;EACI,cAAA;EACA,eAAA;ACIJ;;ADFA;EACI,iBAAA;EACA,iBAAA;ACKJ;;ADHA;EACI,aAAA;ACMJ;;ADJA;EACI,cExCG;EFyCH,mBEnCY;EFoCZ,gBAAA;EACA,kBAAA;ACOJ;;ADLA;EACI;IACI,cAAA;ECQN;AACF","file":"base.css","sourcesContent":["@import '_vars'\n@import url('https://fonts.googleapis.com/css2?family=Syne:wght@700&display=swap')\n\nhtml\n scroll-behavior: smooth\n\nbody\n background-color: $background\n\nnav, main, footer\n max-width: $main-width\n margin: 0 auto\n\n*, *::before, *::after\n box-sizing: border-box\n border: none\n color: $text\n font-family: 'Inter', sans-serif\n\na\n text-decoration: none\n\nh1, h2, h3\n &, *\n font-weight: 700\n line-height: 4.8rem\n font-family: 'Syne', sans-serif\n\nimg\n display: block\n max-width: 100%\n\np\n line-height: 18px\n line-height: 32px\n\n:focus:not(:focus-visible)\n outline: none\n\nmark\n color: $text\n background: $primary-light\n padding: 5px 7px\n border-radius: 5px\n\n@media (max-width: 900px)\n body\n margin: 0 2rem\n\n","@import url(\"https://fonts.googleapis.com/css2?family=Syne:wght@700&display=swap\");\nhtml {\n scroll-behavior: smooth;\n}\n\nbody {\n background-color: #03060d;\n}\n\nnav, main, footer {\n max-width: 800px;\n margin: 0 auto;\n}\n\n*, *::before, *::after {\n box-sizing: border-box;\n border: none;\n color: #f3f3f3;\n font-family: \"Inter\", sans-serif;\n}\n\na {\n text-decoration: none;\n}\n\nh1, h1 *, h2, h2 *, h3, h3 * {\n font-weight: 700;\n line-height: 4.8rem;\n font-family: \"Syne\", sans-serif;\n}\n\nimg {\n display: block;\n max-width: 100%;\n}\n\np {\n line-height: 18px;\n line-height: 32px;\n}\n\n:focus:not(:focus-visible) {\n outline: none;\n}\n\nmark {\n color: #f3f3f3;\n background: #f45a88;\n padding: 5px 7px;\n border-radius: 5px;\n}\n\n@media (max-width: 900px) {\n body {\n margin: 0 2rem;\n }\n}","$text: #f3f3f3\n$background: #03060d\n$secondary: #253038\n$border: #161d2bb0\n\n$primary: #922646\n$primary-light: #f45a88\n$accent: #28aaf0\n\n$edge: 5px\n\n$main-width: 800px\n$more-width: 1000px\n"]} {"version":3,"sources":["base.sass","base.css","_vars.sass"],"names":[],"mappings":"AACQ,kFAAA;AAER;EACI,uBAAA;ACDJ;;ADGA;EACI,yBENS;ADMb;;ADEA;EACI,gBEGS;EFFT,cAAA;ACCJ;;ADCA;EACI,sBAAA;EACA,YAAA;EACA,cEhBG;EFiBH,gCAAA;ACEJ;;ADAA;EACI,qBAAA;ACGJ;;ADAI;EACI,gBAAA;EACA,iBAAA;EACA,+BAAA;ACGR;;ADDA;EACI,0BAAA;EACA,8BEzBM;EF0BN,0BAAA;EACA,8BAAA;EAEA,gBAAA;ACGJ;ADDI;EACI,6CE7BO;ADgCf;;ADDA;EACI,YAAA;ACIJ;;ADFA;EACI,cAAA;EACA,eAAA;ACKJ;;ADHA;EACI,iBAAA;ACMJ;;ADJA;EACI,aAAA;ACOJ;;ADLA;EACI,cErDG;EFsDH,mBEjDM;EFkDN,gBAAA;EACA,kBAAA;ACQJ;;ADNA;EACI,gFAAA;EACA,6BAAA;EACA,oCAAA;ACSJ;;ADPA;EACI;IACI,cAAA;ECUN;AACF","file":"base.css","sourcesContent":["@import '_vars'\n@import url('https://fonts.googleapis.com/css2?family=Syne:wght@700&display=swap')\n\nhtml\n scroll-behavior: smooth\n\nbody\n background-color: $background\n\nnav, main, footer\n max-width: $main-width\n margin: 0 auto\n\n*, *::before, *::after\n box-sizing: border-box\n border: none\n color: $text\n font-family: 'Inter', sans-serif\n\na\n text-decoration: none\n\nh1, h2, h3\n &, *\n font-weight: 700\n line-height: 3rem\n font-family: 'Syne', sans-serif\n\nmain a\n text-decoration: underline\n text-decoration-color: $primary\n text-underline-offset: 2px\n text-decoration-thickness: 5px\n\n transition: 0.2s\n\n &:hover\n background: $primary-soft\n\nmain p\n opacity: 0.9\n\nimg\n display: block\n max-width: 100%\n\np, p *, main ul\n line-height: 32px\n\n:focus:not(:focus-visible)\n outline: none\n\nmark\n color: $text\n background: $primary\n padding: 5px 7px\n border-radius: 5px\n\n.special-gradient\n background: linear-gradient(83deg, rgba(244,90,136,1) 7%, rgba(40,170,240,1) 100%)\n -webkit-background-clip: text\n -webkit-text-fill-color: transparent\n\n@media (max-width: 900px)\n body\n margin: 0 2rem\n\n","@import url(\"https://fonts.googleapis.com/css2?family=Syne:wght@700&display=swap\");\nhtml {\n scroll-behavior: smooth;\n}\n\nbody {\n background-color: #03060d;\n}\n\nnav, main, footer {\n max-width: 800px;\n margin: 0 auto;\n}\n\n*, *::before, *::after {\n box-sizing: border-box;\n border: none;\n color: #f3f3f3;\n font-family: \"Inter\", sans-serif;\n}\n\na {\n text-decoration: none;\n}\n\nh1, h1 *, h2, h2 *, h3, h3 * {\n font-weight: 700;\n line-height: 3rem;\n font-family: \"Syne\", sans-serif;\n}\n\nmain a {\n text-decoration: underline;\n text-decoration-color: #b53d61;\n text-underline-offset: 2px;\n text-decoration-thickness: 5px;\n transition: 0.2s;\n}\nmain a:hover {\n background: rgba(247, 154, 182, 0.1411764706);\n}\n\nmain p {\n opacity: 0.9;\n}\n\nimg {\n display: block;\n max-width: 100%;\n}\n\np, p *, main ul {\n line-height: 32px;\n}\n\n:focus:not(:focus-visible) {\n outline: none;\n}\n\nmark {\n color: #f3f3f3;\n background: #b53d61;\n padding: 5px 7px;\n border-radius: 5px;\n}\n\n.special-gradient {\n background: linear-gradient(83deg, rgb(244, 90, 136) 7%, rgb(40, 170, 240) 100%);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n}\n\n@media (max-width: 900px) {\n body {\n margin: 0 2rem;\n }\n}","$text: #f3f3f3\n$background: #03060d\n$secondary: #252a38\n$border: #161d2bb0\n\n$primary: #b53d61\n$primary-light: #f45a88\n$primary-glow: #f45a8861\n$primary-soft: #f79ab624\n$accent: #28aaf0\n\n$edge: 5px\n\n$main-width: 800px\n$more-width: 1000px\n"]}

View file

@ -23,15 +23,28 @@ a
h1, h2, h3 h1, h2, h3
&, * &, *
font-weight: 700 font-weight: 700
line-height: 4.8rem line-height: 3rem
font-family: 'Syne', sans-serif font-family: 'Syne', sans-serif
main a
text-decoration: underline
text-decoration-color: $primary
text-underline-offset: 2px
text-decoration-thickness: 5px
transition: 0.2s
&:hover
background: $primary-soft
main p
opacity: 0.9
img img
display: block display: block
max-width: 100% max-width: 100%
p p, p *, main ul
line-height: 18px
line-height: 32px line-height: 32px
:focus:not(:focus-visible) :focus:not(:focus-visible)
@ -39,10 +52,15 @@ p
mark mark
color: $text color: $text
background: $primary-light background: $primary
padding: 5px 7px padding: 5px 7px
border-radius: 5px border-radius: 5px
.special-gradient
background: linear-gradient(83deg, rgba(244,90,136,1) 7%, rgba(40,170,240,1) 100%)
-webkit-background-clip: text
-webkit-text-fill-color: transparent
@media (max-width: 900px) @media (max-width: 900px)
body body
margin: 0 2rem margin: 0 2rem

View file

@ -1 +1 @@
{"version":3,"sources":["footer.sass","_vars.sass","footer.css"],"names":[],"mappings":"AAEA;EACI,iBAAA;EACA,iBAAA;EACA,gBCMS;ACPb;AFGI;EACI,iBCIK;ACLb;AFGI;EACI,aAAA;EACA,sBAAA;EAEA,mBAAA;AEFR;AFIQ;EACI,oBAAA;EACA,qBAAA;AEFZ;AFIY;EACI,eAAA;EACA,gBAAA;AEFhB;AFIY;EACI,UAAA;EACA,eAAA;EACA,gBAAA;EACA,cAAA;EACA,mBAAA;AEFhB;AFIY;EACI,uBAAA;EAAA,kBAAA;EACA,eAAA;EACA,YAAA;EACA,cAAA;EACA,qBAAA;EACA,mBAAA;AEFhB;AFIgB;EACI,YAAA;AEFpB;AFII;EACI,YAAA;AEFR;;AFIA;EAEQ;IACI,mBAAA;IACA,qCAAA;EEFV;EFIU;IACI,mBAAA;EEFd;AACF;AFGA;EAEQ;IACI,0BAAA;EEFV;AACF","file":"footer.css","sourcesContent":["@import '_vars'\n\nfooter\n padding-top: 4rem\n margin: 4rem auto\n max-width: $main-width\n\n &.wide\n max-width: $more-width\n\n div.rows\n display: grid\n grid-auto-flow: column\n // justify-content: space-between\n margin-bottom: 2rem\n\n div.row\n margin-right: 1.5rem\n margin-bottom: 0.5rem\n\n &:last-child\n margin-right: 0\n margin-bottom: 0\n\n h2\n opacity: 1\n font-size: 1rem\n font-weight: 500\n margin: 1rem 0\n line-height: normal\n\n a\n width: fit-content\n font-size: 14px\n opacity: 0.6\n display: block\n text-decoration: none\n margin-bottom: 1rem\n\n &:hover\n opacity: 0.8\n\n p\n opacity: 0.7\n\n@media (max-width: 1000px)\n footer\n div.rows\n grid-auto-flow: row\n grid-template-columns: repeat(2, 1fr)\n\n div.row\n margin-bottom: 1rem\n\n@media (max-width: 600px)\n footer\n div.rows\n grid-template-columns: 1fr\n","$text: #f3f3f3\n$background: #03060d\n$secondary: #253038\n$border: #161d2bb0\n\n$primary: #922646\n$primary-light: #f45a88\n$accent: #28aaf0\n\n$edge: 5px\n\n$main-width: 800px\n$more-width: 1000px\n","footer {\n padding-top: 4rem;\n margin: 4rem auto;\n max-width: 800px;\n}\nfooter.wide {\n max-width: 1000px;\n}\nfooter div.rows {\n display: grid;\n grid-auto-flow: column;\n margin-bottom: 2rem;\n}\nfooter div.rows div.row {\n margin-right: 1.5rem;\n margin-bottom: 0.5rem;\n}\nfooter div.rows div.row:last-child {\n margin-right: 0;\n margin-bottom: 0;\n}\nfooter div.rows div.row h2 {\n opacity: 1;\n font-size: 1rem;\n font-weight: 500;\n margin: 1rem 0;\n line-height: normal;\n}\nfooter div.rows div.row a {\n width: fit-content;\n font-size: 14px;\n opacity: 0.6;\n display: block;\n text-decoration: none;\n margin-bottom: 1rem;\n}\nfooter div.rows div.row a:hover {\n opacity: 0.8;\n}\nfooter p {\n opacity: 0.7;\n}\n\n@media (max-width: 1000px) {\n footer div.rows {\n grid-auto-flow: row;\n grid-template-columns: repeat(2, 1fr);\n }\n footer div.rows div.row {\n margin-bottom: 1rem;\n }\n}\n@media (max-width: 600px) {\n footer div.rows {\n grid-template-columns: 1fr;\n }\n}"]} {"version":3,"sources":["footer.sass","_vars.sass","footer.css"],"names":[],"mappings":"AAEA;EACI,iBAAA;EACA,iBAAA;EACA,gBCQS;ACTb;AFGI;EACI,iBCMK;ACPb;AFGI;EACI,aAAA;EACA,sBAAA;EAEA,mBAAA;AEFR;AFIQ;EACI,oBAAA;EACA,qBAAA;AEFZ;AFIY;EACI,eAAA;EACA,gBAAA;AEFhB;AFIY;EACI,UAAA;EACA,eAAA;EACA,gBAAA;EACA,cAAA;EACA,mBAAA;AEFhB;AFIY;EACI,uBAAA;EAAA,kBAAA;EACA,eAAA;EACA,YAAA;EACA,cAAA;EACA,qBAAA;EACA,mBAAA;AEFhB;AFIgB;EACI,YAAA;AEFpB;AFII;EACI,YAAA;AEFR;;AFIA;EAEQ;IACI,mBAAA;IACA,qCAAA;EEFV;EFIU;IACI,mBAAA;EEFd;AACF;AFGA;EAEQ;IACI,0BAAA;EEFV;AACF","file":"footer.css","sourcesContent":["@import '_vars'\n\nfooter\n padding-top: 4rem\n margin: 4rem auto\n max-width: $main-width\n\n &.wide\n max-width: $more-width\n\n div.rows\n display: grid\n grid-auto-flow: column\n // justify-content: space-between\n margin-bottom: 2rem\n\n div.row\n margin-right: 1.5rem\n margin-bottom: 0.5rem\n\n &:last-child\n margin-right: 0\n margin-bottom: 0\n\n h2\n opacity: 1\n font-size: 1rem\n font-weight: 500\n margin: 1rem 0\n line-height: normal\n\n a\n width: fit-content\n font-size: 14px\n opacity: 0.6\n display: block\n text-decoration: none\n margin-bottom: 1rem\n\n &:hover\n opacity: 0.8\n\n p\n opacity: 0.7\n\n@media (max-width: 1000px)\n footer\n div.rows\n grid-auto-flow: row\n grid-template-columns: repeat(2, 1fr)\n\n div.row\n margin-bottom: 1rem\n\n@media (max-width: 600px)\n footer\n div.rows\n grid-template-columns: 1fr\n","$text: #f3f3f3\n$background: #03060d\n$secondary: #252a38\n$border: #161d2bb0\n\n$primary: #b53d61\n$primary-light: #f45a88\n$primary-glow: #f45a8861\n$primary-soft: #f79ab624\n$accent: #28aaf0\n\n$edge: 5px\n\n$main-width: 800px\n$more-width: 1000px\n","footer {\n padding-top: 4rem;\n margin: 4rem auto;\n max-width: 800px;\n}\nfooter.wide {\n max-width: 1000px;\n}\nfooter div.rows {\n display: grid;\n grid-auto-flow: column;\n margin-bottom: 2rem;\n}\nfooter div.rows div.row {\n margin-right: 1.5rem;\n margin-bottom: 0.5rem;\n}\nfooter div.rows div.row:last-child {\n margin-right: 0;\n margin-bottom: 0;\n}\nfooter div.rows div.row h2 {\n opacity: 1;\n font-size: 1rem;\n font-weight: 500;\n margin: 1rem 0;\n line-height: normal;\n}\nfooter div.rows div.row a {\n width: fit-content;\n font-size: 14px;\n opacity: 0.6;\n display: block;\n text-decoration: none;\n margin-bottom: 1rem;\n}\nfooter div.rows div.row a:hover {\n opacity: 0.8;\n}\nfooter p {\n opacity: 0.7;\n}\n\n@media (max-width: 1000px) {\n footer div.rows {\n grid-auto-flow: row;\n grid-template-columns: repeat(2, 1fr);\n }\n footer div.rows div.row {\n margin-bottom: 1rem;\n }\n}\n@media (max-width: 600px) {\n footer div.rows {\n grid-template-columns: 1fr;\n }\n}"]}

View file

@ -3,6 +3,9 @@ header {
margin: 0 auto; margin: 0 auto;
font-size: 40px; font-size: 40px;
} }
header h1 {
line-height: 4rem;
}
@media (max-width: 800px) { @media (max-width: 800px) {
header { header {

View file

@ -1 +1 @@
{"version":3,"sources":["home.sass","_vars.sass","home.css"],"names":[],"mappings":"AAEA;EACI,gBCQS;EDPT,cAAA;EACA,eAAA;AEDJ;;AFGA;EACI;IACI,eAAA;EEAN;EFEM;IACI,iBAAA;EEAV;AACF","file":"home.css","sourcesContent":["@import '_vars'\n\nheader\n max-width: $main-width\n margin: 0 auto\n font-size: 40px\n\n@media (max-width: 800px)\n header\n font-size: 26px\n \n h1\n line-height: 3rem\n","$text: #f3f3f3\n$background: #03060d\n$secondary: #253038\n$border: #161d2bb0\n\n$primary: #922646\n$primary-light: #f45a88\n$accent: #28aaf0\n\n$edge: 5px\n\n$main-width: 800px\n$more-width: 1000px\n","header {\n max-width: 800px;\n margin: 0 auto;\n font-size: 40px;\n}\n\n@media (max-width: 800px) {\n header {\n font-size: 26px;\n }\n header h1 {\n line-height: 3rem;\n }\n}"]} {"version":3,"sources":["home.sass","_vars.sass","home.css"],"names":[],"mappings":"AAEA;EACI,gBCUS;EDTT,cAAA;EACA,eAAA;AEDJ;AFGI;EACI,iBAAA;AEDR;;AFGA;EACI;IACI,eAAA;EEAN;EFEM;IACI,iBAAA;EEAV;AACF","file":"home.css","sourcesContent":["@import '_vars'\n\nheader\n max-width: $main-width\n margin: 0 auto\n font-size: 40px\n\n h1\n line-height: 4rem\n\n@media (max-width: 800px)\n header\n font-size: 26px\n \n h1\n line-height: 3rem\n","$text: #f3f3f3\n$background: #03060d\n$secondary: #252a38\n$border: #161d2bb0\n\n$primary: #b53d61\n$primary-light: #f45a88\n$primary-glow: #f45a8861\n$primary-soft: #f79ab624\n$accent: #28aaf0\n\n$edge: 5px\n\n$main-width: 800px\n$more-width: 1000px\n","header {\n max-width: 800px;\n margin: 0 auto;\n font-size: 40px;\n}\nheader h1 {\n line-height: 4rem;\n}\n\n@media (max-width: 800px) {\n header {\n font-size: 26px;\n }\n header h1 {\n line-height: 3rem;\n }\n}"]}

View file

@ -5,6 +5,9 @@ header
margin: 0 auto margin: 0 auto
font-size: 40px font-size: 40px
h1
line-height: 4rem
@media (max-width: 800px) @media (max-width: 800px)
header header
font-size: 26px font-size: 26px

48
static/css/input.css Normal file
View file

@ -0,0 +1,48 @@
button {
line-height: 2;
cursor: pointer;
font-size: 16px;
border-radius: 5px;
padding: 0.7rem 1.5rem;
font-weight: 600;
color: #f3f3f3;
background: #b53d61;
transition: box-shadow 0.2s;
}
button:hover {
filter: brightness(1.2);
}
button.special {
box-shadow: 0 0 20px rgba(244, 90, 136, 0.3803921569);
}
button.special:hover {
box-shadow: 0 0 20px #b53d61;
}
button.secondary {
color: #f3f3f3;
background: #252a38;
border: 1px solid rgba(22, 29, 43, 0.6901960784);
}
button svg, button img {
height: 24px;
display: inline-block;
vertical-align: middle;
filter: invert(180);
}
input:not([type=checkbox]):not([type=radio]) {
width: 100%;
font-size: 18px;
border-radius: 5px;
padding: 0.5rem 1rem;
color: #f3f3f3;
background: #252a38;
border: 1px solid #b53d61;
}
input:not([type=checkbox]):not([type=radio]):focus {
outline: none;
}
input[type=radio] {
filter: hue-rotate(50deg);
}/*# sourceMappingURL=input.css.map */

1
static/css/input.css.map Normal file
View file

@ -0,0 +1 @@
{"version":3,"sources":["input.sass","_vars.sass","input.css"],"names":[],"mappings":"AAEA;EACI,cAAA;EACA,eAAA;EACA,eAAA;EACA,kBCKG;EDJH,sBAAA;EACA,gBAAA;EAEA,cCVG;EDWH,mBCNM;EDQN,2BAAA;AEHJ;AFKI;EACI,uBAAA;AEHR;AFKI;EACI,qDAAA;AEHR;AFKQ;EACI,4BAAA;AEHZ;AFKI;EACI,cCzBD;ED0BC,mBCxBI;EDyBJ,gDAAA;AEHR;AFKI;EACI,YAAA;EACA,qBAAA;EACA,sBAAA;EACA,mBAAA;AEHR;;AFKA;EACI,WAAA;EACA,eAAA;EACA,kBC3BG;ED4BH,oBAAA;EAEA,cCzCG;ED0CH,mBCxCQ;EDyCR,yBAAA;AEHJ;AFKI;EACI,aAAA;AEHR;;AFKA;EACI,yBAAA;AEFJ","file":"input.css","sourcesContent":["@import '_vars'\n\nbutton\n line-height: 2\n cursor: pointer\n font-size: 16px\n border-radius: $edge\n padding: 0.7rem 1.5rem\n font-weight: 600\n\n color: $text\n background: $primary\n\n transition: box-shadow 0.2s\n\n &:hover\n filter: brightness(1.2)\n\n &.special\n box-shadow: 0 0 20px $primary-glow\n\n &:hover\n box-shadow: 0 0 20px $primary\n\n &.secondary\n color: $text\n background: $secondary\n border: 1px solid $border\n\n svg, img\n height: 24px\n display: inline-block\n vertical-align: middle\n filter: invert(180)\n\ninput:not([type=\"checkbox\"]):not([type=\"radio\"])\n width: 100%\n font-size: 18px\n border-radius: $edge\n padding: 0.5rem 1rem\n\n color: $text\n background: $secondary\n border: 1px solid $primary\n\n &:focus\n outline: none\n\ninput[type=\"radio\"]\n filter: hue-rotate(50deg)\n","$text: #f3f3f3\n$background: #03060d\n$secondary: #252a38\n$border: #161d2bb0\n\n$primary: #b53d61\n$primary-light: #f45a88\n$primary-glow: #f45a8861\n$primary-soft: #f79ab624\n$accent: #28aaf0\n\n$edge: 5px\n\n$main-width: 800px\n$more-width: 1000px\n","button {\n line-height: 2;\n cursor: pointer;\n font-size: 16px;\n border-radius: 5px;\n padding: 0.7rem 1.5rem;\n font-weight: 600;\n color: #f3f3f3;\n background: #b53d61;\n transition: box-shadow 0.2s;\n}\nbutton:hover {\n filter: brightness(1.2);\n}\nbutton.special {\n box-shadow: 0 0 20px rgba(244, 90, 136, 0.3803921569);\n}\nbutton.special:hover {\n box-shadow: 0 0 20px #b53d61;\n}\nbutton.secondary {\n color: #f3f3f3;\n background: #252a38;\n border: 1px solid rgba(22, 29, 43, 0.6901960784);\n}\nbutton svg, button img {\n height: 24px;\n display: inline-block;\n vertical-align: middle;\n filter: invert(180);\n}\n\ninput:not([type=checkbox]):not([type=radio]) {\n width: 100%;\n font-size: 18px;\n border-radius: 5px;\n padding: 0.5rem 1rem;\n color: #f3f3f3;\n background: #252a38;\n border: 1px solid #b53d61;\n}\ninput:not([type=checkbox]):not([type=radio]):focus {\n outline: none;\n}\n\ninput[type=radio] {\n filter: hue-rotate(50deg);\n}"]}

50
static/css/input.sass Normal file
View file

@ -0,0 +1,50 @@
@import '_vars'
button
line-height: 2
cursor: pointer
font-size: 16px
border-radius: $edge
padding: 0.7rem 1.5rem
font-weight: 600
color: $text
background: $primary
transition: box-shadow 0.2s
&:hover
filter: brightness(1.2)
&.special
box-shadow: 0 0 20px $primary-glow
&:hover
box-shadow: 0 0 20px $primary
&.secondary
color: $text
background: $secondary
border: 1px solid $border
svg, img
height: 24px
display: inline-block
vertical-align: middle
filter: invert(180)
input:not([type="checkbox"]):not([type="radio"])
width: 100%
font-size: 18px
border-radius: $edge
padding: 0.5rem 1rem
color: $text
background: $secondary
border: 1px solid $primary
&:focus
outline: none
input[type="radio"]
filter: hue-rotate(50deg)

View file

@ -53,7 +53,7 @@ nav #menu {
position: absolute; position: absolute;
top: 5rem; top: 5rem;
right: 2rem; right: 2rem;
background: #253038; background: #252a38;
padding: 1rem 0; padding: 1rem 0;
border-radius: 5px; border-radius: 5px;
-webkit-backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);

View file

@ -1 +1 @@
{"version":3,"sources":["navbar.sass","navbar.css","_vars.sass"],"names":[],"mappings":"AAEA;EACI,aAAA;EACA,mBAAA;EACA,kBAAA;ACDJ;ADGI;EACI,qBAAA;EACA,eEHQ;EFIR,gBAAA;EACA,eAAA;EACA,YAAA;EACA,WAAA;EAEA,iBAAA;EACA,uBAAA;ACFR;ADII;EACI,gBAAA;EACA,eAAA;EACA,yBAAA;KAAA,sBAAA;UAAA,iBAAA;ACFR;ADIQ;EACI,eAAA;EACA,kBAAA;EACA,SAAA;ACFZ;ADKI;EACI,YAAA;ACHR;ADMI;EACI,aAAA;EACA,eAAA;ACJR;;ADOI;EACI,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,qBAAA;EACA,sBAAA;ACJR;ADMQ;EACI,cExCI;ADoChB;;ADMA;EACI;IACI,sCAAA;IACA,UAAA;IAEA,YAAA;IACA,YAAA;IACA,kBAAA;IACA,SAAA;IACA,WAAA;IACA,mBExDI;IFyDJ,eAAA;IACA,kBEnDD;IFoDC,kCAAA;YAAA,0BAAA;IACA,gDAAA;IAEA,wCAAA;ECLN;EDOM;IACI,UAAA;IACA,kBAAA;ECLV;EDOM;IACI,eAAA;IACA,cAAA;IACA,iBAAA;ECLV;EDQM;IACI,eEvEI;EDiEd;EDQM;IACI,cAAA;IACA,gBAAA;IACA,eAAA;IACA,YAAA;IACA,WAAA;IACA,eAAA;IACA,gBAAA;ECNV;EDQU;IACI,wBAAA;ECNd;AACF;ADOA;EAEQ;IACI,aAAA;ECNV;AACF","file":"navbar.css","sourcesContent":["@import '_vars'\n\nnav\n display: flex\n align-items: center\n position: relative\n\n >.logo\n display: inline-block\n stroke: $primary-light\n min-height: 40px\n min-width: 40px\n height: 40px\n width: 40px\n\n margin-right: 8px\n transition: stroke 0.2s\n\n >h1\n font-weight: 500\n font-size: 20px\n user-select: none\n\n mark\n font-size: 1rem\n position: relative\n top: -3px\n\n\n >span\n flex-grow: 1\n\n\n #menu\n display: none\n cursor: pointer\n\n.link-menu\n >a\n font-size: 14px\n font-weight: 600\n margin-left: 2rem\n text-decoration: none\n transition: color 0.1s\n\n &:hover\n color: $primary-light\n\n@media (max-width: 800px)\n .link-menu\n transform: scale(0.8) translateX(1rem)\n opacity: 0\n\n z-index: 100\n width: 200px\n position: absolute\n top: 5rem\n right: 2rem\n background: $secondary\n padding: 1rem 0\n border-radius: $edge\n backdrop-filter: blur(4px)\n border: 1px solid $border\n\n transition: transform 0.2s, opacity 0.2s\n\n &.open\n opacity: 1\n transform: inherit\n\n a\n font-size: 20px\n display: block\n line-height: 3rem\n\n nav\n .logo\n stroke: $primary-light\n\n #menu\n display: block\n min-height: 32px\n min-width: 32px\n height: 32px\n width: 32px\n cursor: pointer\n transition: 0.5s\n\n &.active\n transform: rotate(90deg)\n\n@media (max-width: 400px)\n nav\n h1\n display: none","nav {\n display: flex;\n align-items: center;\n position: relative;\n}\nnav > .logo {\n display: inline-block;\n stroke: #f45a88;\n min-height: 40px;\n min-width: 40px;\n height: 40px;\n width: 40px;\n margin-right: 8px;\n transition: stroke 0.2s;\n}\nnav > h1 {\n font-weight: 500;\n font-size: 20px;\n user-select: none;\n}\nnav > h1 mark {\n font-size: 1rem;\n position: relative;\n top: -3px;\n}\nnav > span {\n flex-grow: 1;\n}\nnav #menu {\n display: none;\n cursor: pointer;\n}\n\n.link-menu > a {\n font-size: 14px;\n font-weight: 600;\n margin-left: 2rem;\n text-decoration: none;\n transition: color 0.1s;\n}\n.link-menu > a:hover {\n color: #f45a88;\n}\n\n@media (max-width: 800px) {\n .link-menu {\n transform: scale(0.8) translateX(1rem);\n opacity: 0;\n z-index: 100;\n width: 200px;\n position: absolute;\n top: 5rem;\n right: 2rem;\n background: #253038;\n padding: 1rem 0;\n border-radius: 5px;\n backdrop-filter: blur(4px);\n border: 1px solid rgba(22, 29, 43, 0.6901960784);\n transition: transform 0.2s, opacity 0.2s;\n }\n .link-menu.open {\n opacity: 1;\n transform: inherit;\n }\n .link-menu a {\n font-size: 20px;\n display: block;\n line-height: 3rem;\n }\n nav .logo {\n stroke: #f45a88;\n }\n nav #menu {\n display: block;\n min-height: 32px;\n min-width: 32px;\n height: 32px;\n width: 32px;\n cursor: pointer;\n transition: 0.5s;\n }\n nav #menu.active {\n transform: rotate(90deg);\n }\n}\n@media (max-width: 400px) {\n nav h1 {\n display: none;\n }\n}","$text: #f3f3f3\n$background: #03060d\n$secondary: #253038\n$border: #161d2bb0\n\n$primary: #922646\n$primary-light: #f45a88\n$accent: #28aaf0\n\n$edge: 5px\n\n$main-width: 800px\n$more-width: 1000px\n"]} {"version":3,"sources":["navbar.sass","navbar.css","_vars.sass"],"names":[],"mappings":"AAEA;EACI,aAAA;EACA,mBAAA;EACA,kBAAA;ACDJ;ADGI;EACI,qBAAA;EACA,eEHQ;EFIR,gBAAA;EACA,eAAA;EACA,YAAA;EACA,WAAA;EAEA,iBAAA;EACA,uBAAA;ACFR;ADII;EACI,gBAAA;EACA,eAAA;EACA,yBAAA;KAAA,sBAAA;UAAA,iBAAA;ACFR;ADIQ;EACI,eAAA;EACA,kBAAA;EACA,SAAA;ACFZ;ADKI;EACI,YAAA;ACHR;ADMI;EACI,aAAA;EACA,eAAA;ACJR;;ADOI;EACI,eAAA;EACA,gBAAA;EACA,iBAAA;EACA,qBAAA;EACA,sBAAA;ACJR;ADMQ;EACI,cExCI;ADoChB;;ADMA;EACI;IACI,sCAAA;IACA,UAAA;IAEA,YAAA;IACA,YAAA;IACA,kBAAA;IACA,SAAA;IACA,WAAA;IACA,mBExDI;IFyDJ,eAAA;IACA,kBEjDD;IFkDC,kCAAA;YAAA,0BAAA;IACA,gDAAA;IAEA,wCAAA;ECLN;EDOM;IACI,UAAA;IACA,kBAAA;ECLV;EDOM;IACI,eAAA;IACA,cAAA;IACA,iBAAA;ECLV;EDQM;IACI,eEvEI;EDiEd;EDQM;IACI,cAAA;IACA,gBAAA;IACA,eAAA;IACA,YAAA;IACA,WAAA;IACA,eAAA;IACA,gBAAA;ECNV;EDQU;IACI,wBAAA;ECNd;AACF;ADOA;EAEQ;IACI,aAAA;ECNV;AACF","file":"navbar.css","sourcesContent":["@import '_vars'\n\nnav\n display: flex\n align-items: center\n position: relative\n\n >.logo\n display: inline-block\n stroke: $primary-light\n min-height: 40px\n min-width: 40px\n height: 40px\n width: 40px\n\n margin-right: 8px\n transition: stroke 0.2s\n\n >h1\n font-weight: 500\n font-size: 20px\n user-select: none\n\n mark\n font-size: 1rem\n position: relative\n top: -3px\n\n\n >span\n flex-grow: 1\n\n\n #menu\n display: none\n cursor: pointer\n\n.link-menu\n >a\n font-size: 14px\n font-weight: 600\n margin-left: 2rem\n text-decoration: none\n transition: color 0.1s\n\n &:hover\n color: $primary-light\n\n@media (max-width: 800px)\n .link-menu\n transform: scale(0.8) translateX(1rem)\n opacity: 0\n\n z-index: 100\n width: 200px\n position: absolute\n top: 5rem\n right: 2rem\n background: $secondary\n padding: 1rem 0\n border-radius: $edge\n backdrop-filter: blur(4px)\n border: 1px solid $border\n\n transition: transform 0.2s, opacity 0.2s\n\n &.open\n opacity: 1\n transform: inherit\n\n a\n font-size: 20px\n display: block\n line-height: 3rem\n\n nav\n .logo\n stroke: $primary-light\n\n #menu\n display: block\n min-height: 32px\n min-width: 32px\n height: 32px\n width: 32px\n cursor: pointer\n transition: 0.5s\n\n &.active\n transform: rotate(90deg)\n\n@media (max-width: 400px)\n nav\n h1\n display: none","nav {\n display: flex;\n align-items: center;\n position: relative;\n}\nnav > .logo {\n display: inline-block;\n stroke: #f45a88;\n min-height: 40px;\n min-width: 40px;\n height: 40px;\n width: 40px;\n margin-right: 8px;\n transition: stroke 0.2s;\n}\nnav > h1 {\n font-weight: 500;\n font-size: 20px;\n user-select: none;\n}\nnav > h1 mark {\n font-size: 1rem;\n position: relative;\n top: -3px;\n}\nnav > span {\n flex-grow: 1;\n}\nnav #menu {\n display: none;\n cursor: pointer;\n}\n\n.link-menu > a {\n font-size: 14px;\n font-weight: 600;\n margin-left: 2rem;\n text-decoration: none;\n transition: color 0.1s;\n}\n.link-menu > a:hover {\n color: #f45a88;\n}\n\n@media (max-width: 800px) {\n .link-menu {\n transform: scale(0.8) translateX(1rem);\n opacity: 0;\n z-index: 100;\n width: 200px;\n position: absolute;\n top: 5rem;\n right: 2rem;\n background: #252a38;\n padding: 1rem 0;\n border-radius: 5px;\n backdrop-filter: blur(4px);\n border: 1px solid rgba(22, 29, 43, 0.6901960784);\n transition: transform 0.2s, opacity 0.2s;\n }\n .link-menu.open {\n opacity: 1;\n transform: inherit;\n }\n .link-menu a {\n font-size: 20px;\n display: block;\n line-height: 3rem;\n }\n nav .logo {\n stroke: #f45a88;\n }\n nav #menu {\n display: block;\n min-height: 32px;\n min-width: 32px;\n height: 32px;\n width: 32px;\n cursor: pointer;\n transition: 0.5s;\n }\n nav #menu.active {\n transform: rotate(90deg);\n }\n}\n@media (max-width: 400px) {\n nav h1 {\n display: none;\n }\n}","$text: #f3f3f3\n$background: #03060d\n$secondary: #252a38\n$border: #161d2bb0\n\n$primary: #b53d61\n$primary-light: #f45a88\n$primary-glow: #f45a8861\n$primary-soft: #f79ab624\n$accent: #28aaf0\n\n$edge: 5px\n\n$main-width: 800px\n$more-width: 1000px\n"]}

14
static/js/menu.js Normal file
View file

@ -0,0 +1,14 @@
window.addEventListener('load', function() {
menu = document.getElementById('menu');
links = document.getElementById('links');
menu.onclick = function() {
menu.classList.toggle('active');
links.classList.toggle('open');
}
links.onclick = function() {
menu.classList.remove('active');
links.classList.remove('open');
}
});

View file

@ -2,7 +2,19 @@
<link rel="stylesheet" href="/static/css/home.css"> <link rel="stylesheet" href="/static/css/home.css">
<header> <header>
<h1>Free Generative AI for everyone</h1> <h1>Free Generative AI for <span class="special-gradient">Everyone</span></h1>
<a href="/panel">
<button class="special">
<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb24tdGFibGVyLWFycm93LXJpZ2h0IiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiPjwvcGF0aD48cGF0aCBkPSJNNSAxMmwxNCAwIj48L3BhdGg+PHBhdGggZD0iTTEzIDE4bDYgLTYiPjwvcGF0aD48cGF0aCBkPSJNMTMgNmw2IDYiPjwvcGF0aD48L3N2Zz4=">
Learn more
</button>
</a>
<a href="https://www.youtube.com/watch?v=YD91G8DdUsw" target="_blank">
<button class="secondary">
<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb24tdGFibGVyLWJvb2stMiIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIj48L3BhdGg+PHBhdGggZD0iTTE5IDR2MTZoLTEyYTIgMiAwIDAgMSAtMiAtMnYtMTJhMiAyIDAgMCAxIDIgLTJoMTJ6Ij48L3BhdGg+PHBhdGggZD0iTTE5IDE2aC0xMmEyIDIgMCAwIDAgLTIgMiI+PC9wYXRoPjxwYXRoIGQ9Ik05IDhoNiI+PC9wYXRoPjwvc3ZnPg==">
Learn less
</button>
</a>
</header> </header>
<main> <main>
</main> </main>

View file

@ -0,0 +1,18 @@
{% include 'parts/begin.html' %}
<main>
<h1>Impressum (Imprint)</h1>
<p>
<s>My name is Walter Hartwell White. I live at 308 Negra Arroyo Lane, Albuquerque, New Mexico, 87104.</s>
</p>
<p>
Hierbei handelt es sich gemäß § 5 TMG um eine private Internetseite für Freunde und Bekannte ohne kommerzielle Interessen.
Entsprechend entfällt die <a target="_blank" href="https://www.bmuv.de/themen/verbraucherschutz-im-bmuv/digitaler-verbraucherschutz/impressumspflicht#c66866">
Notwendigkeit
</a>
eines Impressums.
</p>
</main>
{% include 'parts/end.html' %}

View file

@ -0,0 +1,72 @@
{% include 'parts/begin.html' %}
<main>
<h1>Privacy</h1>
<p>
We can gurantee that the following information is completely up-to-date. We don't have lawyers,
but write this pricacy policy to the best of our knowledge and belief.
</p>
<h2>Data we collect</h2>
<p>
<ul>
<li>
IP address, browser user agent, which sites you visited when using which HTTP method
<ul>
<li>
We use <a href="https://www.cloudflare.com/privacypolicy/" target="_blank"><i>
Cloudflare
</i></a> to protect against botnets, DDoS and other attacks.
</li>
<li>
The data is kept as long as I don't have a girlfriend.
</li>
</ul>
</li>
</ul>
</p>
<h2>How you can protect your privacy</h2>
<p>
Privacy is not just a human right, but one of our biggest concerns.
Thus, we provide you some information about how you can avoid tracking.
<p>
<h3>Use the <a href="https://noscript.net/" target="_blank">NoScript browser extension</a></h3>
<p>
The drawbacks of using NoScript are that some features may not work and that you have to manually allow certain scripts etc.
<br><br>
We personally don't recommend disabling JavaScript on our website, but if you are really concerned about your privacy, go ahead.
</p>
<h3>Clear your browser history and cookies</h3>
<p>
We mainly use cookies to provide functionality, e.g. to store your session token, so you do not have to log in every time you visit our website.
But malware could attack your browser and steal your cookies, which is why you should clear your cookies regularly.
Additionally, malware could decrypt and read your browser password database, which is why you should use a secure password manager instead.
We recommend <a href="https://keepass.info/" target="_blank">KeePass</a> and <a href="https://bitwarden.com/" target="_blank">Bitwarden</a>.
You can use the built-in incognito mode of your browser or clear your history and cookies manually.
Additionally, you can use a browser extension like
<a href="https://github.com/Cookie-AutoDelete/Cookie-AutoDelete" target="_blank">Cookie AutoDelete</a>
to automatically delete cookies.
</p>
<h3>Other attack vectors (browser, OS, ...)</h3>
<p>
There are a lot of other different ways your privacy could be compromised, but we cannot list them all here.
You can find more information about how to protect your privacy on the following websites:
<ul>
<li>
<a href="https://www.privacyguides.org/en/" target="_blank">PrivacyGuides</a>
</li>
<li>
<a href="https://techlore.tech/goincognito" target="_blank">Techlore's GoIncognito course</a>
</li>
<li>
<a href="https://thenewoil.org/" target="_blank">TheNewOil</a>
</li>
</ul>
</p>
</main>
{% include 'parts/end.html' %}

123
templates/legal/terms.html Normal file
View file

@ -0,0 +1,123 @@
{% include 'parts/begin.html' %}
<main>
<h1>Terms of Service</h1>
<p>
Please contact us if you have any questions regarding our Terms of Service.
</p>
<h2>Definitions</h2>
<p>
<ul>
<li>We = the operators of this service, as specified in
<a href="/legal/imprint" target="_blank">the imprint</a>
.</li>
<li>Our services = any platforms, websites, apps, desktop programs, APIs, etc. that we operate.</li>
</ul>
</p>
<h2>Our ethics</h2>
<p>
Of course, we can't influence the law, but we think that just because something is legal, it doesn't mean it's ethical.
Same goes the other way around. For this reason, we have a set of ethics that we follow. Please keep in mind that <b>we (and you!)
obviously still have to follow the law</b> and that <b>our ethics are not legally binding</b>.
</p>
<p>
To provide better transparency, we have a list of things that are not allowed on any of our platforms or services.
</p>
<h3>Not allowed</h3>
<p>
<ol>
<li>Anything violating the UN constitution of human rights</li>
<li>Endorsement, depiction <sup>1</sup> or using our service(s) to perform any kind of violence - including:
<ol>
<li>Terrorism <sup>1</sup></li>
<li>Organized crime <sup>1</sup></li>
<li>Animal abuse <sup>1</sup></li>
<li>Verbal violence (hate speech) <sup>1</sup></li>
<li>Sexual violence (non-consensual sex)</li>
<li>Self-harm and suicide</li>
...
</ol>
<li>Endorsement, usage of our service(s) to perform any kind of discrimination - including:
<ol>
<li>Racism</li>
<li>Sexism</li>
<li>Homophobia</li>
<li>Transphobia</li>
<li>Xenophobia</li>
<li>Casteism</li>
<li>Ableism</li>
...
</ol>
<li>Endorsement, depiction or using our service(s) to perform any kind of:
<ol>
<li>Pedophilia (this includes drawings/animated media and written fantasies!)</li>
<li>Necrophilia</li>
<li>Gambling</li>
<li>Exploitation and black hat hacking</li>
</ol>
</li>
<li>Spreading of harassment, agitation</li>
<li>"Doxxing"/posting of private chats. You are not allowed to spread content others have created without their permission.</li>
<li>Malicious links with IP/PII loggers ("grabbers") etc.</li>
<li>(Especially intentional) spreading of fake news/fake information</li>
<li>Automation and spam (ask first!)</li>
<li>Commercial self-promotion (this <em>does not</em> include linking your social media profile)</li>
</ol>
</p>
<sup>1</sup> You <em>are</em> allowed to talk about these topics, but <em>do not</em> endorse them or depict them in any way.
<p>It goes without saying that illegal content, is forbidden, too! Copyright is a thing, if you like it or not.</p>
<h2>What you can expect from us</h2>
<p>We're working on getting all of these points.
<ol>
<li><s>You get notified when we're changing our Terms of Service.</s> (How?)</li>
<li>We provide a history of our Terms of Service. (Just check our source code)</li>
<li>Your account won't be deleted without us stating a clear reason.</li>
<li>We won't ever sell your personal data to advertisers.</li>
<li>
When asked, we will give the government as little information as possible about you,
unless we genuinely think you have made a strong violation of our ethics.
</li>
<li>You maintain ownership of the content you create and upload on our platforms.</li>
<li>We only collect logs when necessary to ensure the functionality of our service.</li>
<li>You can delete all your data at any time.</li>
<li>You can retrieve an archive of your data at any time.</li>
<li>We offer a hidden service, which especially comes in handy if you live in a country with a lot of censorship.</li>
</ol>
</p>
<h2>What we expect from you</h2>
<p>We ask you to...
<ol>
<li>Follow our ethics</li>
<li>Follow the German law</li>
<li>Use our APIs etc. responsibly and don't spam</li>
</ol>
</p>
<h2>Please note though, that...</h2>
<p>
<ol>
<li>
We work with third parties to provide some of our Services.
For example, third party providers may provide the login system.
These providers are bound by their Privacy Policies to safeguard that information.
If you use other third-party in connection with our services,
their Terms of Service and Privacy Policies govern your use of those services.
</li>
<li>
We collect <em>some</em> data, but only when necessary to ensure the functionality of our service.
You can learn more on our <a href="/legal/privacy" target="_blank">Privacy Policy</a>.
</li>
</ol>
</p>
</main>
{% include 'parts/end.html' %}

12
templates/panel.html Normal file
View file

@ -0,0 +1,12 @@
{% include 'parts/begin.html' %}
<link rel="stylesheet" href="/static/css/home.css">
<main>
<h1>Panel</h1>
<h2>
<mark>Warning</mark>
this is a <u>very early prototype</u> of NovaAI. Do not use it in production.
You have been warned.
</h2>
</main>
{% include 'parts/end.html' %}