2
0
mirror of https://github.com/offen/website.git synced 2024-10-19 04:20:28 +02:00

Merge pull request #12 from offen/development

update website
This commit is contained in:
Hendrik Niefeld 2019-10-27 10:29:31 +01:00 committed by GitHub
commit b6958aa982
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 104 additions and 90 deletions

View File

@ -30,10 +30,13 @@
}, },
{ {
"name": "server", "name": "server",
"image": "offen/offen@sha256:fe55ba1c183eb8bb4dd19143e6fe1133d6d3b9115c94cc2150620b27adef18fc", "image": "offen/offen@sha256:4c0d2d5db9bc749d21ad8659008658bf25318074b7c813b0a694e64816df750d",
"essential": true, "essential": true,
"memory": 256, "memory": 256,
"command": ["serve"] "command": ["serve"],
"environment": [
{ "name": "OFFEN_SERVER_REVERSEPROXY", "value": "1" }
]
}, },
{ {
"name": "logspout", "name": "logspout",

View File

@ -23,10 +23,13 @@
}, },
{ {
"name": "server", "name": "server",
"image": "offen/offen@sha256:fe55ba1c183eb8bb4dd19143e6fe1133d6d3b9115c94cc2150620b27adef18fc", "image": "offen/offen@sha256:4c0d2d5db9bc749d21ad8659008658bf25318074b7c813b0a694e64816df750d",
"essential": true, "essential": true,
"memory": 256, "memory": 256,
"command": ["serve"] "command": ["serve"],
"environment": [
{ "name": "OFFEN_SERVER_REVERSEPROXY", "value": "1" }
]
} }
] ]
} }

View File

@ -28,15 +28,10 @@ http {
autoindex on; autoindex on;
root /www/data; root /www/data;
expires $expires; expires $expires;
proxy_hide_header Content-Security-Policy;
add_header Content-Security-Policy $csp; add_header Content-Security-Policy $csp;
proxy_hide_header Strict-Transport-Security;
add_header Strict-Transport-Security 'max-age=604800; includeSubDomains'; add_header Strict-Transport-Security 'max-age=604800; includeSubDomains';
proxy_hide_header Referrer-Policy;
add_header Referrer-Policy 'origin-when-cross-origin'; add_header Referrer-Policy 'origin-when-cross-origin';
proxy_hide_header X-Content-Type-Options;
add_header X-Content-Type-Options 'nosniff'; add_header X-Content-Type-Options 'nosniff';
proxy_hide_header X-XSS-Protection;
add_header X-XSS-Protection '1; mode=block'; add_header X-XSS-Protection '1; mode=block';
location /api/ { location /api/ {

View File

@ -12,7 +12,7 @@ services:
- server - server
server: server:
image: offen/offen@sha256:fe55ba1c183eb8bb4dd19143e6fe1133d6d3b9115c94cc2150620b27adef18fc image: offen/offen@sha256:4c0d2d5db9bc749d21ad8659008658bf25318074b7c813b0a694e64816df750d
command: serve command: serve
volumes: volumes:
- ./bootstrap.yml:/bootstrap.yml - ./bootstrap.yml:/bootstrap.yml
@ -23,6 +23,7 @@ services:
OFFEN_APP_DISABLESECURECOOKIE: '1' OFFEN_APP_DISABLESECURECOOKIE: '1'
OFFEN_DATABASE_CONNECTIONSTRING: /data/offen.db OFFEN_DATABASE_CONNECTIONSTRING: /data/offen.db
OFFEN_SERVER_PORT: 8080 OFFEN_SERVER_PORT: 8080
OFFEN_SERVER_REVERSEPROXY: '1'
OFFEN_SECRETS_COOKIEEXCHANGE: 8jeKYbbnywoYIZznu4HffQ== OFFEN_SECRETS_COOKIEEXCHANGE: 8jeKYbbnywoYIZznu4HffQ==
OFFEN_SECRETS_EMAILSALT: eypctS7SVKM1Ureb61db5Q== OFFEN_SECRETS_EMAILSALT: eypctS7SVKM1Ureb61db5Q==
depends_on: depends_on:

View File

@ -1,5 +1,5 @@
Title: Page not found | offen Title: Page not found | offen
description: offen is a free and open source analytics software for websites and web applications that allows respectful handling of data. description: This link isnt working.
save_as: 404.html save_as: 404.html
href: /404.html href: /404.html
no_stats: true no_stats: true

View File

@ -1,5 +1,5 @@
Title: About | offen Title: About | offen
description: offen is a free and open source analytics software for websites and web applications that allows respectful handling of data. description: Who we are, who supports us and how you can can get in touch.
save_as: about/index.html save_as: about/index.html
href: /about/ href: /about/

View File

@ -1,7 +1,8 @@
Title: Deep dive | offen Title: Deep dive | offen
description: offen is a free and open source analytics software for websites and web applications that allows respectful handling of data. description: What do users know about their data? How can they access it? Do operators benefit from a careful handling of user data? Does offen work in accordance with GDPR?
save_as: deep-dive/index.html save_as: deep-dive/index.html
href: /deep-dive/ href: /deep-dive/
sitemap_priority: 0.7
## Deep dive ## Deep dive

View File

@ -1,8 +1,9 @@
Title: Transparent web analytics for everyone | offen Title: Transparent web analytics for everyone | offen
description: offen is a free and open source analytics software for websites and web applications that allows respectful handling of data. description: offen is a free and open source analytics software for websites and web applications. Users can access their data while the operators treat it with respect.
save_as: index.html save_as: index.html
href: / href: /
template: index template: index
sitemap_priority: 1.0
## Summary ## Summary

View File

@ -1,7 +1,8 @@
Title: Legal Notice | offen Title: Legal Notice | offen
description: offen is a free and open source analytics software for websites and web applications that allows respectful handling of data. description: Information in accordance with Section 5 TMG
save_as: legal-notice/index.html save_as: legal-notice/index.html
href: /legal-notice/ href: /legal-notice/
exclude_from_sitemap: true
## Legal Notice ## Legal Notice

View File

@ -1,5 +1,5 @@
Title: Opt-out | offen Title: Opt-out | offen
description: offen is a free and open source analytics software for websites and web applications that allows respectful handling of data. description: Prevent offen from aggregating the actions you have taken on participating websites.
save_as: opt-out/index.html save_as: opt-out/index.html
exclude_from_sitemap: true exclude_from_sitemap: true

View File

@ -1,8 +1,9 @@
Title: Status | offen Title: Project status | offen
description: offen is a free and open source analytics software for websites and web applications that allows respectful handling of data. description: How much headway has been made on individual tasks leading up to a stable version.
save_as: status/index.html save_as: status/index.html
href: /status/ href: /status/
## Project status ## Project status
### September 2019 ### September 2019

View File

@ -2,3 +2,4 @@ pelican==4.0.1
markdown==3.1.1 markdown==3.1.1
webassets==0.12.1 webassets==0.12.1
cssmin==0.2.0 cssmin==0.2.0
libsass==0.19.3

View File

@ -3,15 +3,13 @@
/* --------------------------------------------------- /* ---------------------------------------------------
ROOTS ROOTS
----------------------------------------------------*/ ----------------------------------------------------*/
:root { $yellow-mid: #F7BF08;
--yellow-mid: #F7BF08; $yellow-bright: #fde28c;
--yellow-bright: #fde28c; $mint-mid: #BBD9D3;
--mint-mid: #BBD9D3; $black-mid: #39352A;
--black-mid: #39352A; $grey-mid: #898989;
--grey-mid: #898989; $grey-bright: #D5D5D5;
--grey-bright: #D5D5D5; $white: #FFF;
--white: #FFF;
}
/* --------------------------------------------------- /* ---------------------------------------------------
@ -34,28 +32,28 @@ LAYOUT & SPACER
z-index: 1; z-index: 1;
top: 0; top: 0;
right: 0; right: 0;
background-color: var(--yellow-mid); background-color: $yellow-mid;
} }
.intro { .intro {
width: 100%; width: 100%;
margin: 70px 0 0 0; margin: 70px 0 0 0;
background-color: var(--yellow-mid); background-color: $yellow-mid;
} }
.feature { .feature {
width: 100%; width: 100%;
} }
.cta-top { .cta-top {
width: 100%; width: 100%;
color: var(--yellow-mid); color: $yellow-mid;
} }
.content { .content {
width: 100%; width: 100%;
margin: 70px 0 0 0; margin: 70px 0 0 0;
background-color: var(--white); background-color: $white;
} }
.content-index { .content-index {
width: 100%; width: 100%;
background-color: var(--white); background-color: $white;
} }
.cta-bottom, .cta-bottom,
.outro { .outro {
@ -64,8 +62,8 @@ LAYOUT & SPACER
.footer { .footer {
width: 100%; width: 100%;
min-height: 300px; min-height: 300px;
color: var(--grey-mid); color: $grey-mid;
background-color: var(--black-mid); background-color: $black-mid;
} }
.spacer-intro { .spacer-intro {
width: 430px; width: 430px;
@ -76,13 +74,13 @@ LAYOUT & SPACER
} }
/* Desktop Styles */ /* Desktop Styles */
@media only screen and (min-width: 961px) { @media only screen and (min-width: 961px) {
.container-full {
padding: 60px 0 120px 0;
}
.container-reader { .container-reader {
width: 600px; width: 600px;
margin: 0 auto; margin: 0 auto;
padding: 60px 20px 120px 20px; padding: 60px 0 120px 0;
}
.container-full {
padding: 60px 80px 120px 80px;
} }
.footer { .footer {
padding: 40px 40px 0 40px; padding: 40px 40px 0 40px;
@ -90,11 +88,9 @@ LAYOUT & SPACER
} }
/* Mobile Styles */ /* Mobile Styles */
@media only screen and (min-width: 600px) and (max-width: 960px) { @media only screen and (min-width: 600px) and (max-width: 960px) {
.container-reader, .container-reader {
.container-full {
width: 600px; width: 600px;
margin: 0 auto; margin: 0 auto;
padding: 60px 20px 120px 20px;
} }
} }
@media only screen and (max-width: 960px) { @media only screen and (max-width: 960px) {
@ -131,11 +127,17 @@ CARDS
.card-deck, .card-deck,
.card, .card,
.footer-card-deck { .footer-card-deck {
display: -webkit-box;
display: -ms-flexbox;
display: flex; display: flex;
} }
.card { .card {
max-width: 300px; -webkit-box-orient: vertical;
color: var(--black-mid); -webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
width: 280px;
color: $black-mid;
} }
.card h2, .card h2,
.card p { .card p {
@ -151,15 +153,22 @@ CARDS
/* Mobile Styles */ /* Mobile Styles */
@media only screen and (max-width: 960px) { @media only screen and (max-width: 960px) {
.card-deck, .card-deck,
.card,
.footer-card-deck { .footer-card-deck {
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column; flex-direction: column;
} }
.card-deck {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
.card { .card {
align-self: center; margin: 0 auto;
} }
.card:nth-child(2) { .card:nth-child(2) {
margin: 100px 0 100px 0; margin: 100px auto 100px auto;
} }
.footer-card { .footer-card {
text-align: center; text-align: center;
@ -169,18 +178,22 @@ CARDS
@media only screen and (min-width: 961px) { @media only screen and (min-width: 961px) {
.card-deck, .card-deck,
.footer-card-deck { .footer-card-deck {
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row; flex-direction: row;
} }
.card {
flex-direction: column;
}
.card-deck { .card-deck {
justify-content: space-evenly; -webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
} }
.card:nth-child(2) { .card:nth-child(2) {
margin: 0 40px 0 40px; margin: 0 50px 0 50px;
} }
.footer-card-deck { .footer-card-deck {
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between; justify-content: space-between;
} }
.footer-card:nth-child(1), .footer-card:nth-child(1),
@ -199,25 +212,25 @@ CARDS
TYPO TYPO
----------------------------------------------------*/ ----------------------------------------------------*/
body { body {
background-color: var(--white);
font-family: "Noto Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; font-family: "Noto Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 14px; font-size: 14px;
line-height: 1.5; line-height: 1.5;
font-weight: 400; font-weight: 400;
word-wrap: break-word; word-wrap: break-word;
color: var(--grey-mid); color: $grey-mid;
background-color: $black-mid; // overscroll color
} }
h1, h1,
h2 { h2 {
font-weight: 700; font-weight: 700;
line-height: 1.3; line-height: 1.3;
color: var(--black-mid); color: $black-mid;
} }
h3, h3,
h4 { h4 {
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
color: var(--black-mid); color: $black-mid;
} }
h3 { h3 {
margin: 0 0 20px 0; margin: 0 0 20px 0;
@ -226,7 +239,7 @@ p + h3 {
margin: 60px 0 20px 0; margin: 60px 0 20px 0;
} }
h4 { h4 {
color: var(--grey-mid); color: $grey-mid;
} }
/* Desktop Styles */ /* Desktop Styles */
@media only screen and (min-width: 481px) { @media only screen and (min-width: 481px) {
@ -257,7 +270,7 @@ LINKS
a, a,
a:hover, a:hover,
a:focus { a:focus {
color: var(--grey-mid); color: $grey-mid;
text-decoration: none; text-decoration: none;
} }
p a, p a,
@ -268,7 +281,7 @@ p a:focus {
ol li p a, ol li p a,
ol li p a:hover, ol li p a:hover,
ol li p a:focus { ol li p a:focus {
color: var(--grey-bright); color: $grey-bright;
} }
@ -276,7 +289,7 @@ color: var(--grey-bright);
TYPO ELEMENTS TYPO ELEMENTS
----------------------------------------------------*/ ----------------------------------------------------*/
h1 + p { h1 + p {
color: var(--black-mid); color: $black-mid;
} }
.bg h2 { .bg h2 {
margin: 0 0 10px 0; margin: 0 0 10px 0;
@ -294,11 +307,11 @@ h1 + p {
} }
#bg-cta-top h2, #bg-cta-top h2,
#bg-cta-top p { #bg-cta-top p {
color: var(--white); color: $white;
} }
#bg-outro h2, #bg-outro h2,
#bg-outro p { #bg-outro p {
color: var(--black-mid); color: $black-mid;
} }
strong, strong,
h1 + p strong, h1 + p strong,
@ -307,16 +320,16 @@ h1 + p strong,
} }
.container-reader h2 { .container-reader h2 {
margin: 0 0 20px 0; margin: 0 0 20px 0;
color: var(--grey-bright); color: $grey-bright;
} }
strong, strong,
h3 strong { h3 strong {
text-decoration: none; text-decoration: none;
font-weight: 400; font-weight: 400;
color: var(--black-mid); color: $black-mid;
} }
.cta-top strong { .cta-top strong {
color: var(--white); color: $white;
} }
.content-index p, .content-index p,
.content p { .content p {
@ -325,32 +338,32 @@ h3 strong {
hr { hr {
height: 0; height: 0;
margin: 80px 0 20px 0; margin: 80px 0 20px 0;
border-top: 1px solid var(--grey-bright); border-top: 1px solid $grey-bright;
} }
blockquote { blockquote {
margin: 0; margin: 0;
padding: 0 0 0 20px; padding: 0 0 0 20px;
font-style: italic; font-style: italic;
border-left: 1px solid var(--grey-bright); border-left: 1px solid $grey-bright;
} }
ol { ol {
padding-inline-start: 20px; padding-inline-start: 20px;
} }
em { em {
background: linear-gradient(transparent 66%, var(--yellow-bright) 66%); background: linear-gradient(transparent 66%, $yellow-bright 66%);
font-style: normal; font-style: normal;
} }
.footer-card h3 strong { .footer-card h3 strong {
font-weight: 700; font-weight: 700;
color: var(--yellow-mid); color: $yellow-mid;
} }
.footer h3, .footer h3,
.footer h4 { .footer h4 {
color: var(--yellow-mid); color: $yellow-mid;
margin: 0 0 2px 0; margin: 0 0 2px 0;
} }
.footnote { .footnote {
color: var(--grey-bright); color: $grey-bright;
} }
/* reposition for fixed menu */ /* reposition for fixed menu */
.footnote li { .footnote li {
@ -379,8 +392,8 @@ BUTTONS
.btn-color-yellow:hover, .btn-color-yellow:hover,
.btn-color-yellow:active { .btn-color-yellow:active {
font-weight: 700; font-weight: 700;
color: var(--yellow-mid); color: $yellow-mid;
border: solid var(--yellow-mid) 5px; border: solid $yellow-mid 5px;
} }
.btn-color-black, .btn-color-black,
.btn-color-black:visited, .btn-color-black:visited,
@ -388,8 +401,8 @@ BUTTONS
.btn-color-black:hover, .btn-color-black:hover,
.btn-color-black:active { .btn-color-black:active {
font-weight: 700; font-weight: 700;
color: var(--black-mid); color: $black-mid;
border: solid var(--black-mid) 5px; border: solid $black-mid 5px;
} }
.btn-color-white, .btn-color-white,
.btn-color-white:visited, .btn-color-white:visited,
@ -397,8 +410,8 @@ BUTTONS
.btn-color-white:hover, .btn-color-white:hover,
.btn-color-white:active { .btn-color-white:active {
font-weight: 700; font-weight: 700;
color: var(--white); color: $white;
border: solid var(--white) 5px; border: solid $white 5px;
} }
@ -442,12 +455,12 @@ nav ul li a:visited {
line-height: 70px; line-height: 70px;
text-decoration: none; text-decoration: none;
font-weight: 700; font-weight: 700;
background: var(--yellow-mid); background: $yellow-mid;
color: var(--black-mid); color: $black-mid;
} }
nav ul li a:hover, nav ul li a:hover,
nav ul li a:visited:hover { nav ul li a:visited:hover {
color: var(--black-mid); color: $black-mid;
} }
nav ul li a:not(:only-child):after, nav ul li a:not(:only-child):after,
nav ul li a:visited:not(:only-child):after { nav ul li a:visited:not(:only-child):after {
@ -471,7 +484,7 @@ nav ul li ul li a {
position: absolute; position: absolute;
top: 0; top: 0;
right: 0; right: 0;
background: var(--yellow-mid); background: $yellow-mid;
height: 70px; height: 70px;
width: 70px; width: 70px;
} }
@ -531,7 +544,7 @@ nav ul li ul li a {
border-radius: 1px; border-radius: 1px;
height: 2px; height: 2px;
width: 25px; width: 25px;
background: var(--black-mid); background: $black-mid;
position: absolute; position: absolute;
display: block; display: block;
content: ''; content: '';

View File

@ -19,7 +19,7 @@
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<link rel="canonical" href="{{ SITEURL }}/{{ page.save_as }}"> <link rel="canonical" href="{{ SITEURL }}/{{ page.save_as }}">
<link rel="shortcut icon" type="image/x-icon" href="/theme/images/favicon.ico"> <link rel="shortcut icon" type="image/x-icon" href="/theme/images/favicon.ico">
{% assets filters="cssmin", output="css/style.min.css", "css/normalize.css", "css/fonts.css", "css/style.css" %} {% assets filters="libsass,cssmin", output="css/style.min.css", "css/normalize.css", "css/fonts.css", "css/style.scss" %}
<link rel="stylesheet" href="/{{ ASSET_URL }}"> <link rel="stylesheet" href="/{{ ASSET_URL }}">
{% endassets %} {% endassets %}
{% if OFFEN_ACCOUNT_ID and not page.no_stats %} {% if OFFEN_ACCOUNT_ID and not page.no_stats %}

View File

@ -4,7 +4,7 @@
{% if not page.exclude_from_sitemap %} {% if not page.exclude_from_sitemap %}
<url> <url>
<loc>{{ SITEURL }}{{ page.href }}</loc> <loc>{{ SITEURL }}{{ page.href }}</loc>
<priority>{{ page.sitemap_priority or 1.0 }}</priority> <priority>{{ page.sitemap_priority or 0.5 }}</priority>
</url> </url>
{% endif %} {% endif %}
{% endfor %} {% endfor %}

View File

@ -25,18 +25,12 @@ http {
server { server {
listen 80; listen 80;
expires $expires; expires $expires;
proxy_hide_header Content-Security-Policy;
add_header Content-Security-Policy $csp; add_header Content-Security-Policy $csp;
proxy_hide_header Strict-Transport-Security;
add_header Strict-Transport-Security 'max-age=604800; includeSubDomains'; add_header Strict-Transport-Security 'max-age=604800; includeSubDomains';
proxy_hide_header Referrer-Policy;
add_header Referrer-Policy 'origin-when-cross-origin'; add_header Referrer-Policy 'origin-when-cross-origin';
proxy_hide_header X-Content-Type-Options;
add_header X-Content-Type-Options 'nosniff'; add_header X-Content-Type-Options 'nosniff';
proxy_hide_header X-XSS-Protection;
add_header X-XSS-Protection '1; mode=block'; add_header X-XSS-Protection '1; mode=block';
location /api/ { location /api/ {
proxy_pass http://server; proxy_pass http://server;
proxy_redirect off; proxy_redirect off;