Compare commits
No commits in common. "main" and "pages-dev" have entirely different histories.
47 changed files with 3244 additions and 2224 deletions
|
@ -1,50 +0,0 @@
|
|||
name: Build and Deploy Static Site
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- dev
|
||||
|
||||
jobs:
|
||||
build:
|
||||
container: node:20-bookworm
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
apt update
|
||||
apt install -y python3 python3-pip
|
||||
python3 -m pip install -r requirements.txt --break-system-packages
|
||||
|
||||
- name: Generate static site
|
||||
run: python3 main.py --dev
|
||||
|
||||
- name: Deploy to pages branch
|
||||
run: |
|
||||
# Configure Git
|
||||
git config --global user.name "Forgejo"
|
||||
git config --global user.email "noreply@private.coffee"
|
||||
|
||||
# Move generated static site files to a temporary location
|
||||
mv build ../static_site_temp
|
||||
cp .gitignore ../static_site_temp
|
||||
|
||||
# Create a new orphan branch named 'pages-dev'
|
||||
git checkout --orphan pages-dev
|
||||
|
||||
# Remove all files from the working directory
|
||||
git rm -rf .
|
||||
|
||||
# Move the static site files back to the working directory
|
||||
mv ../static_site_temp/* ./
|
||||
mv ../static_site_temp/.* ./ 2>/dev/null || true
|
||||
|
||||
# Add and commit the static site files
|
||||
git add .
|
||||
git commit -m "Deploy static site"
|
||||
|
||||
# Force push to the 'pages-dev' branch
|
||||
git push origin pages-dev --force
|
|
@ -1,50 +0,0 @@
|
|||
name: Build and Deploy Static Site (Pride Theme)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
container: node:20-bookworm
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
apt update
|
||||
apt install -y python3 python3-pip
|
||||
python3 -m pip install -r requirements.txt --break-system-packages
|
||||
|
||||
- name: Generate static site
|
||||
run: python3 main.py --theme pride
|
||||
|
||||
- name: Deploy to pages branch
|
||||
run: |
|
||||
# Configure Git
|
||||
git config --global user.name "Forgejo"
|
||||
git config --global user.email "noreply@private.coffee"
|
||||
|
||||
# Move generated static site files to a temporary location
|
||||
mv build ../static_site_temp
|
||||
cp .gitignore ../static_site_temp
|
||||
|
||||
# Create a new orphan branch named 'pages-pride'
|
||||
git checkout --orphan pages-pride
|
||||
|
||||
# Remove all files from the working directory
|
||||
git rm -rf .
|
||||
|
||||
# Move the static site files back to the working directory
|
||||
mv ../static_site_temp/* ./
|
||||
mv ../static_site_temp/.* ./ 2>/dev/null || true
|
||||
|
||||
# Add and commit the static site files
|
||||
git add .
|
||||
git commit -m "Deploy static site"
|
||||
|
||||
# Force push to the 'pages-pride' branch
|
||||
git push origin pages-pride --force
|
|
@ -1,50 +0,0 @@
|
|||
name: Build and Deploy Static Site
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build:
|
||||
container: node:20-bookworm
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
apt update
|
||||
apt install -y python3 python3-pip
|
||||
python3 -m pip install -r requirements.txt --break-system-packages
|
||||
|
||||
- name: Generate static site
|
||||
run: python3 main.py
|
||||
|
||||
- name: Deploy to pages branch
|
||||
run: |
|
||||
# Configure Git
|
||||
git config --global user.name "Forgejo"
|
||||
git config --global user.email "noreply@private.coffee"
|
||||
|
||||
# Move generated static site files to a temporary location
|
||||
mv build ../static_site_temp
|
||||
cp .gitignore ../static_site_temp
|
||||
|
||||
# Create a new orphan branch named 'pages'
|
||||
git checkout --orphan pages
|
||||
|
||||
# Remove all files from the working directory
|
||||
git rm -rf .
|
||||
|
||||
# Move the static site files back to the working directory
|
||||
mv ../static_site_temp/* ./
|
||||
mv ../static_site_temp/.* ./ 2>/dev/null || true
|
||||
|
||||
# Add and commit the static site files
|
||||
git add .
|
||||
git commit -m "Deploy static site"
|
||||
|
||||
# Force push to the 'pages' branch
|
||||
git push origin pages --force
|
27
.vscode/launch.json
vendored
27
.vscode/launch.json
vendored
|
@ -1,27 +0,0 @@
|
|||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Debug: Development Mode",
|
||||
"type": "debugpy",
|
||||
"request": "launch",
|
||||
"program": "main.py",
|
||||
"console": "integratedTerminal",
|
||||
"cwd": "${workspaceFolder}",
|
||||
"env": {
|
||||
"PRIVATECOFFEE_DEV": "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Debug: Production Mode",
|
||||
"type": "debugpy",
|
||||
"request": "launch",
|
||||
"program": "main.py",
|
||||
"console": "integratedTerminal",
|
||||
"cwd": "${workspaceFolder}"
|
||||
}
|
||||
]
|
||||
}
|
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"files.associations": {
|
||||
"*.html": "jinja-html"
|
||||
}
|
||||
}
|
23
LICENSE
23
LICENSE
|
@ -1,23 +0,0 @@
|
|||
Copyright (c) 2023 Private.coffee Team <support@private.coffee>
|
||||
|
||||
Use of the Private.coffee / Private Coffee name or the Private.coffee logo
|
||||
without express permission by the Private.coffee team is prohibited. However,
|
||||
you are free to use all code components under the MIT License:
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
34
README.md
34
README.md
|
@ -1,34 +0,0 @@
|
|||
# Private.coffee Website
|
||||
|
||||
[![Support Private.coffee!](https://shields.private.coffee/badge/private.coffee-Support%20us!-pink?logo=coffeescript)](https://private.coffee)
|
||||
|
||||
This is the source code for the [Private.coffee](https://private.coffee)
|
||||
website.
|
||||
|
||||
It is a simple Jinja2 static website generator that compiles the templates in
|
||||
the `templates` directory in conjunction with the JSON files in the `data`
|
||||
directory to generate the static HTML files in the `build` directory.
|
||||
|
||||
## Development
|
||||
|
||||
To run the website locally, you will need to have Python 3 installed. Then, you
|
||||
can install the dependencies and run the website with the following commands:
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
python main.py
|
||||
```
|
||||
|
||||
The website will be built into the `build` directory, and you can view it by
|
||||
opening the `index.html` file in your browser or using the included HTTP server
|
||||
(`python main.py --serve`).
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the [LICENSE](LICENSE)
|
||||
file for details.
|
||||
|
||||
## Attribution
|
||||
|
||||
This website is built using the [Bootstrap](https://getbootstrap.com) framework
|
||||
and [Phosphor Icons](https://phosphoricons.com).
|
|
@ -123,33 +123,14 @@ h5 {
|
|||
color: #604c2e;
|
||||
}
|
||||
|
||||
/* Image Styles */
|
||||
#logoContainer {
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
max-width: 400px;
|
||||
max-height: 400px;
|
||||
width: 80vh;
|
||||
height: 80vh;
|
||||
}
|
||||
|
||||
#smallLogoContainer {
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
width: 64px;
|
||||
height: 64px;
|
||||
}
|
||||
|
||||
.homemade,
|
||||
.fork {
|
||||
.homemade {
|
||||
right: -0.5rem;
|
||||
height: 1.5rem;
|
||||
width: 1.5rem;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.homemade svg,
|
||||
.fork svg {
|
||||
.homemade svg {
|
||||
fill: var(--bs-primary-bg-subtle) !important;
|
||||
}
|
||||
|
||||
|
@ -165,6 +146,10 @@ h5 {
|
|||
fill: var(--bs-primary-bg-subtle);
|
||||
}
|
||||
|
||||
.bg-pride-gradient {
|
||||
background: linear-gradient(45deg, #FF7878, #FFC898, #FFF89A, #CDF2CA, #A2CDCD, #D1E8E4, #CAB8FF);
|
||||
}
|
||||
|
||||
/* Responsive Styles */
|
||||
@media (max-width: 991px) {
|
||||
p.text-center.special-header {
|
||||
|
@ -338,7 +323,3 @@ h5 {
|
|||
.accordion-item[open] .accordion-body {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.accordion-header .bs-icon svg {
|
||||
width: 32px;
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
#logoContainer {
|
||||
background-image: url(../../img/logo-inv_grad.svg);
|
||||
}
|
||||
|
||||
#smallLogoContainer {
|
||||
background-image: url(../../img/logo-inv_grad.svg);
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
.bg-primary-gradient {
|
||||
background: linear-gradient(45deg, #FF7878, #FFC898, #FFF89A, #CDF2CA, #A2CDCD, #D1E8E4, #CAB8FF);
|
||||
}
|
||||
|
||||
#logoContainer {
|
||||
background-image: url(../../img/logo-white.svg);
|
||||
}
|
||||
|
||||
#smallLogoContainer {
|
||||
background-image: url(../../img/logo-inv_grad.svg);
|
||||
}
|
1
assets/dist/icons/money-wavy.svg
vendored
1
assets/dist/icons/money-wavy.svg
vendored
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#000000" viewBox="0 0 256 256"><path d="M244.24,60a8,8,0,0,0-7.75-.4c-42.93,21-73.59,11.16-106,.78-34-10.89-69.25-22.14-117.95,1.64A8,8,0,0,0,8,69.24V189.17a8,8,0,0,0,11.51,7.19c42.93-21,73.59-11.16,106.05-.78,19.24,6.15,38.84,12.42,61,12.42,17.09,0,35.73-3.72,56.91-14.06a8,8,0,0,0,4.49-7.18V66.83A8,8,0,0,0,244.24,60ZM232,181.67c-40.6,18.17-70.25,8.69-101.56-1.32-19.24-6.15-38.84-12.42-61-12.42a122,122,0,0,0-45.4,9V74.33c40.6-18.17,70.25-8.69,101.56,1.32S189.14,96,232,79.09ZM128,96a32,32,0,1,0,32,32A32,32,0,0,0,128,96Zm0,48a16,16,0,1,1,16-16A16,16,0,0,1,128,144ZM56,96v48a8,8,0,0,1-16,0V96a8,8,0,1,1,16,0Zm144,64V112a8,8,0,1,1,16,0v48a8,8,0,1,1-16,0Z"></path></svg>
|
Before Width: | Height: | Size: 740 B |
1
assets/dist/icons/qr-code.svg
vendored
1
assets/dist/icons/qr-code.svg
vendored
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#000000" viewBox="0 0 256 256"><path d="M104,40H56A16,16,0,0,0,40,56v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V56A16,16,0,0,0,104,40Zm0,64H56V56h48v48Zm0,32H56a16,16,0,0,0-16,16v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V152A16,16,0,0,0,104,136Zm0,64H56V152h48v48ZM200,40H152a16,16,0,0,0-16,16v48a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V56A16,16,0,0,0,200,40Zm0,64H152V56h48v48Zm-64,72V144a8,8,0,0,1,16,0v32a8,8,0,0,1-16,0Zm80-16a8,8,0,0,1-8,8H184v40a8,8,0,0,1-8,8H144a8,8,0,0,1,0-16h24V144a8,8,0,0,1,16,0v8h24A8,8,0,0,1,216,160Zm0,32v16a8,8,0,0,1-16,0V192a8,8,0,0,1,16,0Z"></path></svg>
|
Before Width: | Height: | Size: 654 B |
1
assets/dist/icons/train.svg
vendored
1
assets/dist/icons/train.svg
vendored
|
@ -1 +0,0 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#000000" viewBox="0 0 256 256"><path d="M184,24H72A32,32,0,0,0,40,56V184a32,32,0,0,0,32,32h8L65.6,235.2a8,8,0,1,0,12.8,9.6L100,216h56l21.6,28.8a8,8,0,1,0,12.8-9.6L176,216h8a32,32,0,0,0,32-32V56A32,32,0,0,0,184,24ZM56,120V80h64v40Zm80-40h64v40H136ZM72,40H184a16,16,0,0,1,16,16v8H56V56A16,16,0,0,1,72,40ZM184,200H72a16,16,0,0,1-16-16V136H200v48A16,16,0,0,1,184,200ZM96,172a12,12,0,1,1-12-12A12,12,0,0,1,96,172Zm88,0a12,12,0,1,1-12-12A12,12,0,0,1,184,172Z"></path></svg>
|
Before Width: | Height: | Size: 536 B |
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB |
169
base.html
Normal file
169
base.html
Normal file
|
@ -0,0 +1,169 @@
|
|||
<!DOCTYPE html>
|
||||
<html data-bs-theme="light" lang="en">
|
||||
<!-- This file was created as part of the Private.coffee project
|
||||
It is licensed under the MIT license
|
||||
For more information, please visit https://private.coffee -->
|
||||
|
||||
<head>
|
||||
<meta charset="utf8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, shrink-to-fit=no"
|
||||
/>
|
||||
<meta
|
||||
name="description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta
|
||||
name="keywords"
|
||||
content="privacy, digital sovereignty, non-profit, association, privacy-focused"
|
||||
/>
|
||||
<meta name="author" content="Private.coffee" />
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Private.coffee - Empowering Privacy with Open Source"
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://private.coffee/" />
|
||||
<meta
|
||||
property="og:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png"
|
||||
/>
|
||||
<meta property="og:site_name" content="Private.coffee" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:title" content="Private.coffee" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta
|
||||
name="twitter:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png"
|
||||
/>
|
||||
<link rel="icon" type="image/png" href="assets/img/logo_inv_grad.png" />
|
||||
<title> - Private.coffee</title>
|
||||
<link rel="stylesheet" href="assets/dist/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="assets/css/base.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-expand-md py-3 navbar-light" id="mainNav">
|
||||
<div class="container">
|
||||
<div class="row d-lg-flex align-items-lg-center">
|
||||
<div class="col p-0">
|
||||
<a href="/"
|
||||
><img src="assets/img/logo-inv_grad.svg" style="height: 60px"
|
||||
/></a>
|
||||
</div>
|
||||
<div class="col d-flex">
|
||||
<a class="navbar-brand d-flex align-items-center" href="/">
|
||||
<p
|
||||
class="mb-0"
|
||||
style="line-height: 1.2rem; color: var(--bs-tertiary-color)"
|
||||
>
|
||||
<span class="ps-2 fancy-text-primary"
|
||||
><span style="color: rgb(35, 35, 35)"
|
||||
>Private.coffee</span
|
||||
></span
|
||||
><br class="that-br" /><span class="ps-2 slogan"
|
||||
>Empowering Privacy with Open Source</span
|
||||
>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="navbar" id="navcol-1">
|
||||
<ul class="navbar-nav mx-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/index.html">Home</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://status.private.coffee/"
|
||||
>Status</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
<a
|
||||
class="btn btn-primary shadow navbar-btn"
|
||||
role="button"
|
||||
href="/membership.html"
|
||||
>JOIN & SUPPORT</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="alert alert-warning text-center" role="alert">
|
||||
This is a development version of the Private.coffee website. For the live
|
||||
version, please visit
|
||||
<a href="https://private.coffee" class="alert-link">https://private.coffee</a
|
||||
>.
|
||||
</div>
|
||||
|
||||
<footer class="bg-primary-gradient">
|
||||
<div class="container py-4 py-lg-5">
|
||||
<div class="row justify-content-center">
|
||||
<div
|
||||
class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column"
|
||||
>
|
||||
<h3 class="fs-6 fw-bold">Legal Stuff</h3>
|
||||
<ul class="list-unstyled">
|
||||
<li><a href="/legal.html">Legal Notice</a></li>
|
||||
<li><a href="/privacy.html">Privacy Notice</a></li>
|
||||
<li><a href="/terms.html">Terms of Service</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div
|
||||
class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column"
|
||||
></div>
|
||||
<div
|
||||
class="col-lg-3 text-center text-lg-start d-flex flex-column align-items-center order-first align-items-lg-start order-lg-last"
|
||||
>
|
||||
<div class="fw-bold d-flex align-items-center mb-2">
|
||||
<span
|
||||
class="bs-icon-sm bs-icon-circle bs-icon-primary d-flex justify-content-center align-items-center bs-icon me-2"
|
||||
><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#000000" viewBox="0 0 256 256"><path d="M80,56V24a8,8,0,0,1,16,0V56a8,8,0,0,1-16,0Zm40,8a8,8,0,0,0,8-8V24a8,8,0,0,0-16,0V56A8,8,0,0,0,120,64Zm32,0a8,8,0,0,0,8-8V24a8,8,0,0,0-16,0V56A8,8,0,0,0,152,64Zm96,56v8a40,40,0,0,1-37.51,39.91,96.59,96.59,0,0,1-27,40.09H208a8,8,0,0,1,0,16H32a8,8,0,0,1,0-16H56.54A96.3,96.3,0,0,1,24,136V88a8,8,0,0,1,8-8H208A40,40,0,0,1,248,120ZM200,96H40v40a80.27,80.27,0,0,0,45.12,72h69.76A80.27,80.27,0,0,0,200,136Zm32,24a24,24,0,0,0-16-22.62V136a95.78,95.78,0,0,1-1.2,15A24,24,0,0,0,232,128Z"></path></svg></span
|
||||
><span>Private.coffee</span>
|
||||
</div>
|
||||
<p class="text-muted">
|
||||
Private.coffee is a privacy-focused non-profit association,
|
||||
dedicated to supporting privacy and digital sovereignty.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div
|
||||
class="text-muted d-flex justify-content-between align-items-center pt-3"
|
||||
>
|
||||
<p class="mb-0">Made with ❤️ and ☕ by Private.coffee</p>
|
||||
<p class="mb-0">
|
||||
<a
|
||||
href="https://git.private.coffee/privatecoffee/privatecoffee-website"
|
||||
><img
|
||||
src="https://shields.private.coffee/gitea/last-commit/privatecoffee/privatecoffee-website?gitea_url=https://git.private.coffee&logo=forgejo"
|
||||
/></a>
|
||||
<a href="https://pride.coffee"><svg xmlns="http://www.w3.org/2000/svg" width="135" height="20" role="img" aria-label="LGBTIQ+">
|
||||
<!-- This file was created as part of the Private.coffee project
|
||||
It is licensed under the MIT license
|
||||
For more information, please visit https://private.coffee -->
|
||||
<title>LGBTIQ+</title>
|
||||
<rect rx="3" width="135" height="20" fill="#555"></rect>
|
||||
<rect x="53" width="82" height="20" fill="#e05d44"></rect>
|
||||
<rect x="66.5" width="68.5" height="20" fill="#fecc00"></rect>
|
||||
<rect x="80" width="55" height="20" fill="#61c354"></rect>
|
||||
<rect x="93.5" width="41.5" height="20" fill="#007ec6"></rect>
|
||||
<rect x="107" width="28" height="20" fill="#744ca1"></rect>
|
||||
<rect x="120.5" width="14.5" height="20" rx="3" ry="3" fill="#8b00ff"></rect>
|
||||
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="8">
|
||||
<text x="27" y="15" fill="#fff">LGBTIQ+</text>
|
||||
</g>
|
||||
</svg></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
37
bridges.html
Normal file
37
bridges.html
Normal file
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Bridges and bots</title>
|
||||
</head>
|
||||
<body>
|
||||
<div style="font-family: Arial, sans-serif; background-color: #f2f2f2; color: #333; line-height: 1.6; padding: 20px; max-width: 600px; margin: auto;">
|
||||
<h2 style="color: #333;">Bridges and bots</h2>
|
||||
<p>These are the bridges and bots available to Private.coffee Matrix users:</p>
|
||||
<ul style="list-style: none; padding: 0;">
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://matrix.pcof.fi/#/@telegrambot:private.coffee">Telegram</a> - @telegrambot:private.coffee</li>
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://matrix.pcof.fi/#/@whatsappbot:private.coffee">WhatsApp</a> - @whatsappbot:private.coffee</li>
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://matrix.pcof.fi/#/@signalbot:private.coffee">Signal</a> - @signalbot:private.coffee</li>
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://matrix.pcof.fi/#/@discordbot:private.coffee">Discord</a> - @discordbot:private.coffee</li>
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://matrix.pcof.fi/#/@slackbot:private.coffee">Slack</a> - @slackbot:private.coffee</li>
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://matrix.pcof.fi/#/@linkedinbot:private.coffee">LinkedIn</a> - @linkedinbot:private.coffee</li>
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://matrix.pcof.fi/#/@gptbot:private.coffee">GPT-4o</a> - @gptbot:private.coffee</li>
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://matrix.pcof.fi/#/@rssbot:private.coffee">RSS/Atom feeds</a> - @rssbot:private.coffee</li>
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://matrix.pcof.fi/#/@instagrambot:private.coffee">Instagram</a> - @instagrambot:private.coffee</li>
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://matrix.pcof.fi/#/@facebookbot:private.coffee">Facebook</a> - @facebookbot:private.coffee</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,41 +0,0 @@
|
|||
private.coffee www.private.coffee {
|
||||
header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
|
||||
|
||||
header Access-Control-Allow-Origin https://element.private.coffee
|
||||
header Access-Control-Allow-Methods "GET"
|
||||
header Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range"
|
||||
header Access-Control-Expose-Headers "Content-Length,Content-Range"
|
||||
|
||||
@matrix {
|
||||
path matrix /.well-known/matrix/*
|
||||
}
|
||||
|
||||
@assets {
|
||||
path assets /assets/*
|
||||
}
|
||||
|
||||
@security {
|
||||
path security-well-known /.well-known/security.txt
|
||||
path security /security.txt
|
||||
}
|
||||
|
||||
handle @matrix {
|
||||
header /.well-known/matrix/* Content-Type application/json
|
||||
header /.well-known/matrix/* Access-Control-Allow-Origin *
|
||||
respond /.well-known/matrix/server `{"m.server": "matrix.private.coffee:443"}`
|
||||
respond /.well-known/matrix/client `{"m.homeserver":{"base_url":"https://matrix.private.coffee"}}`
|
||||
}
|
||||
|
||||
handle @assets {
|
||||
file_server
|
||||
root * /srv/private.coffee
|
||||
}
|
||||
|
||||
handle @security {
|
||||
redir https://security.private.coffee/security.txt
|
||||
}
|
||||
|
||||
handle {
|
||||
reverse_proxy * unix//var/run/uwsgi/privatecoffee.sock
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
[uwsgi]
|
||||
module = main:app
|
||||
|
||||
uid = %n
|
||||
gid = %n
|
||||
master = true
|
||||
processes = 5
|
||||
|
||||
plugins = python3
|
||||
virtualenv = /srv/%n/venv/
|
||||
chdir = /srv/%n/
|
||||
|
||||
env = PRIVATECOFFEE_DEV=true
|
||||
|
||||
http-socket = /var/run/uwsgi/%n.sock
|
||||
chown-socket = caddy
|
|
@ -1,14 +0,0 @@
|
|||
[uwsgi]
|
||||
module = main:app
|
||||
|
||||
uid = %n
|
||||
gid = %n
|
||||
master = true
|
||||
processes = 5
|
||||
|
||||
plugins = python3
|
||||
virtualenv = /srv/%n/venv/
|
||||
chdir = /srv/%n/
|
||||
|
||||
http-socket = /var/run/uwsgi/%n.sock
|
||||
chown-socket = caddy
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"2024": {
|
||||
"04": {
|
||||
"4": {
|
||||
"Membership Fees": {
|
||||
"EUR": 365
|
||||
},
|
||||
|
@ -12,7 +12,7 @@
|
|||
"Notes": "Administrative fee for the formation of the association"
|
||||
}
|
||||
},
|
||||
"05": {
|
||||
"5": {
|
||||
"Membership Fees": {
|
||||
"EUR": 390
|
||||
},
|
||||
|
@ -25,7 +25,7 @@
|
|||
"Notes": "Includes setup costs and two monthly payments for new server"
|
||||
}
|
||||
},
|
||||
"06": {
|
||||
"6": {
|
||||
"Membership Fees": {
|
||||
"EUR": 382.42
|
||||
},
|
||||
|
@ -36,7 +36,7 @@
|
|||
"EUR": -49.05
|
||||
}
|
||||
},
|
||||
"07": {
|
||||
"7": {
|
||||
"Membership Fees": {
|
||||
"EUR": 422.42
|
||||
},
|
||||
|
@ -47,28 +47,12 @@
|
|||
"EUR": -264.99
|
||||
}
|
||||
},
|
||||
"08": {
|
||||
"8": {
|
||||
"Membership Fees": {
|
||||
"EUR": 402.42
|
||||
"EUR": 325
|
||||
},
|
||||
"Server Costs": {
|
||||
"EUR": -416.47
|
||||
}
|
||||
},
|
||||
"09": {
|
||||
"Membership Fees": {
|
||||
"EUR": 468.11
|
||||
},
|
||||
"Server Costs": {
|
||||
"EUR": -243.46
|
||||
},
|
||||
"Bank Fees": {
|
||||
"EUR": -53.32
|
||||
}
|
||||
},
|
||||
"10": {
|
||||
"Membership Fees": {
|
||||
"EUR": 30.23
|
||||
"EUR": -77.28
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,10 +4,9 @@
|
|||
"name": "Matrix",
|
||||
"url": "https://element.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "decentralized messaging",
|
||||
"short_description": "Matrix is an open network for secure, decentralized communication.",
|
||||
"long_description": "Private.coffee runs a Matrix server. You can use it to chat with other people at Private.coffee or around the world. Public registrations are currently disabled, send an email to support@private.coffee to request an account.",
|
||||
"long_description": "Private.coffee runs a Matrix server. You can use it to chat with other people at Private.coffee or around the world. Use it with a client of your choice, or use our web clients.",
|
||||
"status": "OK",
|
||||
"links": [
|
||||
{
|
||||
|
@ -33,7 +32,6 @@
|
|||
"name": "CryptPad",
|
||||
"url": "https://cryptpad.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "collaborative document editing",
|
||||
"short_description": "Private, encrypted, real-time collaborative editor.",
|
||||
"long_description": "CryptPad is a private, encrypted, zero-knowledge, realtime collaborative editor, similar to Google Docs and Office 365.",
|
||||
|
@ -48,11 +46,38 @@
|
|||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "Piped / Invidious",
|
||||
"url": "https://piped.private.coffee",
|
||||
"homemade": false,
|
||||
"tiny_description": "tracking-free YouTube",
|
||||
"short_description": "Watch YouTube videos without Google tracking.",
|
||||
"long_description": "Piped and Invidious are alternative front-ends to YouTube. Unfortunately, they are under attack from Google, and may be slow or unavailable at times.",
|
||||
"status": "NOK",
|
||||
"links": [
|
||||
{
|
||||
"name": "Go to Piped",
|
||||
"url": "https://piped.private.coffee"
|
||||
},
|
||||
{
|
||||
"name": "Go to Invidious",
|
||||
"url": "https://invidious.private.coffee",
|
||||
"alternatives": [
|
||||
{
|
||||
"name": "Tor",
|
||||
"url": "http://invidious.coffee2m3bjsrrqqycx6ghkxrnejl2q6nl7pjw2j4clchjj6uk5zozad.onion"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"icon": "video",
|
||||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "Transfer.coffee",
|
||||
"url": "https://transfer.coffee",
|
||||
"homemade": "https://git.private.coffee/PrivateCoffee/transfer.coffee",
|
||||
"fork": false,
|
||||
"homemade": true,
|
||||
"tiny_description": "secure direct file transfer",
|
||||
"short_description": "Transfer files securely using peer-to-peer connections.",
|
||||
"long_description": "Transfer.coffee allows you to transfer files securely using peer-to-peer connections. Your files are never stored on our servers.",
|
||||
|
@ -70,8 +95,7 @@
|
|||
{
|
||||
"name": "MyIP.Coffee",
|
||||
"url": "https://myip.coffee",
|
||||
"homemade": "https://git.private.coffee/PrivateCoffee/myip.coffee",
|
||||
"fork": false,
|
||||
"homemade": true,
|
||||
"tiny_description": "check your IP address",
|
||||
"short_description": "Check your IP address.",
|
||||
"long_description": "MyIP.Coffee allows you to check your current IPv4 and IPv6 addresses.",
|
||||
|
@ -90,7 +114,6 @@
|
|||
"name": "Overleaf",
|
||||
"url": "https://overleaf.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "collaborative LaTeX editor",
|
||||
"short_description": "Overleaf is an online LaTeX editor for writing and sharing documents.",
|
||||
"long_description": "Overleaf is an online LaTeX editor for writing and sharing documents. It allows you to write documents in LaTeX, and to collaborate with others.",
|
||||
|
@ -109,7 +132,6 @@
|
|||
"name": "Mastodon",
|
||||
"url": "https://cuddly.space",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "decentralized social network",
|
||||
"short_description": "Mastodon is a decentralized social network.",
|
||||
"long_description": "Mastodon is a decentralized social network. You can use it to post short messages, follow other people, and more. Registrations are open to everyone on Cuddly Space.",
|
||||
|
@ -132,7 +154,6 @@
|
|||
"name": "Forgejo",
|
||||
"url": "https://git.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "self-hosted Git forge",
|
||||
"short_description": "Forgejo is our in-house Git forge.",
|
||||
"long_description": "Forgejo is our in-house Git forge. You can use it to host your Git repositories, and to collaborate with others.",
|
||||
|
@ -151,7 +172,6 @@
|
|||
"name": "BigBlueButton",
|
||||
"url": "https://bbb.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "video conferencing",
|
||||
"short_description": "BigBlueButton is an open-source video conferencing system.",
|
||||
"long_description": "BigBlueButton is an open-source video conferencing system. You can use it to hold video conferences, webinars, and more.",
|
||||
|
@ -170,7 +190,6 @@
|
|||
"name": "HedgeDoc",
|
||||
"url": "https://hedgedoc.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "collaborative markdown editor",
|
||||
"short_description": "HedgeDoc is an open-source collaborative markdown editor.",
|
||||
"long_description": "HedgeDoc is an open-source collaborative markdown editor. You can use it to write and edit documents in markdown, and to collaborate with others.",
|
||||
|
@ -189,7 +208,6 @@
|
|||
"name": "FacilMap",
|
||||
"url": "https://facilmap.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "open-source map editor",
|
||||
"short_description": "FacilMap is an open-source map editor.",
|
||||
"long_description": "FacilMap is an open-source map editor. You can use it to create and edit maps, and to share them with others.",
|
||||
|
@ -208,7 +226,6 @@
|
|||
"name": "OTS - One Time Secrets",
|
||||
"url": "https://ots.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "share secrets securely",
|
||||
"short_description": "OTS is a service for sharing secrets securely.",
|
||||
"long_description": "OTS is a service for sharing secrets securely. You can use it to share passwords, API keys, and other sensitive information.",
|
||||
|
@ -223,30 +240,10 @@
|
|||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "QRMaker",
|
||||
"url": "https://qrmaker.private.coffee",
|
||||
"homemade": "https://git.private.coffee/PrivateCoffee/QRMaker",
|
||||
"fork": false,
|
||||
"tiny_description": "QR code generator",
|
||||
"short_description": "QRMaker is a service for generating QR codes.",
|
||||
"long_description": "QRMaker is a service for generating QR codes. You can use it to create QR codes for URLs, text, and more, directly in your browser.",
|
||||
"status": "OK",
|
||||
"links": [
|
||||
{
|
||||
"name": "Go to QRMaker",
|
||||
"url": "https://qrmaker.private.coffee"
|
||||
}
|
||||
],
|
||||
"icon": "qr-code",
|
||||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "FreshRSS",
|
||||
"url": "https://freshrss.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "RSS feed reader",
|
||||
"short_description": "FreshRSS is a RSS feed reader.",
|
||||
"long_description": "FreshRSS is a RSS feed reader. You can use it to subscribe to RSS feeds and read the latest articles from your favorite websites.",
|
||||
|
@ -265,7 +262,6 @@
|
|||
"name": "redlib",
|
||||
"url": "https://redlib.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "tracking-free Reddit",
|
||||
"short_description": "redlib is a privacy-friendly alternative front-end to Reddit.",
|
||||
"long_description": "redlib is a privacy-friendly alternative front-end to Reddit. It allows you to browse Reddit without being tracked.",
|
||||
|
@ -280,49 +276,10 @@
|
|||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "CyberChef",
|
||||
"url": "https://cyberchef.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "Web app for encryption and encoding",
|
||||
"short_description": "CyberChef is a web app for encryption, encoding, compression, and data analysis.",
|
||||
"long_description": "CyberChef is a web app for encryption, encoding, compression, and data analysis. It allows you to perform a wide range of operations on your data within your browser.",
|
||||
"status": "OK",
|
||||
"links": [
|
||||
{
|
||||
"name": "Go to CyberChef",
|
||||
"url": "https://cyberchef.private.coffee"
|
||||
}
|
||||
],
|
||||
"icon": "lock-key",
|
||||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "Travelynx",
|
||||
"url": "https://traveling.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "rail journey logger (German)",
|
||||
"short_description": "Travelynx is a service for logging your rail journeys. (German)",
|
||||
"long_description": "Travelynx is a service for logging your rail journeys, primarily for Germany and surrounding Europe. You can use it to keep track of the trains you've taken, and to view statistics about your trips.",
|
||||
"status": "OK",
|
||||
"links": [
|
||||
{
|
||||
"name": "Go to Travelynx",
|
||||
"url": "https://traveling.coffee"
|
||||
}
|
||||
],
|
||||
"icon": "train",
|
||||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "AllTube",
|
||||
"url": "https://alltube.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": "https://git.private.coffee/PrivateCoffee/alltube",
|
||||
"tiny_description": "universal video downloader",
|
||||
"short_description": "Download videos from YouTube, Vimeo, and more.",
|
||||
"long_description": "AllTube is a video downloader powered by yt-dlp. It allows you to download videos from YouTube, Vimeo, and many other sites. You can also stream the download through our server for extra privacy.",
|
||||
|
@ -337,55 +294,10 @@
|
|||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "Invidious",
|
||||
"url": "https://invidious.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": "https://git.private.coffee/PrivateCoffee/invidious",
|
||||
"tiny_description": "tracking-free YouTube",
|
||||
"short_description": "Watch YouTube videos without Google tracking.",
|
||||
"long_description": "Invidious is an alternative front-end to YouTube. Unfortunately, it is under attack from Google, and is mostly unusable at the moment.",
|
||||
"status": "NOK",
|
||||
"links": [
|
||||
{
|
||||
"name": "Go to Invidious",
|
||||
"url": "https://invidious.private.coffee",
|
||||
"alternatives": [
|
||||
{
|
||||
"name": "Tor",
|
||||
"url": "http://invidious.coffee2m3bjsrrqqycx6ghkxrnejl2q6nl7pjw2j4clchjj6uk5zozad.onion"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"icon": "video",
|
||||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "Piped",
|
||||
"url": "https://piped.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "tracking-free YouTube",
|
||||
"short_description": "Watch YouTube videos without Google tracking.",
|
||||
"long_description": "Piped is an alternative front-end to YouTube. Unfortunately, it is under attack from Google, and is mostly unusable at the moment.",
|
||||
"status": "NOK",
|
||||
"links": [
|
||||
{
|
||||
"name": "Go to Piped",
|
||||
"url": "https://piped.private.coffee"
|
||||
}
|
||||
],
|
||||
"icon": "video",
|
||||
"exclude_from_index": true,
|
||||
"exclude_from_simple": true
|
||||
},
|
||||
{
|
||||
"name": "Structables",
|
||||
"url": "https://structables.private.coffee",
|
||||
"homemade": "https://git.private.coffee/PrivateCoffee/structables",
|
||||
"fork": false,
|
||||
"homemade": true,
|
||||
"tiny_description": "tracking-free Instructables",
|
||||
"short_description": "Browse Instructables without being tracked.",
|
||||
"long_description": "Structables allows you to browse Instructables without being tracked.",
|
||||
|
@ -404,7 +316,6 @@
|
|||
"name": "Quetre",
|
||||
"url": "https://quetre.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "tracking-free Quora",
|
||||
"short_description": "Quetre is a privacy-friendly alternative front-end to Quora.",
|
||||
"long_description": "Quetre is a privacy-friendly alternative front-end to Quora. It allows you to browse Quora without being tracked or having to log in.",
|
||||
|
@ -428,8 +339,7 @@
|
|||
{
|
||||
"name": "Wikimore",
|
||||
"url": "https://wikimore.private.coffee",
|
||||
"homemade": "https://git.private.coffee/PrivateCoffee/wikimore",
|
||||
"fork": false,
|
||||
"homemade": true,
|
||||
"tiny_description": "censorship-free Wikipedia",
|
||||
"short_description": "Wikimore is a privacy-friendly alternative front-end to Wikimedia wikis.",
|
||||
"long_description": "Wikimore is a privacy-friendly alternative front-end to Wikipedia and other Wikimedia wikis.",
|
||||
|
@ -454,7 +364,6 @@
|
|||
"name": "Priviblur",
|
||||
"url": "https://priviblur.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "tracking-free Tumblr",
|
||||
"short_description": "Priviblur is a privacy-friendly alternative front-end to Tumblr.",
|
||||
"long_description": "Priviblur is a privacy-friendly alternative front-end to Tumblr. It allows you to browse Tumblr without being tracked.",
|
||||
|
@ -479,7 +388,6 @@
|
|||
"name": "BiblioReads",
|
||||
"url": "https://biblioreads.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "tracking-free Goodreads",
|
||||
"short_description": "BiblioReads is a privacy-friendly alternative front-end to Goodreads.",
|
||||
"long_description": "BiblioReads is a privacy-friendly alternative front-end to Goodreads. It allows you to browse Goodreads without being tracked.",
|
||||
|
@ -494,49 +402,10 @@
|
|||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "Small",
|
||||
"url": "https://small.private.coffee",
|
||||
"homemade": "https://git.private.coffee/PrivateCoffee/small",
|
||||
"fork": false,
|
||||
"tiny_description": "tracking-free Medium",
|
||||
"short_description": "Small is a privacy-friendly alternative front-end to Medium.",
|
||||
"long_description": "Small is a privacy-friendly alternative front-end to Medium. It allows you to browse Medium without being tracked.",
|
||||
"status": "OK",
|
||||
"links": [
|
||||
{
|
||||
"name": "Go to Small",
|
||||
"url": "https://small.private.coffee"
|
||||
}
|
||||
],
|
||||
"icon": "pencil-ruler",
|
||||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "Scribe",
|
||||
"url": "https://scribe.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "tracking-free Medium",
|
||||
"short_description": "Scribe is a privacy-friendly alternative front-end to Medium.",
|
||||
"long_description": "Scribe is a privacy-friendly alternative front-end to Medium. It allows you to browse Medium without being tracked.",
|
||||
"status": "OK",
|
||||
"links": [
|
||||
{
|
||||
"name": "Go to Scribe",
|
||||
"url": "https://scribe.private.coffee"
|
||||
}
|
||||
],
|
||||
"icon": "pencil-ruler",
|
||||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "LibreTranslate",
|
||||
"url": "https://translate.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "self-hosted translation",
|
||||
"short_description": "LibreTranslate is a self-hosted translation service powered by Argos Translate.",
|
||||
"long_description": "LibreTranslate is a self-hosted translation service powered by Argos Translate. It allows you to translate text between many languages.",
|
||||
|
@ -555,7 +424,6 @@
|
|||
"name": "wishthis",
|
||||
"url": "https://wishthis.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "create and share wishlists",
|
||||
"short_description": "wishthis is a service for creating and sharing wishlists.",
|
||||
"long_description": "wishthis is a service for creating wishlists. You can use it to create wishlists for yourself, or to share them with others.",
|
||||
|
@ -574,7 +442,6 @@
|
|||
"name": "BreezeWiki",
|
||||
"url": "https://breezewiki.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "tracking-free Fandom",
|
||||
"short_description": "BreezeWiki is a privacy-friendly alternative front-end to Fandom.",
|
||||
"long_description": "BreezeWiki is a privacy-friendly alternative front-end to Fandom. It allows you to browse Fandom wikis without ads or tracking.",
|
||||
|
@ -595,30 +462,10 @@
|
|||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "Ducks for Ducks",
|
||||
"url": "https://ducksforducks.private.coffee",
|
||||
"homemade": "https://git.private.coffee/PrivateCoffee/ducksforducks",
|
||||
"fork": false,
|
||||
"tiny_description": "a private front-end to Geeks for Geeks",
|
||||
"short_description": "Ducks for Ducks is a privacy-friendly alternative front-end to Geeks for Geeks.",
|
||||
"long_description": "Ducks for Ducks is a privacy-friendly alternative front-end to Geeks for Geeks. It allows you to browse Geeks for Geeks without ads or tracking.",
|
||||
"status": "OK",
|
||||
"links": [
|
||||
{
|
||||
"name": "Go to Ducks for Ducks",
|
||||
"url": "https://ducksforducks.private.coffee"
|
||||
}
|
||||
],
|
||||
"icon": "books",
|
||||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "NocoDB",
|
||||
"url": "https://nocodb.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "Airtable alternative",
|
||||
"short_description": "NocoDB is a self-hosted alternative to Airtable.",
|
||||
"long_description": "NocoDB is a self-hosted alternative to Airtable. It allows you to create databases and tables, and to view and edit them in a spreadsheet-like interface. (Note: If you are unable to create tables upon registration, simply wait a minute or two, log out and then log in again. Note that your email address will be visible to all registered users!)",
|
||||
|
@ -637,7 +484,6 @@
|
|||
"name": "Penpot",
|
||||
"url": "https://penpot.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "open-source design platform",
|
||||
"short_description": "Penpot is an open-source design and prototyping platform.",
|
||||
"long_description": "Penpot is an open-source design and prototyping platform. It allows you to create designs and prototypes, and to collaborate with others.",
|
||||
|
@ -656,7 +502,6 @@
|
|||
"name": "tldraw",
|
||||
"url": "https://tldraw.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "collaborative whiteboard",
|
||||
"short_description": "tldraw is a collaborative whiteboard.",
|
||||
"long_description": "tldraw is a collaborative whiteboard. You can use it to draw and write with others in real-time.",
|
||||
|
@ -675,7 +520,6 @@
|
|||
"name": "YOURLS",
|
||||
"url": "https://pcof.fi",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "URL shortener",
|
||||
"short_description": "URL shortener for creating handy links.",
|
||||
"long_description": "Use our URL shortener at pcof.fi to turn long, complicated URLs into something more handy.",
|
||||
|
@ -694,7 +538,6 @@
|
|||
"name": "Rallly",
|
||||
"url": "https://rallly.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "collaborative scheduling (Doodle)",
|
||||
"short_description": "Rallly is a free collaborative scheduling service for voting and polls.",
|
||||
"long_description": "Rallly is a free collaborative scheduling service. It allows you to create polls and vote on them, similar to Doodle. Pro features are enabled for free after signing in.",
|
||||
|
@ -713,7 +556,6 @@
|
|||
"name": "LibreY",
|
||||
"url": "https://librey.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "search engine",
|
||||
"short_description": "Privacy-friendly metasearch engine.",
|
||||
"long_description": "LibreY is an open-source, privacy-friendly metasearch engine. It allows you to search for web, image, video, torrents, and more, and it can also search onion sites.",
|
||||
|
@ -742,7 +584,6 @@
|
|||
"name": "GotHub",
|
||||
"url": "https://gothub.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "tracking-free GitHub",
|
||||
"short_description": "Alternative GitHub interface that respects privacy.",
|
||||
"long_description": "Gothub is an alternative GitHub interface that respects your privacy. It is currently in alpha, but you can browse and download repositories, and you can also clone them using git+https (although the text on the main page would disagree).",
|
||||
|
@ -761,7 +602,6 @@
|
|||
"name": "Binternet",
|
||||
"url": "https://binternet.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "tracking-free Pinterest",
|
||||
"short_description": "Binternet is a privacy-friendly alternative front-end to Pinterest.",
|
||||
"long_description": "Binternet is a privacy-friendly alternative front-end to Pinterest. It allows you to browse Pinterest without being tracked.",
|
||||
|
@ -776,49 +616,10 @@
|
|||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "Moner.ooo",
|
||||
"url": "https://monerooo.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": "https://git.private.coffee/kumi/moner.ooo",
|
||||
"tiny_description": "Monero/fiat exchange rates",
|
||||
"short_description": "Moner.ooo is a service for checking Monero/fiat exchange rates.",
|
||||
"long_description": "Moner.ooo is a service for checking Monero/fiat exchange rates. It allows you to see the current exchange rates for Monero in various fiat currencies.",
|
||||
"status": "OK",
|
||||
"links": [
|
||||
{
|
||||
"name": "Go to Moner.ooo",
|
||||
"url": "https://monerooo.private.coffee"
|
||||
}
|
||||
],
|
||||
"icon": "money-wavy",
|
||||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "httpbin",
|
||||
"url": "https://httpbin.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "HTTP request testing service",
|
||||
"short_description": "httpbin is a service for testing HTTP requests.",
|
||||
"long_description": "httpbin is a service for testing HTTP requests. You can use it to see what your browser sends to a server, and to test various HTTP methods.",
|
||||
"status": "OK",
|
||||
"links": [
|
||||
{
|
||||
"name": "Go to httpbin",
|
||||
"url": "https://httpbin.private.coffee"
|
||||
}
|
||||
],
|
||||
"icon": "network",
|
||||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "Overpass",
|
||||
"url": "https://overpass.private.coffee",
|
||||
"homemade": false,
|
||||
"fork": false,
|
||||
"tiny_description": "OpenStreetMap API",
|
||||
"short_description": "Overpass is an API for OpenStreetMap.",
|
||||
"long_description": "Overpass is an API for OpenStreetMap. You can use it to query OpenStreetMap data, and to get the results in various formats.",
|
||||
|
@ -833,30 +634,10 @@
|
|||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "GoogleDonts",
|
||||
"url": "https://googledonts.private.coffee",
|
||||
"homemade": "https://git.private.coffee/PrivateCoffee/googledonts",
|
||||
"fork": false,
|
||||
"tiny_description": "privacy-friendly Google Fonts proxy",
|
||||
"short_description": "GoogleDonts is a privacy-friendly proxy to Google Fonts.",
|
||||
"long_description": "GoogleDonts is a privacy-friendly proxy to Google Fonts. It allows you to use Google Fonts without being tracked by Google.",
|
||||
"status": "OK",
|
||||
"links": [
|
||||
{
|
||||
"name": "Go to GoogleDonts",
|
||||
"url": "https://googledonts.private.coffee"
|
||||
}
|
||||
],
|
||||
"icon": "hard-hat",
|
||||
"exclude_from_index": false,
|
||||
"exclude_from_simple": false
|
||||
},
|
||||
{
|
||||
"name": "nocdnbs",
|
||||
"url": "https://nocdnbs.private.coffee",
|
||||
"homemade": "https://git.private.coffee/PrivateCoffee/nocdnbs",
|
||||
"fork": false,
|
||||
"homemade": true,
|
||||
"tiny_description": "privacy-friendly cdnjs proxy",
|
||||
"short_description": "nocdnbs is a privacy-friendly proxy to cdnjs.cloudflare.com",
|
||||
"long_description": "nocdnbs is a privacy-friendly proxy to cdnjs.cloudflare.com. It allows you to use the cdnjs.cloudflare.com library without being tracked by Cloudflare.",
|
||||
|
@ -874,8 +655,7 @@
|
|||
{
|
||||
"name": "nobsdelivr",
|
||||
"url": "https://nobsdelivr.private.coffee",
|
||||
"homemade": "https://git.private.coffee/PrivateCoffee/nobsdelivr",
|
||||
"fork": false,
|
||||
"homemade": true,
|
||||
"tiny_description": "privacy-friendly jsDelivr proxy",
|
||||
"short_description": "nobsdelivr is a privacy-friendly proxy to cdn.jsdelivr.net",
|
||||
"long_description": "nobsdelivr is a privacy-friendly proxy to cdn.jsdelivr.net. It allows you to use the cdn.jsdelivr.net library without being tracked by jsDelivr.",
|
||||
|
|
|
@ -1,249 +0,0 @@
|
|||
from decimal import Decimal
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
def get_latest_month(data, allow_current=False):
|
||||
years = sorted(data.keys())
|
||||
latest_year = years[-1]
|
||||
months = sorted(data[latest_year].keys())
|
||||
latest_month = months[-1]
|
||||
|
||||
if (
|
||||
not allow_current
|
||||
and latest_year == str(datetime.now().year)
|
||||
and latest_month == str(datetime.now().month)
|
||||
):
|
||||
try:
|
||||
latest_month = months[-2]
|
||||
except IndexError:
|
||||
latest_year = years[-2]
|
||||
latest_month = months[-1]
|
||||
|
||||
return int(latest_month), int(latest_year)
|
||||
|
||||
|
||||
def get_transparency_data(data, year=None, month=None, allow_current=False):
|
||||
if year is None:
|
||||
year = max(data.keys())
|
||||
|
||||
if month is None:
|
||||
month = max(data[year].keys())
|
||||
|
||||
year = str(year)
|
||||
month = str(month).zfill(2)
|
||||
|
||||
if (
|
||||
not allow_current
|
||||
and year == str(datetime.now().year)
|
||||
and month == str(datetime.now().month).zfill(2)
|
||||
):
|
||||
try:
|
||||
month = max([m for m in data[year].keys() if m != str(datetime.now().month)])
|
||||
except ValueError:
|
||||
year = str(int(year) - 1)
|
||||
month = max(data[year].keys())
|
||||
|
||||
assert year in data, f"Year {year} not found in data"
|
||||
assert month in data[year], f"Month {month}-{year} not found in data"
|
||||
|
||||
# Initialize balances
|
||||
balances = {}
|
||||
incomes = {}
|
||||
expenses = {}
|
||||
notes = {}
|
||||
|
||||
start_balance = {}
|
||||
end_balance = {}
|
||||
|
||||
for y in sorted(data.keys()):
|
||||
if int(y) > int(year):
|
||||
break
|
||||
|
||||
for m in sorted(data[y].keys()):
|
||||
if int(y) == int(year) and int(m) > int(month):
|
||||
break
|
||||
|
||||
# If the month is the one we are interested in, capture the start balance
|
||||
if int(y) == int(year) and int(m) == int(month):
|
||||
start_balance = {
|
||||
k: Decimal(v) for k, v in balances.items() if k != "Notes"
|
||||
}
|
||||
|
||||
for category in data[y][m]:
|
||||
for currency, amount in data[y][m][category].items():
|
||||
if currency == "Notes":
|
||||
if int(y) == int(year) and int(m) == int(month):
|
||||
notes[category] = amount
|
||||
else:
|
||||
if currency not in balances:
|
||||
balances[currency] = Decimal(0)
|
||||
balances[currency] += Decimal(str(amount))
|
||||
|
||||
# Track incomes and expenses
|
||||
if int(y) == int(year) and int(m) == int(month):
|
||||
if Decimal(str(amount)) > 0:
|
||||
if category not in incomes:
|
||||
incomes[category] = {}
|
||||
if currency not in incomes[category]:
|
||||
incomes[category][currency] = Decimal(0)
|
||||
incomes[category][currency] += Decimal(str(amount))
|
||||
else:
|
||||
if category not in expenses:
|
||||
expenses[category] = {}
|
||||
if currency not in expenses[category]:
|
||||
expenses[category][currency] = Decimal(0)
|
||||
expenses[category][currency] += Decimal(str(amount))
|
||||
|
||||
# If the month is the one we are interested in, capture the end balance
|
||||
if int(y) == int(year) and int(m) == int(month):
|
||||
end_balance = {
|
||||
k: Decimal(v) for k, v in balances.items() if k != "Notes"
|
||||
}
|
||||
|
||||
# Calculate accumulated sums of incomes and expenses
|
||||
accumulated_incomes = {
|
||||
currency: sum(incomes[cat].get(currency, Decimal(0)) for cat in incomes)
|
||||
for currency in balances
|
||||
if currency != "Notes"
|
||||
}
|
||||
accumulated_expenses = {
|
||||
currency: sum(expenses[cat].get(currency, Decimal(0)) for cat in expenses)
|
||||
for currency in balances
|
||||
if currency != "Notes"
|
||||
}
|
||||
|
||||
return {
|
||||
"start_balance": start_balance,
|
||||
"end_balance": end_balance,
|
||||
"incomes": incomes,
|
||||
"expenses": expenses,
|
||||
"accumulated_incomes": accumulated_incomes,
|
||||
"accumulated_expenses": accumulated_expenses,
|
||||
"notes": notes,
|
||||
}
|
||||
|
||||
|
||||
def generate_transparency_table(result, currencies=None):
|
||||
def extract_currencies(data):
|
||||
return ["EUR"] + (
|
||||
list(
|
||||
set(
|
||||
list(data["start_balance"].keys())
|
||||
+ list(data["end_balance"].keys())
|
||||
+ list(data["accumulated_incomes"].keys())
|
||||
+ list(data["accumulated_expenses"].keys())
|
||||
)
|
||||
- {"EUR", "Notes"}
|
||||
)
|
||||
)
|
||||
|
||||
def format_currency(value, currency):
|
||||
if currency == "EUR":
|
||||
return f"€{value:,.2f}"
|
||||
elif currency in ["BTC", "ETH", "XMR"]:
|
||||
return f"{value:,.9f} {currency}"
|
||||
else:
|
||||
return f"{value} {currency}"
|
||||
|
||||
def format_value(value, currency):
|
||||
if value == 0:
|
||||
return f"{format_currency(value, currency)}"
|
||||
elif value > 0:
|
||||
return f"+ {format_currency(value, currency)}"
|
||||
else:
|
||||
return f"- {format_currency(abs(value), currency)}"
|
||||
|
||||
html = """
|
||||
<table class="table table-bordered table-transparency">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th scope="col">Category</th>
|
||||
"""
|
||||
|
||||
if currencies is None:
|
||||
currencies = extract_currencies(result)
|
||||
|
||||
# Add currency headers
|
||||
for currency in currencies:
|
||||
if currency == "EUR":
|
||||
html += '<th class="currency-col" scope="col">Euros (€)</th>'
|
||||
elif currency == "BTC":
|
||||
html += '<th class="currency-col" scope="col">Bitcoin (BTC)</th>'
|
||||
elif currency == "ETH":
|
||||
html += '<th class="currency-col" scope="col">Ethereum (ETH)</th>'
|
||||
elif currency == "XMR":
|
||||
html += '<th class="currency-col" scope="col">Monero (XMR)</th>'
|
||||
else:
|
||||
html += f'<th class="currency-col" scope="col">{currency}</th>'
|
||||
|
||||
html += """
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
"""
|
||||
|
||||
# Add start balance row
|
||||
html += "<tr><td>Account Balance (start of month)</td>"
|
||||
for currency in currencies:
|
||||
value = result["start_balance"].get(currency, Decimal(0))
|
||||
html += f"<td>{format_value(value, currency)}</td>"
|
||||
html += "</tr>"
|
||||
|
||||
# Add income rows
|
||||
for category, transactions in result["incomes"].items():
|
||||
has_notes = result["notes"].get(category)
|
||||
html += f"<tr><td>{category}{'*' if has_notes else ''}</td>"
|
||||
for currency in currencies:
|
||||
value = transactions.get(currency, "")
|
||||
if value != "":
|
||||
html += f"<td>{format_value(value, currency)}</td>"
|
||||
else:
|
||||
html += "<td></td>"
|
||||
html += "</tr>"
|
||||
|
||||
# Add expense rows
|
||||
for category, transactions in result["expenses"].items():
|
||||
has_notes = result["notes"].get(category)
|
||||
html += f"<tr><td>{category}{'*' if has_notes else ''}</td>"
|
||||
for currency in currencies:
|
||||
value = transactions.get(currency, "")
|
||||
if value != "":
|
||||
html += f"<td>{format_value(value, currency)}</td>"
|
||||
else:
|
||||
html += "<td></td>"
|
||||
html += "</tr>"
|
||||
|
||||
# Add total income row
|
||||
html += '<tr class="table-secondary"><td><b>Total Income</b></td>'
|
||||
for currency in currencies:
|
||||
value = result["accumulated_incomes"].get(currency, Decimal(0))
|
||||
html += f"<td><b>{format_value(value, currency)}</b></td>"
|
||||
html += "</tr>"
|
||||
|
||||
# Add total expenses row
|
||||
html += '<tr class="table-secondary"><td><b>Total Expenses</b></td>'
|
||||
for currency in currencies:
|
||||
value = result["accumulated_expenses"].get(currency, Decimal(0))
|
||||
html += f"<td><b>{format_value(value, currency)}</b></td>"
|
||||
html += "</tr>"
|
||||
|
||||
# Add end balance row
|
||||
html += '<tr class="table-secondary"><td><b>Account Balance (end of month)</b></td>'
|
||||
for currency in currencies:
|
||||
value = result["end_balance"].get(currency, Decimal(0))
|
||||
html += f"<td><b>{format_value(value, currency)}</b></td>"
|
||||
html += "</tr>"
|
||||
|
||||
html += """
|
||||
</tbody>
|
||||
</table>
|
||||
"""
|
||||
|
||||
if result["notes"]:
|
||||
html += "<p><b>Notes:</b></p>"
|
||||
html += "<ul>"
|
||||
for category, footnote in result["notes"].items():
|
||||
html += f"<li>{category}: {footnote}</li>"
|
||||
html += "</ul>"
|
||||
|
||||
return html
|
1199
index.html
Normal file
1199
index.html
Normal file
File diff suppressed because it is too large
Load diff
207
legal.html
Normal file
207
legal.html
Normal file
|
@ -0,0 +1,207 @@
|
|||
<!DOCTYPE html>
|
||||
<html data-bs-theme="light" lang="en">
|
||||
<!-- This file was created as part of the Private.coffee project
|
||||
It is licensed under the MIT license
|
||||
For more information, please visit https://private.coffee -->
|
||||
|
||||
<head>
|
||||
<meta charset="utf8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, shrink-to-fit=no"
|
||||
/>
|
||||
<meta
|
||||
name="description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta
|
||||
name="keywords"
|
||||
content="privacy, digital sovereignty, non-profit, association, privacy-focused"
|
||||
/>
|
||||
<meta name="author" content="Private.coffee" />
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Private.coffee - Empowering Privacy with Open Source"
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://private.coffee/" />
|
||||
<meta
|
||||
property="og:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png"
|
||||
/>
|
||||
<meta property="og:site_name" content="Private.coffee" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:title" content="Private.coffee" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta
|
||||
name="twitter:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png"
|
||||
/>
|
||||
<link rel="icon" type="image/png" href="assets/img/logo_inv_grad.png" />
|
||||
<title>Legal Notice - Private.coffee</title>
|
||||
<link rel="stylesheet" href="assets/dist/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="assets/css/base.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-expand-md py-3 navbar-light" id="mainNav">
|
||||
<div class="container">
|
||||
<div class="row d-lg-flex align-items-lg-center">
|
||||
<div class="col p-0">
|
||||
<a href="/"
|
||||
><img src="assets/img/logo-inv_grad.svg" style="height: 60px"
|
||||
/></a>
|
||||
</div>
|
||||
<div class="col d-flex">
|
||||
<a class="navbar-brand d-flex align-items-center" href="/">
|
||||
<p
|
||||
class="mb-0"
|
||||
style="line-height: 1.2rem; color: var(--bs-tertiary-color)"
|
||||
>
|
||||
<span class="ps-2 fancy-text-primary"
|
||||
><span style="color: rgb(35, 35, 35)"
|
||||
>Private.coffee</span
|
||||
></span
|
||||
><br class="that-br" /><span class="ps-2 slogan"
|
||||
>Empowering Privacy with Open Source</span
|
||||
>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="navbar" id="navcol-1">
|
||||
<ul class="navbar-nav mx-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/index.html">Home</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://status.private.coffee/"
|
||||
>Status</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
<a
|
||||
class="btn btn-primary shadow navbar-btn"
|
||||
role="button"
|
||||
href="/membership.html"
|
||||
>JOIN & SUPPORT</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="alert alert-warning text-center" role="alert">
|
||||
This is a development version of the Private.coffee website. For the live
|
||||
version, please visit
|
||||
<a href="https://private.coffee" class="alert-link">https://private.coffee</a
|
||||
>.
|
||||
</div>
|
||||
|
||||
<section>
|
||||
<div class="container py-5">
|
||||
<div class="row align-items-center">
|
||||
<div class="col">
|
||||
<p class="text-end special-header fancy-text-primary mb-0">
|
||||
Legal Notice
|
||||
</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<p class="text-start mb-1" style="font-size: 1.6rem">
|
||||
from the <strong>community</strong>
|
||||
</p>
|
||||
<p class="text-start mb-0" style="font-size: 1.6rem">
|
||||
for the <strong>community</strong>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<p>This is a legal notice for the website private.coffee</p>
|
||||
<p>The website private.coffee is run by the following entity:</p>
|
||||
<address>
|
||||
Private.coffee ‐ Verein zur Förderung von Privatsphäre und
|
||||
digitaler Souveränität<br />
|
||||
c/o Klaus-Uwe Mitterer<br />
|
||||
Gartengasse 22/7/3<br />
|
||||
8010 Graz<br />
|
||||
Austria<br />
|
||||
</address>
|
||||
<p>Central Register of Associations (ZVR) Number: 1758485319</p>
|
||||
<p>
|
||||
Email:
|
||||
<a href="mailto:support@private.coffee">support@private.coffee</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer class="bg-primary-gradient">
|
||||
<div class="container py-4 py-lg-5">
|
||||
<div class="row justify-content-center">
|
||||
<div
|
||||
class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column"
|
||||
>
|
||||
<h3 class="fs-6 fw-bold">Legal Stuff</h3>
|
||||
<ul class="list-unstyled">
|
||||
<li><a href="/legal.html">Legal Notice</a></li>
|
||||
<li><a href="/privacy.html">Privacy Notice</a></li>
|
||||
<li><a href="/terms.html">Terms of Service</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div
|
||||
class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column"
|
||||
></div>
|
||||
<div
|
||||
class="col-lg-3 text-center text-lg-start d-flex flex-column align-items-center order-first align-items-lg-start order-lg-last"
|
||||
>
|
||||
<div class="fw-bold d-flex align-items-center mb-2">
|
||||
<span
|
||||
class="bs-icon-sm bs-icon-circle bs-icon-primary d-flex justify-content-center align-items-center bs-icon me-2"
|
||||
><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#000000" viewBox="0 0 256 256"><path d="M80,56V24a8,8,0,0,1,16,0V56a8,8,0,0,1-16,0Zm40,8a8,8,0,0,0,8-8V24a8,8,0,0,0-16,0V56A8,8,0,0,0,120,64Zm32,0a8,8,0,0,0,8-8V24a8,8,0,0,0-16,0V56A8,8,0,0,0,152,64Zm96,56v8a40,40,0,0,1-37.51,39.91,96.59,96.59,0,0,1-27,40.09H208a8,8,0,0,1,0,16H32a8,8,0,0,1,0-16H56.54A96.3,96.3,0,0,1,24,136V88a8,8,0,0,1,8-8H208A40,40,0,0,1,248,120ZM200,96H40v40a80.27,80.27,0,0,0,45.12,72h69.76A80.27,80.27,0,0,0,200,136Zm32,24a24,24,0,0,0-16-22.62V136a95.78,95.78,0,0,1-1.2,15A24,24,0,0,0,232,128Z"></path></svg></span
|
||||
><span>Private.coffee</span>
|
||||
</div>
|
||||
<p class="text-muted">
|
||||
Private.coffee is a privacy-focused non-profit association,
|
||||
dedicated to supporting privacy and digital sovereignty.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div
|
||||
class="text-muted d-flex justify-content-between align-items-center pt-3"
|
||||
>
|
||||
<p class="mb-0">Made with ❤️ and ☕ by Private.coffee</p>
|
||||
<p class="mb-0">
|
||||
<a
|
||||
href="https://git.private.coffee/privatecoffee/privatecoffee-website"
|
||||
><img
|
||||
src="https://shields.private.coffee/gitea/last-commit/privatecoffee/privatecoffee-website?gitea_url=https://git.private.coffee&logo=forgejo"
|
||||
/></a>
|
||||
<a href="https://pride.coffee"><svg xmlns="http://www.w3.org/2000/svg" width="135" height="20" role="img" aria-label="LGBTIQ+">
|
||||
<!-- This file was created as part of the Private.coffee project
|
||||
It is licensed under the MIT license
|
||||
For more information, please visit https://private.coffee -->
|
||||
<title>LGBTIQ+</title>
|
||||
<rect rx="3" width="135" height="20" fill="#555"></rect>
|
||||
<rect x="53" width="82" height="20" fill="#e05d44"></rect>
|
||||
<rect x="66.5" width="68.5" height="20" fill="#fecc00"></rect>
|
||||
<rect x="80" width="55" height="20" fill="#61c354"></rect>
|
||||
<rect x="93.5" width="41.5" height="20" fill="#007ec6"></rect>
|
||||
<rect x="107" width="28" height="20" fill="#744ca1"></rect>
|
||||
<rect x="120.5" width="14.5" height="20" rx="3" ry="3" fill="#8b00ff"></rect>
|
||||
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="8">
|
||||
<text x="27" y="15" fill="#fff">LGBTIQ+</text>
|
||||
</g>
|
||||
</svg></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
189
main.py
189
main.py
|
@ -1,189 +0,0 @@
|
|||
from jinja2 import Environment, FileSystemLoader, TemplateNotFound
|
||||
import json
|
||||
import pathlib
|
||||
import datetime
|
||||
import shutil
|
||||
|
||||
from http.server import SimpleHTTPRequestHandler
|
||||
from socketserver import TCPServer
|
||||
from threading import Thread
|
||||
|
||||
from argparse import ArgumentParser
|
||||
|
||||
from helpers.finances import (
|
||||
generate_transparency_table,
|
||||
get_transparency_data,
|
||||
get_latest_month,
|
||||
)
|
||||
|
||||
|
||||
class StaticPageHandler(SimpleHTTPRequestHandler):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(*args, directory="build", **kwargs)
|
||||
|
||||
|
||||
# Configure Jinja2 environment
|
||||
env = Environment(loader=FileSystemLoader("templates"))
|
||||
|
||||
# Set up the output directory for static files
|
||||
output_dir = pathlib.Path("build")
|
||||
output_dir.mkdir(exist_ok=True, parents=True)
|
||||
|
||||
|
||||
# Define the icon filter
|
||||
def icon(icon_name):
|
||||
icon_path = pathlib.Path("assets") / f"dist/icons/{icon_name}.svg"
|
||||
try:
|
||||
with open(icon_path, "r", encoding="utf-8") as file:
|
||||
file_content = file.read()
|
||||
except FileNotFoundError:
|
||||
file_content = ""
|
||||
return file_content
|
||||
|
||||
|
||||
env.filters["icon"] = icon
|
||||
|
||||
|
||||
# Filter for rendering a month name from a number
|
||||
def month_name(month_number):
|
||||
return datetime.date(1900, int(month_number), 1).strftime("%B")
|
||||
|
||||
|
||||
env.filters["month_name"] = month_name
|
||||
|
||||
|
||||
def render_template_to_file(template_name, output_name, **kwargs):
|
||||
try:
|
||||
template = env.get_template(template_name)
|
||||
output_path = output_dir / output_name
|
||||
kwargs.setdefault("theme", "plain")
|
||||
with open(output_path, "w", encoding="utf-8") as f:
|
||||
f.write(template.render(**kwargs))
|
||||
except TemplateNotFound:
|
||||
print(f"Template {template_name} not found.")
|
||||
|
||||
|
||||
def generate_static_site(development_mode=False, theme="plain"):
|
||||
# Common context
|
||||
kwargs = {
|
||||
"timestamp": int(datetime.datetime.now().timestamp()),
|
||||
"theme": theme,
|
||||
}
|
||||
|
||||
if development_mode:
|
||||
kwargs.update(
|
||||
{
|
||||
"warning": env.get_template("prod-warning.html").render(),
|
||||
}
|
||||
)
|
||||
|
||||
# Load services data
|
||||
services = json.loads(
|
||||
(pathlib.Path(__file__).parent / "data" / "services.json").read_text()
|
||||
)
|
||||
|
||||
# Load finances data
|
||||
finances = json.loads(
|
||||
(pathlib.Path(__file__).parent / "data" / "finances.json").read_text()
|
||||
)
|
||||
|
||||
# Load bridges data
|
||||
bridges = json.loads(
|
||||
(pathlib.Path(__file__).parent / "data" / "bridges.json").read_text()
|
||||
)
|
||||
|
||||
# Iterate over all templates in the templates directory
|
||||
templates_path = pathlib.Path("templates")
|
||||
for template_file in templates_path.glob("*.html"):
|
||||
template_name = template_file.stem
|
||||
context = kwargs.copy()
|
||||
|
||||
context["path"] = f"{template_name}.html" if template_name != "index" else ""
|
||||
|
||||
if template_name in ["index", "simple"]:
|
||||
context.update({"services": services})
|
||||
|
||||
if template_name == "bridges":
|
||||
context.update({"bridges": bridges})
|
||||
|
||||
if template_name.startswith("membership"):
|
||||
allow_current = development_mode
|
||||
finances_month, finances_year = get_latest_month(finances, allow_current)
|
||||
finances_period = datetime.date(finances_year, finances_month, 1)
|
||||
finances_period_str = finances_period.strftime("%B %Y")
|
||||
finances_table = generate_transparency_table(
|
||||
get_transparency_data(
|
||||
finances, finances_year, finances_month, allow_current
|
||||
)
|
||||
)
|
||||
context.update(
|
||||
{
|
||||
"finances": finances_table,
|
||||
"finances_period": finances_period_str,
|
||||
}
|
||||
)
|
||||
|
||||
if template_name == "transparency":
|
||||
finance_data = {}
|
||||
for year in sorted(finances.keys(), reverse=True):
|
||||
for month in sorted(finances[year].keys(), reverse=True):
|
||||
if year not in finance_data:
|
||||
finance_data[year] = {}
|
||||
finance_data[year][month] = generate_transparency_table(
|
||||
get_transparency_data(finances, year, month, True)
|
||||
)
|
||||
context.update({"finances": finance_data})
|
||||
|
||||
render_template_to_file(
|
||||
f"{template_name}.html", f"{template_name}.html", **context
|
||||
)
|
||||
|
||||
# Generate metrics
|
||||
balances = get_transparency_data(finances, allow_current=True)["end_balance"]
|
||||
|
||||
response = (
|
||||
"# HELP privatecoffee_balance The balance of the private.coffee account\n"
|
||||
)
|
||||
response += "# TYPE privatecoffee_balance gauge\n"
|
||||
|
||||
for currency, balance in balances.items():
|
||||
response += f'privatecoffee_balance{{currency="{currency}"}} {balance}\n'
|
||||
|
||||
metrics_path = output_dir / "metrics.txt"
|
||||
with open(metrics_path, "w", encoding="utf-8") as f:
|
||||
f.write(response)
|
||||
|
||||
# Copy static assets
|
||||
for folder in ["assets", "data"]:
|
||||
src = pathlib.Path(folder)
|
||||
dst = output_dir / folder
|
||||
if dst.exists():
|
||||
shutil.rmtree(dst)
|
||||
shutil.copytree(src, dst)
|
||||
|
||||
print("Static site generated successfully.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = ArgumentParser(description="Generate the private.coffee static site.")
|
||||
parser.add_argument("--dev", action="store_true", help="Enable development mode")
|
||||
parser.add_argument(
|
||||
"--serve", action="store_true", help="Serve the site after building"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--port", type=int, default=8000, help="Port to serve the site on"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--theme", type=str, default="plain", help="Theme to use for the site"
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
generate_static_site(development_mode=args.dev, theme=args.theme)
|
||||
|
||||
if args.serve:
|
||||
server = TCPServer(("", args.port), StaticPageHandler)
|
||||
print(f"Serving on http://localhost:{args.port}")
|
||||
thread = Thread(target=server.serve_forever)
|
||||
thread.start()
|
||||
thread.join()
|
302
membership.html
Normal file
302
membership.html
Normal file
|
@ -0,0 +1,302 @@
|
|||
<!DOCTYPE html>
|
||||
<html data-bs-theme="light" lang="en">
|
||||
<!-- This file was created as part of the Private.coffee project
|
||||
It is licensed under the MIT license
|
||||
For more information, please visit https://private.coffee -->
|
||||
|
||||
<head>
|
||||
<meta charset="utf8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, shrink-to-fit=no"
|
||||
/>
|
||||
<meta
|
||||
name="description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta
|
||||
name="keywords"
|
||||
content="privacy, digital sovereignty, non-profit, association, privacy-focused"
|
||||
/>
|
||||
<meta name="author" content="Private.coffee" />
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Private.coffee - Empowering Privacy with Open Source"
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://private.coffee/" />
|
||||
<meta
|
||||
property="og:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png"
|
||||
/>
|
||||
<meta property="og:site_name" content="Private.coffee" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:title" content="Private.coffee" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta
|
||||
name="twitter:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png"
|
||||
/>
|
||||
<link rel="icon" type="image/png" href="assets/img/logo_inv_grad.png" />
|
||||
<title>Membership / Donations - Private.coffee</title>
|
||||
<link rel="stylesheet" href="assets/dist/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="assets/css/base.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-expand-md py-3 navbar-light" id="mainNav">
|
||||
<div class="container">
|
||||
<div class="row d-lg-flex align-items-lg-center">
|
||||
<div class="col p-0">
|
||||
<a href="/"
|
||||
><img src="assets/img/logo-inv_grad.svg" style="height: 60px"
|
||||
/></a>
|
||||
</div>
|
||||
<div class="col d-flex">
|
||||
<a class="navbar-brand d-flex align-items-center" href="/">
|
||||
<p
|
||||
class="mb-0"
|
||||
style="line-height: 1.2rem; color: var(--bs-tertiary-color)"
|
||||
>
|
||||
<span class="ps-2 fancy-text-primary"
|
||||
><span style="color: rgb(35, 35, 35)"
|
||||
>Private.coffee</span
|
||||
></span
|
||||
><br class="that-br" /><span class="ps-2 slogan"
|
||||
>Empowering Privacy with Open Source</span
|
||||
>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="navbar" id="navcol-1">
|
||||
<ul class="navbar-nav mx-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/index.html">Home</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://status.private.coffee/"
|
||||
>Status</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
<a
|
||||
class="btn btn-primary shadow navbar-btn"
|
||||
role="button"
|
||||
href="/membership.html"
|
||||
>JOIN & SUPPORT</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="alert alert-warning text-center" role="alert">
|
||||
This is a development version of the Private.coffee website. For the live
|
||||
version, please visit
|
||||
<a href="https://private.coffee" class="alert-link">https://private.coffee</a
|
||||
>.
|
||||
</div>
|
||||
|
||||
<div class="container my-5">
|
||||
<div class="text-center mb-5">
|
||||
<h1 class="special-header fancy-text-primary">Membership/Donations</h1>
|
||||
<p class="lead">
|
||||
Private.coffee is a non-profit organization dedicated to supporting
|
||||
privacy and digital sovereignty. We fund our activities and running
|
||||
infrastructure costs through membership fees. Donations allow us to expand
|
||||
our services and reach more people.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-4">
|
||||
<div class="card shadow-sm">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Membership</h5>
|
||||
<p class="card-text">
|
||||
Membership fees help cover the costs of our day-to-day activities,
|
||||
server infrastructure, domain names, and other running operating
|
||||
expenses. This allows us to provide services to our members and the
|
||||
public.
|
||||
</p>
|
||||
<p class="card-text">
|
||||
Membership starts at € 5 / month!
|
||||
</p>
|
||||
<a href="https://pcof.fi/join" class="btn btn-primary">
|
||||
Join us now!
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 mb-4">
|
||||
<div class="card shadow-sm">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Bank Donations</h5>
|
||||
<p class="card-text">
|
||||
Even if you're not a member, you can still support us by making a
|
||||
direct donation to our bank account. Your donation will be used to
|
||||
fund our activities and expand our services.
|
||||
</p>
|
||||
<p class="card-text"><b>Account holder:</b> Private.coffee</p>
|
||||
<p class="card-text"><b>IBAN:</b> AT35 2081 5000 4554 0812</p>
|
||||
<p class="card-text"><b>BIC:</b> STSPAT2GXXX</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 mb-4">
|
||||
<div class="card shadow-sm">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Crypto Donations</h5>
|
||||
<p class="card-text">
|
||||
While our expenses are generally in fiat currency, we accept
|
||||
donations in cryptocurrencies, too.
|
||||
</p>
|
||||
<p class="card-text">
|
||||
<b>Bitcoin (BTC):</b>
|
||||
<code>bc1qnu7r5sed4afacfpgx5za8hsyhaj4rs45dpm26k</code>
|
||||
</p>
|
||||
<p class="card-text">
|
||||
<b>Monero (XMR):</b>
|
||||
<code
|
||||
>487Ny4iBk2pKGJwjyYrumFD8xFmrS6jCSXNA8e5EvVJ49GyS54CRDVz514MBnXgNT1EioKYiagHs33sLzUAFj8i3Pwg3AMS</code
|
||||
>
|
||||
</p>
|
||||
<p class="card-text">
|
||||
<b>Ethereum (ETH):</b> <code>Coming soon™</code>
|
||||
</p>
|
||||
<p class="card-text">
|
||||
If your client supports OpenAlias, you can just send your donation
|
||||
to <code>private.coffee</code>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm mt-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Transparency Report for August 2024</h5>
|
||||
<p class="card-text">
|
||||
We believe in transparency and accountability. Below is a summary of our
|
||||
income and expenses for the last month, so you can see how your
|
||||
donations are being used.
|
||||
</p>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-transparency">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th scope="col">Category</th>
|
||||
<th class="currency-col" scope="col">Euros (€)</th><th class="currency-col" scope="col">Bitcoin (BTC)</th><th class="currency-col" scope="col">Monero (XMR)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>Account Balance (start of month)</td><td>+ €245.47</td><td>+ 0.000434000 BTC</td><td>+ 1.447661806 XMR</td></tr><tr><td>Membership Fees</td><td>+ €325.00</td><td></td><td></td></tr><tr><td>Server Costs</td><td>- €77.28</td><td></td><td></td></tr><tr class="table-secondary"><td><b>Total Income</b></td><td><b>+ €325.00</b></td><td><b>0.000000000 BTC</b></td><td><b>0.000000000 XMR</b></td></tr><tr class="table-secondary"><td><b>Total Expenses</b></td><td><b>- €77.28</b></td><td><b>0.000000000 BTC</b></td><td><b>0.000000000 XMR</b></td></tr><tr class="table-secondary"><td><b>Account Balance (end of month)</b></td><td><b>+ €493.19</b></td><td><b>+ 0.000434000 BTC</b></td><td><b>+ 1.447661806 XMR</b></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<p class="card-text">
|
||||
Want to know how we got here? Check out all of our
|
||||
<a href="/transparency.html">transparency reports</a> for more
|
||||
information.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm mt-4">
|
||||
<div class="card-body">
|
||||
<h5>Central Register of Associations (ZVR) Number: 1758485319</h5>
|
||||
<p>
|
||||
Our statutes can be found in our Git
|
||||
<a href="https://git.private.coffee/PrivateCoffee/statuten"
|
||||
>in German (legally binding)</a
|
||||
>
|
||||
and
|
||||
<a
|
||||
href="https://git.private.coffee/PrivateCoffee/Statuten/src/branch/english"
|
||||
>in English</a
|
||||
>.
|
||||
</p>
|
||||
<p class="contact-info" id="contact-info">
|
||||
Interested in joining the association? Reach out via
|
||||
<a href="mailto:support@private.coffee">email</a> or
|
||||
<a href="https://matrix.pcof.fi/#/#private.coffee:private.coffee"
|
||||
>Matrix</a
|
||||
>
|
||||
for more information.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="bg-primary-gradient">
|
||||
<div class="container py-4 py-lg-5">
|
||||
<div class="row justify-content-center">
|
||||
<div
|
||||
class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column"
|
||||
>
|
||||
<h3 class="fs-6 fw-bold">Legal Stuff</h3>
|
||||
<ul class="list-unstyled">
|
||||
<li><a href="/legal.html">Legal Notice</a></li>
|
||||
<li><a href="/privacy.html">Privacy Notice</a></li>
|
||||
<li><a href="/terms.html">Terms of Service</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div
|
||||
class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column"
|
||||
></div>
|
||||
<div
|
||||
class="col-lg-3 text-center text-lg-start d-flex flex-column align-items-center order-first align-items-lg-start order-lg-last"
|
||||
>
|
||||
<div class="fw-bold d-flex align-items-center mb-2">
|
||||
<span
|
||||
class="bs-icon-sm bs-icon-circle bs-icon-primary d-flex justify-content-center align-items-center bs-icon me-2"
|
||||
><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#000000" viewBox="0 0 256 256"><path d="M80,56V24a8,8,0,0,1,16,0V56a8,8,0,0,1-16,0Zm40,8a8,8,0,0,0,8-8V24a8,8,0,0,0-16,0V56A8,8,0,0,0,120,64Zm32,0a8,8,0,0,0,8-8V24a8,8,0,0,0-16,0V56A8,8,0,0,0,152,64Zm96,56v8a40,40,0,0,1-37.51,39.91,96.59,96.59,0,0,1-27,40.09H208a8,8,0,0,1,0,16H32a8,8,0,0,1,0-16H56.54A96.3,96.3,0,0,1,24,136V88a8,8,0,0,1,8-8H208A40,40,0,0,1,248,120ZM200,96H40v40a80.27,80.27,0,0,0,45.12,72h69.76A80.27,80.27,0,0,0,200,136Zm32,24a24,24,0,0,0-16-22.62V136a95.78,95.78,0,0,1-1.2,15A24,24,0,0,0,232,128Z"></path></svg></span
|
||||
><span>Private.coffee</span>
|
||||
</div>
|
||||
<p class="text-muted">
|
||||
Private.coffee is a privacy-focused non-profit association,
|
||||
dedicated to supporting privacy and digital sovereignty.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div
|
||||
class="text-muted d-flex justify-content-between align-items-center pt-3"
|
||||
>
|
||||
<p class="mb-0">Made with ❤️ and ☕ by Private.coffee</p>
|
||||
<p class="mb-0">
|
||||
<a
|
||||
href="https://git.private.coffee/privatecoffee/privatecoffee-website"
|
||||
><img
|
||||
src="https://shields.private.coffee/gitea/last-commit/privatecoffee/privatecoffee-website?gitea_url=https://git.private.coffee&logo=forgejo"
|
||||
/></a>
|
||||
<a href="https://pride.coffee"><svg xmlns="http://www.w3.org/2000/svg" width="135" height="20" role="img" aria-label="LGBTIQ+">
|
||||
<!-- This file was created as part of the Private.coffee project
|
||||
It is licensed under the MIT license
|
||||
For more information, please visit https://private.coffee -->
|
||||
<title>LGBTIQ+</title>
|
||||
<rect rx="3" width="135" height="20" fill="#555"></rect>
|
||||
<rect x="53" width="82" height="20" fill="#e05d44"></rect>
|
||||
<rect x="66.5" width="68.5" height="20" fill="#fecc00"></rect>
|
||||
<rect x="80" width="55" height="20" fill="#61c354"></rect>
|
||||
<rect x="93.5" width="41.5" height="20" fill="#007ec6"></rect>
|
||||
<rect x="107" width="28" height="20" fill="#744ca1"></rect>
|
||||
<rect x="120.5" width="14.5" height="20" rx="3" ry="3" fill="#8b00ff"></rect>
|
||||
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="8">
|
||||
<text x="27" y="15" fill="#fff">LGBTIQ+</text>
|
||||
</g>
|
||||
</svg></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
5
metrics.txt
Normal file
5
metrics.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
# HELP privatecoffee_balance The balance of the private.coffee account
|
||||
# TYPE privatecoffee_balance gauge
|
||||
privatecoffee_balance{currency="EUR"} 493.19
|
||||
privatecoffee_balance{currency="BTC"} 0.000434
|
||||
privatecoffee_balance{currency="XMR"} 1.447661805527
|
354
privacy.html
Normal file
354
privacy.html
Normal file
|
@ -0,0 +1,354 @@
|
|||
<!DOCTYPE html>
|
||||
<html data-bs-theme="light" lang="en">
|
||||
<!-- This file was created as part of the Private.coffee project
|
||||
It is licensed under the MIT license
|
||||
For more information, please visit https://private.coffee -->
|
||||
|
||||
<head>
|
||||
<meta charset="utf8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, shrink-to-fit=no"
|
||||
/>
|
||||
<meta
|
||||
name="description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta
|
||||
name="keywords"
|
||||
content="privacy, digital sovereignty, non-profit, association, privacy-focused"
|
||||
/>
|
||||
<meta name="author" content="Private.coffee" />
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Private.coffee - Empowering Privacy with Open Source"
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://private.coffee/" />
|
||||
<meta
|
||||
property="og:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png"
|
||||
/>
|
||||
<meta property="og:site_name" content="Private.coffee" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:title" content="Private.coffee" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta
|
||||
name="twitter:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png"
|
||||
/>
|
||||
<link rel="icon" type="image/png" href="assets/img/logo_inv_grad.png" />
|
||||
<title>Privacy Policy - Private.coffee</title>
|
||||
<link rel="stylesheet" href="assets/dist/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="assets/css/base.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-expand-md py-3 navbar-light" id="mainNav">
|
||||
<div class="container">
|
||||
<div class="row d-lg-flex align-items-lg-center">
|
||||
<div class="col p-0">
|
||||
<a href="/"
|
||||
><img src="assets/img/logo-inv_grad.svg" style="height: 60px"
|
||||
/></a>
|
||||
</div>
|
||||
<div class="col d-flex">
|
||||
<a class="navbar-brand d-flex align-items-center" href="/">
|
||||
<p
|
||||
class="mb-0"
|
||||
style="line-height: 1.2rem; color: var(--bs-tertiary-color)"
|
||||
>
|
||||
<span class="ps-2 fancy-text-primary"
|
||||
><span style="color: rgb(35, 35, 35)"
|
||||
>Private.coffee</span
|
||||
></span
|
||||
><br class="that-br" /><span class="ps-2 slogan"
|
||||
>Empowering Privacy with Open Source</span
|
||||
>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="navbar" id="navcol-1">
|
||||
<ul class="navbar-nav mx-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/index.html">Home</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://status.private.coffee/"
|
||||
>Status</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
<a
|
||||
class="btn btn-primary shadow navbar-btn"
|
||||
role="button"
|
||||
href="/membership.html"
|
||||
>JOIN & SUPPORT</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="alert alert-warning text-center" role="alert">
|
||||
This is a development version of the Private.coffee website. For the live
|
||||
version, please visit
|
||||
<a href="https://private.coffee" class="alert-link">https://private.coffee</a
|
||||
>.
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="text-center mb-5">
|
||||
<h1 class="special-header fancy-text-primary">Privacy Policy</h1>
|
||||
<p class="lead">
|
||||
This is the privacy policy for the website private.coffee. It describes
|
||||
how we collect and use your personal data.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<p>
|
||||
This privacy policy is effective as of 2024-04-26. It may be updated from
|
||||
time to time, so please check back regularly.
|
||||
</p>
|
||||
<p>
|
||||
If you have any questions about this privacy policy, please contact us at
|
||||
<a href="mailto:support@private.coffee">support@private.coffee</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>Who are we?</h2>
|
||||
<p>The data controller for private.coffee is:</p>
|
||||
<address>
|
||||
Private.coffee ‐ Verein zur Förderung von Privatsphäre und digitaler
|
||||
Souveränität<br />
|
||||
c/o Klaus-Uwe Mitterer<br />
|
||||
Gartengasse 22/7/3<br />
|
||||
8010 Graz<br />
|
||||
Austria<br />
|
||||
</address>
|
||||
<p>Central Register of Associations (ZVR) Number: 1758485319</p>
|
||||
<p>
|
||||
Email:
|
||||
<a href="mailto:support@private.coffee">support@private.coffee</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>What data do we collect?</h2>
|
||||
<p>We collect the following data from you:</p>
|
||||
<ul>
|
||||
<li>
|
||||
Your IP address, which is automatically collected by our web server for
|
||||
some of our services.
|
||||
</li>
|
||||
<li>
|
||||
Any data you provide to us, such as your email address, when you create
|
||||
an account on one of our services.
|
||||
</li>
|
||||
<li>
|
||||
Usage data that is collected automatically by our services, such as the
|
||||
time you last logged in, or the number of times you have logged in, as
|
||||
well as any content you create using our services.
|
||||
</li>
|
||||
<li>
|
||||
Any information, including personal data and payment information, that
|
||||
you provide to us when you make a donation or join our association.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>How do we use your data?</h2>
|
||||
<p>
|
||||
We use your data to provide you with the services you requested. This
|
||||
includes:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Communication between our web server and your browser</li>
|
||||
<li>Storing your preferences or your created content</li>
|
||||
<li>Detection of abuse or resource exhaustion on our servers</li>
|
||||
<li>Providing support to you</li>
|
||||
<li>Processing donations and memberships</li>
|
||||
</ul>
|
||||
<p>
|
||||
All of those are what is called "legitimate interests" in legal speak.
|
||||
</p>
|
||||
<p>
|
||||
We do not use your data for any other purposes, including marketing,
|
||||
advertising, or tracking, we do not share your data with third parties
|
||||
(unless required by law), we do not use your data to create profiles or
|
||||
make automated decisions, and we do not cross-reference your data between
|
||||
different services or any other sources.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>Where do we store your data?</h2>
|
||||
<p>
|
||||
We store your data on our web servers, which are located in Austria. We
|
||||
also use servers in Germany, but those are not public-facing and do not
|
||||
store or process any personal data.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>How long do we store your data?</h2>
|
||||
<ul>
|
||||
<li>
|
||||
IP addresses collected by our web server are stored for up to 48 hours.
|
||||
After that, the log files that contain them are deleted automatically.
|
||||
</li>
|
||||
<li>
|
||||
Data associated with an account you have on one of our services is
|
||||
stored for as long as you have an account on that service. If you delete
|
||||
your account, your data will be deleted automatically. The service will
|
||||
have a dedicated privacy policy, please consult that if you have any
|
||||
specific questions.
|
||||
</li>
|
||||
<li>
|
||||
If you send a support request to us, we will store your email address
|
||||
and any other data you provide to us for up to 30 days in our support
|
||||
system. After that, the data will be deleted automatically.
|
||||
</li>
|
||||
<li>
|
||||
Data associated with a donation is stored for as long as required by
|
||||
law, which is currently 7 years in Austria. After that, the data will be
|
||||
deleted.
|
||||
</li>
|
||||
<li>
|
||||
Data associated with a membership is stored for as long as you are a
|
||||
member of our association. If you leave the association, your data will
|
||||
be deleted automatically. This does not apply to data that is required
|
||||
by law to be stored for a longer period of time, such as financial
|
||||
records, which are stored for 7 years regardless of your membership
|
||||
status.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>What are your data protection rights?</h2>
|
||||
<p>You have the following data protection rights:</p>
|
||||
<ul>
|
||||
<li>You have the right to request access to your personal data.</li>
|
||||
<li>You have the right to request correction of your personal data.</li>
|
||||
<li>You have the right to request erasure of your personal data.</li>
|
||||
<li>
|
||||
You have the right to request restriction of processing of your personal
|
||||
data.
|
||||
</li>
|
||||
<li>You have the right to object to processing of your personal data.</li>
|
||||
<li>You have the right to request transfer of your personal data.</li>
|
||||
</ul>
|
||||
<p>If you make a request, we have one month to respond to you.</p>
|
||||
<p>
|
||||
If you would like to exercise any of these rights, please contact us at
|
||||
<a href="mailto:support@private.coffee">support@private.coffee</a>.
|
||||
</p>
|
||||
<p>
|
||||
Your privacy is important to us - after all, that's why we're all here -
|
||||
and we will do our best to respond to your request as soon as possible.
|
||||
Please note that we may need to verify your identity before we can respond
|
||||
to your request - we will not share your data with anyone else.
|
||||
</p>
|
||||
<p>
|
||||
If you are not satisfied with our response, or believe that we are
|
||||
processing your data in a way that is not compliant with the law, you have
|
||||
the right to lodge a complaint with the supervisory authority in your
|
||||
country. In Austria, this is the Austrian Data Protection Authority (<a
|
||||
href="https://www.dsb.gv.at/"
|
||||
>https://www.dsb.gv.at/</a
|
||||
>). However, we like to think of ourselves as nice people and will try to
|
||||
help you out directly, and are always open to suggestions for improvement,
|
||||
so please do get in touch with us if you have any questions or concerns.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>What are cookies?</h2>
|
||||
<p>
|
||||
Cookies are small text files that are placed on your computer or mobile
|
||||
device when you visit a website. They are widely used to make websites
|
||||
work, or work more efficiently, as well as to provide information to the
|
||||
owners of the site. Cookies are stored on your device, and can be accessed
|
||||
by the website that created them. They are not harmful to your device, and
|
||||
do not directly contain any personal data, but are used by our services to
|
||||
identify you between multiple visits.
|
||||
</p>
|
||||
<p>
|
||||
Cookies are used on some of our services to provide you with a better
|
||||
experience. For example, we use cookies to remember your preferences and
|
||||
settings - for example, to allow you to login to our services - and to
|
||||
provide you with a better experience when browsing our services. We do not
|
||||
use cookies to track your activity, either on our services or on other
|
||||
websites. In legal/technical terms, we exclusively use "strictly
|
||||
necessary" first-party cookies, which is also why you don't see any cookie
|
||||
banners on our website.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="bg-primary-gradient">
|
||||
<div class="container py-4 py-lg-5">
|
||||
<div class="row justify-content-center">
|
||||
<div
|
||||
class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column"
|
||||
>
|
||||
<h3 class="fs-6 fw-bold">Legal Stuff</h3>
|
||||
<ul class="list-unstyled">
|
||||
<li><a href="/legal.html">Legal Notice</a></li>
|
||||
<li><a href="/privacy.html">Privacy Notice</a></li>
|
||||
<li><a href="/terms.html">Terms of Service</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div
|
||||
class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column"
|
||||
></div>
|
||||
<div
|
||||
class="col-lg-3 text-center text-lg-start d-flex flex-column align-items-center order-first align-items-lg-start order-lg-last"
|
||||
>
|
||||
<div class="fw-bold d-flex align-items-center mb-2">
|
||||
<span
|
||||
class="bs-icon-sm bs-icon-circle bs-icon-primary d-flex justify-content-center align-items-center bs-icon me-2"
|
||||
><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#000000" viewBox="0 0 256 256"><path d="M80,56V24a8,8,0,0,1,16,0V56a8,8,0,0,1-16,0Zm40,8a8,8,0,0,0,8-8V24a8,8,0,0,0-16,0V56A8,8,0,0,0,120,64Zm32,0a8,8,0,0,0,8-8V24a8,8,0,0,0-16,0V56A8,8,0,0,0,152,64Zm96,56v8a40,40,0,0,1-37.51,39.91,96.59,96.59,0,0,1-27,40.09H208a8,8,0,0,1,0,16H32a8,8,0,0,1,0-16H56.54A96.3,96.3,0,0,1,24,136V88a8,8,0,0,1,8-8H208A40,40,0,0,1,248,120ZM200,96H40v40a80.27,80.27,0,0,0,45.12,72h69.76A80.27,80.27,0,0,0,200,136Zm32,24a24,24,0,0,0-16-22.62V136a95.78,95.78,0,0,1-1.2,15A24,24,0,0,0,232,128Z"></path></svg></span
|
||||
><span>Private.coffee</span>
|
||||
</div>
|
||||
<p class="text-muted">
|
||||
Private.coffee is a privacy-focused non-profit association,
|
||||
dedicated to supporting privacy and digital sovereignty.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div
|
||||
class="text-muted d-flex justify-content-between align-items-center pt-3"
|
||||
>
|
||||
<p class="mb-0">Made with ❤️ and ☕ by Private.coffee</p>
|
||||
<p class="mb-0">
|
||||
<a
|
||||
href="https://git.private.coffee/privatecoffee/privatecoffee-website"
|
||||
><img
|
||||
src="https://shields.private.coffee/gitea/last-commit/privatecoffee/privatecoffee-website?gitea_url=https://git.private.coffee&logo=forgejo"
|
||||
/></a>
|
||||
<a href="https://pride.coffee"><svg xmlns="http://www.w3.org/2000/svg" width="135" height="20" role="img" aria-label="LGBTIQ+">
|
||||
<!-- This file was created as part of the Private.coffee project
|
||||
It is licensed under the MIT license
|
||||
For more information, please visit https://private.coffee -->
|
||||
<title>LGBTIQ+</title>
|
||||
<rect rx="3" width="135" height="20" fill="#555"></rect>
|
||||
<rect x="53" width="82" height="20" fill="#e05d44"></rect>
|
||||
<rect x="66.5" width="68.5" height="20" fill="#fecc00"></rect>
|
||||
<rect x="80" width="55" height="20" fill="#61c354"></rect>
|
||||
<rect x="93.5" width="41.5" height="20" fill="#007ec6"></rect>
|
||||
<rect x="107" width="28" height="20" fill="#744ca1"></rect>
|
||||
<rect x="120.5" width="14.5" height="20" rx="3" ry="3" fill="#8b00ff"></rect>
|
||||
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="8">
|
||||
<text x="27" y="15" fill="#fff">LGBTIQ+</text>
|
||||
</g>
|
||||
</svg></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
|
@ -1,5 +1,6 @@
|
|||
<div class="alert alert-warning text-center" role="alert">
|
||||
This is a development version of the Private.coffee website. For the live
|
||||
version, please visit
|
||||
<a href="https://private.coffee" class="alert-link">https://private.coffee</a>.
|
||||
<a href="https://private.coffee" class="alert-link">https://private.coffee</a
|
||||
>.
|
||||
</div>
|
|
@ -1 +0,0 @@
|
|||
jinja2
|
154
simple.html
Normal file
154
simple.html
Normal file
|
@ -0,0 +1,154 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Private.coffee</title>
|
||||
</head>
|
||||
<body>
|
||||
<div style="font-family: Arial, sans-serif; background-color: #f2f2f2; color: #333; line-height: 1.6; padding: 20px; max-width: 600px; margin: auto;">
|
||||
<h2 style="color: #333;">Welcome to Private.coffee</h2>
|
||||
<p>Thanks for using our Element instance! Now, why don't you join our rooms?</p>
|
||||
<ul style="list-style: none; padding: 0;">
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://element.private.coffee/#/#coffeespace:private.coffee">#coffeespace:private.coffee</a> - The Private.coffee Space, containing all rooms</li>
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://element.private.coffee/#/#private.coffee:private.coffee">#private.coffee:private.coffee</a> - General support for our services</li>
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://element.private.coffee/#/#matrix:private.coffee">#matrix:private.coffee</a> - Support for our Matrix server</li>
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://element.private.coffee/#/#coffeebreak:private.coffee">#coffeebreak:private.coffee</a> - ☕ Coffee Break ☕ - our off-topic room</li>
|
||||
</ul>
|
||||
<hr>
|
||||
<p>Private.coffee operates a collection of services that respect your privacy, here are some others:</p>
|
||||
<ul style="list-style: none; padding: 0;">
|
||||
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://cryptpad.private.coffee">CryptPad</a> - Private, encrypted, real-time collaborative editor.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://piped.private.coffee">Piped / Invidious</a> - Watch YouTube videos without Google tracking.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://transfer.coffee">Transfer.coffee</a> - Transfer files securely using peer-to-peer connections.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://myip.coffee">MyIP.Coffee</a> - Check your IP address.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://overleaf.private.coffee">Overleaf</a> - Overleaf is an online LaTeX editor for writing and sharing documents.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://cuddly.space">Mastodon</a> - Mastodon is a decentralized social network.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://git.private.coffee">Forgejo</a> - Forgejo is our in-house Git forge.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://bbb.private.coffee">BigBlueButton</a> - BigBlueButton is an open-source video conferencing system.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://hedgedoc.private.coffee">HedgeDoc</a> - HedgeDoc is an open-source collaborative markdown editor.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://facilmap.private.coffee">FacilMap</a> - FacilMap is an open-source map editor.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://ots.private.coffee">OTS - One Time Secrets</a> - OTS is a service for sharing secrets securely.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://freshrss.private.coffee">FreshRSS</a> - FreshRSS is a RSS feed reader.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://redlib.private.coffee">redlib</a> - redlib is a privacy-friendly alternative front-end to Reddit.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://alltube.private.coffee">AllTube</a> - Download videos from YouTube, Vimeo, and more.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://structables.private.coffee">Structables</a> - Browse Instructables without being tracked.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://quetre.private.coffee">Quetre</a> - Quetre is a privacy-friendly alternative front-end to Quora.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://wikimore.private.coffee">Wikimore</a> - Wikimore is a privacy-friendly alternative front-end to Wikimedia wikis.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://priviblur.private.coffee">Priviblur</a> - Priviblur is a privacy-friendly alternative front-end to Tumblr.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://biblioreads.private.coffee">BiblioReads</a> - BiblioReads is a privacy-friendly alternative front-end to Goodreads.</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://wishthis.private.coffee">wishthis</a> - wishthis is a service for creating and sharing wishlists.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://breezewiki.private.coffee">BreezeWiki</a> - BreezeWiki is a privacy-friendly alternative front-end to Fandom.</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://tldraw.private.coffee">tldraw</a> - tldraw is a collaborative whiteboard.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://pcof.fi">YOURLS</a> - URL shortener for creating handy links.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://rallly.private.coffee">Rallly</a> - Rallly is a free collaborative scheduling service for voting and polls.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://librey.private.coffee">LibreY</a> - Privacy-friendly metasearch engine.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://gothub.private.coffee">GotHub</a> - Alternative GitHub interface that respects privacy.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://binternet.private.coffee">Binternet</a> - Binternet is a privacy-friendly alternative front-end to Pinterest.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://overpass.private.coffee">Overpass</a> - Overpass is an API for OpenStreetMap.</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://nocdnbs.private.coffee">nocdnbs</a> - nocdnbs is a privacy-friendly proxy to cdnjs.cloudflare.com</li>
|
||||
|
||||
|
||||
|
||||
<li style="padding: 8px 0;"><a style="color: #1a5dab; text-decoration: none;" href="https://nobsdelivr.private.coffee">nobsdelivr</a> - nobsdelivr is a privacy-friendly proxy to cdn.jsdelivr.net</li>
|
||||
|
||||
|
||||
</ul>
|
||||
<p>For hosting inquiries for privacy-related, social, or wholesome projects, <a href="mailto:support@private.coffee" style="color: #1a5dab; text-decoration: none;">get in touch</a>!</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,118 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html data-bs-theme="light" lang="en">
|
||||
<!-- This file was created as part of the Private.coffee project
|
||||
It is licensed under the MIT license
|
||||
For more information, please visit https://private.coffee -->
|
||||
<head>
|
||||
<meta charset="utf8" />
|
||||
<meta name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, shrink-to-fit=no" />
|
||||
<meta name="description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty." />
|
||||
<meta name="keywords"
|
||||
content="privacy, digital sovereignty, non-profit, association, privacy-focused" />
|
||||
<meta name="author" content="Private.coffee" />
|
||||
<meta property="og:title"
|
||||
content="Private.coffee - Empowering Privacy with Open Source" />
|
||||
<meta property="og:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty." />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://private.coffee/" />
|
||||
<meta property="og:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png" />
|
||||
<meta property="og:site_name" content="Private.coffee" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:title" content="Private.coffee" />
|
||||
<meta name="twitter:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty." />
|
||||
<meta name="twitter:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png" />
|
||||
<link rel="icon" type="image/png" href="assets/img/logo-inv_grad.png" />
|
||||
<title>
|
||||
{% block title %}{% endblock title %}
|
||||
- Private.coffee</title>
|
||||
<link rel="stylesheet" href="assets/dist/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="assets/css/base.css?v={{ timestamp }}" />
|
||||
<link rel="stylesheet"
|
||||
href="assets/css/theme/{{ theme }}.css?v={{ timestamp }}" />
|
||||
</head>
|
||||
<body>
|
||||
<nav class="navbar navbar-expand-md py-3 navbar-light" id="mainNav">
|
||||
<div class="container">
|
||||
<div class="row d-lg-flex align-items-lg-center">
|
||||
<div class="col p-0">
|
||||
<a href="/">
|
||||
<div id="smallLogoContainer"></div>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col d-flex">
|
||||
<a class="navbar-brand d-flex align-items-center" href="/">
|
||||
<p class="mb-0"
|
||||
style="line-height: 1.2rem;
|
||||
color: var(--bs-tertiary-color)">
|
||||
<span class="ps-2 fancy-text-primary"><span style="color: rgb(35, 35, 35)">Private.coffee</span></span>
|
||||
<br class="that-br" />
|
||||
<span class="ps-2 slogan">Empowering Privacy with Open Source</span>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="navbar" id="navcol-1">
|
||||
<ul class="navbar-nav mx-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/index.html">Home</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://status.private.coffee/">Status</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="btn btn-primary shadow navbar-btn"
|
||||
role="button"
|
||||
href="/membership.html">JOIN & SUPPORT</a>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
{% if warning %}{{ warning|safe }}{% endif %}
|
||||
{% block content %}{% endblock %}
|
||||
<footer class="bg-primary-gradient">
|
||||
<div class="container py-4 py-lg-5">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column">
|
||||
<h3 class="fs-6 fw-bold">Legal Stuff</h3>
|
||||
<ul class="list-unstyled">
|
||||
<li>
|
||||
<a href="/legal.html">Legal Notice</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/privacy.html">Privacy Notice</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/terms.html">Terms of Service</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column"></div>
|
||||
<div class="col-lg-3 text-center text-lg-start d-flex flex-column align-items-center order-first align-items-lg-start order-lg-last">
|
||||
<div class="fw-bold d-flex align-items-center mb-2">
|
||||
<span class="bs-icon-sm bs-icon-circle bs-icon-primary d-flex justify-content-center align-items-center bs-icon me-2">{{ "coffee" | icon | safe }}</span><span>Private.coffee</span>
|
||||
</div>
|
||||
<p class="text-muted">
|
||||
Private.coffee is a privacy-focused non-profit association,
|
||||
dedicated to supporting privacy and digital sovereignty.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="text-muted d-flex justify-content-between align-items-center pt-3">
|
||||
<p class="mb-0">Made with ❤️ and ☕ by Private.coffee</p>
|
||||
<p class="mb-0">
|
||||
<a href="https://git.private.coffee/privatecoffee/privatecoffee-website">
|
||||
<img src="https://shields.private.coffee/gitea/last-commit/privatecoffee/privatecoffee-website?gitea_url=https://git.private.coffee&logo=forgejo" />
|
||||
</a>
|
||||
<a href="https://pride.coffee">{{ "rainbow" | icon | safe }}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
|
@ -1,29 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Bridges and bots</title>
|
||||
</head>
|
||||
<body>
|
||||
<div style="font-family: Arial, sans-serif;
|
||||
background-color: #f2f2f2;
|
||||
color: #333;
|
||||
line-height: 1.6;
|
||||
padding: 20px;
|
||||
max-width: 600px;
|
||||
margin: auto">
|
||||
<h2 style="color: #333;">Bridges and bots</h2>
|
||||
<p>These are the bridges and bots available to Private.coffee Matrix users:</p>
|
||||
<ul style="list-style: none; padding: 0;">
|
||||
{% for bridge in bridges.bridges %}
|
||||
<li style="padding: 8px 0;">
|
||||
<a style="color: #1a5dab;
|
||||
text-decoration: none"
|
||||
href="https://matrix.pcof.fi/#/{{ bridge.mxid }}">{{ bridge.name }}</a> - {{ bridge.mxid }}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,168 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}Home{% endblock title %}
|
||||
{% block content
|
||||
%}
|
||||
<header class="bg-primary-gradient">
|
||||
<div class="container pt-4 pt-xl-5 pb-4 pb-xl-5">
|
||||
<div class="row gy-5 pt-5">
|
||||
<div class="col-md-8 col-xl-6 text-center text-md-start mx-auto">
|
||||
<div class="text-center">
|
||||
<h2>Empowering Privacy with Open Source</h2>
|
||||
</div>
|
||||
<p class="text-center special-header fancy-text-primary mb-0"
|
||||
style="font-weight: 500">Private.coffee</p>
|
||||
</div>
|
||||
<div class="col-12 col-lg-10 mx-auto justify-content-center d-flex">
|
||||
<div id="logoContainer"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<section class="bg-white">
|
||||
<div class="container bg-white py-5">
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-xl-6 text-center mx-auto">
|
||||
<p class="fw-bold mb-2 text-primary">Our self-hosted Services</p>
|
||||
<h3 class="fw-bold">
|
||||
Private.coffee provides a collection of services that respect your
|
||||
privacy.
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="py-5 p-lg-5">
|
||||
<div class="accordion">
|
||||
{% for service in services.services %}
|
||||
{% if not
|
||||
service.exclude_from_index %}
|
||||
<details class="accordion-item">
|
||||
<summary class="accordion-header">
|
||||
{% if service.icon %}
|
||||
<div class="bs-icon-lg d-flex justify-content-center align-items-center bs-icon"
|
||||
title="{{ service.name }}">{{ service.icon | icon | safe }}</div>
|
||||
{% endif %}
|
||||
{{ service.name }}
|
||||
{% if service.tiny_description %}
|
||||
- {{
|
||||
service.tiny_description }}
|
||||
{% endif %}
|
||||
{% if service.homemade %}
|
||||
<a href="{{ service.homemade }}">
|
||||
<div class="bs-icon-sm bs-icon-circle bs-icon-primary shadow d-flex flex-shrink-0 justify-content-center align-items-center d-inline-block bs-icon bs-icon-sm homemade"
|
||||
title="Made by Private.coffee">{{ "coffee" | icon | safe }}</div>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if service.fork %}
|
||||
<a href="{{ service.fork }}">
|
||||
<div class="bs-icon-sm bs-icon-circle bs-icon-primary shadow d-flex flex-shrink-0 justify-content-center align-items-center d-inline-block bs-icon bs-icon-sm fork"
|
||||
title="Runs on a fork of the original software">{{ "git-branch" | icon | safe }}</div>
|
||||
</a>
|
||||
{% endif %}
|
||||
</summary>
|
||||
<div class="accordion-body">
|
||||
<p class="text-muted card-text mb-4">{{ service.long_description }}</p>
|
||||
{% for link in service.links %}
|
||||
{% if link.alternatives %}
|
||||
<div class="button-wrapper dropdown">
|
||||
<div class="btn btn-primary w-100 shadow">
|
||||
<a class="main-link" href="{{ link.url }}">{{ link.name }}</a>
|
||||
<div class="dropdown-toggle-area">▼</div>
|
||||
</div>
|
||||
<div class="dropdown-content">
|
||||
{% for alternative in link.alternatives %}<a href="{{ alternative.url }}">{{ alternative.name }}</a>{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<a class="button-wrapper btn btn-primary shadow w-100 text-center"
|
||||
href="{{ link.url }}">{{ link.name }}</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</details>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="bg-primary-gradient">
|
||||
<div class="container py-5">
|
||||
<div class="row align-items-center">
|
||||
<div class="col">
|
||||
<p class="text-end special-header fancy-text-primary mb-0">Privacy</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<p class="text-start mb-1" style="font-size: 1.6rem">
|
||||
from the <strong>community</strong>
|
||||
</p>
|
||||
<p class="text-start mb-0" style="font-size: 1.6rem">
|
||||
for the <strong>community</strong>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mx-auto" style="max-width: 900px">
|
||||
<div class="row row-cols-1 row-cols-md-2 d-flex justify-content-center">
|
||||
<div class="col mb-4">
|
||||
<div class="card bg-primary-subtle">
|
||||
<div class="card-body text-center px-4 py-5 px-md-5">
|
||||
<p class="fw-bold text-primary card-text mb-2">Join or donate</p>
|
||||
<h5 class="fw-bold card-title mb-3">Be a part of the open source community!</h5>
|
||||
<a class="btn btn-primary btn-sm" href="/membership.html">Learn more</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col mb-4">
|
||||
<div class="card bg-secondary-subtle">
|
||||
<div class="card-body text-center px-4 py-5 px-md-5">
|
||||
<p class="fw-bold text-secondary card-text mb-2">Private Hosting</p>
|
||||
<h5 class="fw-bold card-title mb-3">Interested in Hosting Services?</h5>
|
||||
<a class="btn btn-secondary btn-sm" href="mailto:support@private.coffee">Get in touch</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="py-5">
|
||||
<div class="container">
|
||||
<div class="row mb-5">
|
||||
<div class="col-md-8 col-xl-6 text-center mx-auto">
|
||||
<p class="fw-bold mb-2 text-primary">Contacts</p>
|
||||
<h2 class="fw-bold">How you can reach us</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row d-flex justify-content-center">
|
||||
<div class="col-md-4 col-xl-4 d-flex justify-content-center justify-content-xl-start">
|
||||
<div class="d-flex flex-wrap flex-md-column justify-content-md-start align-items-md-start h-100">
|
||||
<div class="d-flex align-items-center p-3">
|
||||
<div class="bs-icon-md bs-icon-circle bs-icon-primary shadow d-flex flex-shrink-0 justify-content-center align-items-center d-inline-block bs-icon bs-icon-md">
|
||||
{{ "envelope" | icon | safe }}
|
||||
</div>
|
||||
<div class="px-2">
|
||||
<h6 class="fw-bold mb-0">Email</h6>
|
||||
<p class="text-muted mb-0">support@private.coffee</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row d-flex justify-content-center">
|
||||
<div class="col-md-4 col-xl-4 d-flex justify-content-center justify-content-xl-start">
|
||||
<div class="d-flex flex-wrap flex-md-column justify-content-md-start align-items-md-start h-100">
|
||||
<div class="d-flex align-items-center p-3">
|
||||
<div class="bs-icon-md bs-icon-circle bs-icon-primary shadow d-flex flex-shrink-0 justify-content-center align-items-center d-inline-block bs-icon bs-icon-md">
|
||||
{{ "matrix-logo" | icon | safe }}
|
||||
</div>
|
||||
<div class="px-2">
|
||||
<h6 class="fw-bold mb-0">Matrix</h6>
|
||||
<p class="text-muted mb-0">
|
||||
<a href="https://matrix.pcof.fi/#/#private.coffee:private.coffee">#private.coffee:private.coffee</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endblock content %}
|
|
@ -1,43 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}Legal Notice{% endblock title %}
|
||||
{% block content %}
|
||||
<section>
|
||||
<div class="container py-5">
|
||||
<div class="row align-items-center">
|
||||
<div class="col">
|
||||
<p class="text-end special-header fancy-text-primary mb-0">Legal Notice</p>
|
||||
</div>
|
||||
<div class="col">
|
||||
<p class="text-start mb-1" style="font-size: 1.6rem">
|
||||
from the <strong>community</strong>
|
||||
</p>
|
||||
<p class="text-start mb-0" style="font-size: 1.6rem">
|
||||
for the <strong>community</strong>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<p>This is a legal notice for the website private.coffee</p>
|
||||
<p>The website private.coffee is run by the following entity:</p>
|
||||
<address>
|
||||
Private.coffee ‐ Verein zur Förderung von Privatsphäre und
|
||||
digitaler Souveränität
|
||||
<br />
|
||||
c/o Klaus-Uwe Mitterer
|
||||
<br />
|
||||
Gartengasse 22/7/3
|
||||
<br />
|
||||
8010 Graz
|
||||
<br />
|
||||
Austria
|
||||
<br />
|
||||
</address>
|
||||
<p>Central Register of Associations (ZVR) Number: 1758485319</p>
|
||||
<p>
|
||||
Email:
|
||||
<a href="mailto:support@private.coffee">support@private.coffee</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{% endblock content %}
|
|
@ -1,11 +0,0 @@
|
|||
{% extends "membership.html" %}
|
||||
{% block serviceinfo %}
|
||||
<div class="alert alert-info">
|
||||
<p>
|
||||
<strong>Welcome to Private.coffee!</strong> Rallly Pro is free for all logged-in users. Upon first login, it may take up to five minutes for your account to be upgraded. If you have any issues, please contact us at <a href="mailto:support@private.coffee">support@private.coffee</a>
|
||||
</p>
|
||||
<p>
|
||||
If you find our services useful, please consider supporting us through a donation or becoming a supporting member. This will help us keep our free services running and improve our offerings. See below for more information.
|
||||
</p>
|
||||
</div>
|
||||
{% endblock serviceinfo %}
|
|
@ -1,115 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}
|
||||
Membership / Donations
|
||||
{% endblock title %}
|
||||
{% block content %}
|
||||
<div class="container my-5">
|
||||
<div class="text-center mb-5">
|
||||
<h1 class="special-header fancy-text-primary">Membership/Donations</h1>
|
||||
<p class="lead">
|
||||
Private.coffee is a non-profit organization dedicated to supporting
|
||||
privacy and digital sovereignty. We fund our activities and running
|
||||
infrastructure costs through membership fees. Donations allow us to expand
|
||||
our services and reach more people.
|
||||
</p>
|
||||
</div>
|
||||
{% block serviceinfo %}{% endblock serviceinfo %}
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-4">
|
||||
<div class="card shadow-sm">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Membership</h5>
|
||||
<p class="card-text">
|
||||
Membership fees help cover the costs of our day-to-day activities,
|
||||
server infrastructure, domain names, and other running operating
|
||||
expenses. This allows us to provide services to our members and the
|
||||
public.
|
||||
</p>
|
||||
<p class="card-text">Membership starts at € 5 / month!</p>
|
||||
<a href="https://pcof.fi/join" class="btn btn-primary">Join us now!</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 mb-4">
|
||||
<div class="card shadow-sm">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Bank Donations</h5>
|
||||
<p class="card-text">
|
||||
Even if you're not a member, you can still support us by making a
|
||||
direct donation to our bank account. Your donation will be used to
|
||||
fund our activities and expand our services.
|
||||
</p>
|
||||
<p class="card-text">
|
||||
<b>Account holder:</b> Private.coffee
|
||||
</p>
|
||||
<p class="card-text">
|
||||
<b>IBAN:</b> AT35 2081 5000 4554 0812
|
||||
</p>
|
||||
<p class="card-text">
|
||||
<b>BIC:</b> STSPAT2GXXX
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 mb-4">
|
||||
<div class="card shadow-sm">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Crypto Donations</h5>
|
||||
<p class="card-text">
|
||||
While our expenses are generally in fiat currency, we accept
|
||||
donations in cryptocurrencies, too.
|
||||
</p>
|
||||
<p class="card-text">
|
||||
<b>Bitcoin (BTC):</b>
|
||||
<code>bc1qnu7r5sed4afacfpgx5za8hsyhaj4rs45dpm26k</code>
|
||||
</p>
|
||||
<p class="card-text">
|
||||
<b>Monero (XMR):</b>
|
||||
<code>487Ny4iBk2pKGJwjyYrumFD8xFmrS6jCSXNA8e5EvVJ49GyS54CRDVz514MBnXgNT1EioKYiagHs33sLzUAFj8i3Pwg3AMS</code>
|
||||
</p>
|
||||
<p class="card-text">
|
||||
<b>Ethereum (ETH):</b> <code>Coming soon™</code>
|
||||
</p>
|
||||
<p class="card-text">
|
||||
If your client supports OpenAlias, you can just send your donation
|
||||
to <code>private.coffee</code>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card shadow-sm mt-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Transparency Report for {{ finances_period }}</h5>
|
||||
<p class="card-text">
|
||||
We believe in transparency and accountability. Below is a summary of our
|
||||
income and expenses for the last month, so you can see how your
|
||||
donations are being used.
|
||||
</p>
|
||||
<div class="table-responsive">{{ finances|safe }}</div>
|
||||
<p class="card-text">
|
||||
Want to know how we got here? Check out all of our
|
||||
<a href="/transparency.html">transparency reports</a> for more
|
||||
information.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card shadow-sm mt-4">
|
||||
<div class="card-body">
|
||||
<h5>Central Register of Associations (ZVR) Number: 1758485319</h5>
|
||||
<p>
|
||||
Our statutes can be found in our Git
|
||||
<a href="https://git.private.coffee/PrivateCoffee/statuten">in German (legally binding)</a>
|
||||
and
|
||||
<a href="https://git.private.coffee/PrivateCoffee/Statuten/src/branch/english">in English</a>.
|
||||
</p>
|
||||
<p class="contact-info" id="contact-info">
|
||||
Interested in joining the association? Reach out via
|
||||
<a href="mailto:support@private.coffee">email</a> or
|
||||
<a href="https://matrix.pcof.fi/#/#private.coffee:private.coffee">Matrix</a>
|
||||
for more information.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock content %}
|
|
@ -1,188 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}Privacy Policy{% endblock %}
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="text-center mb-5">
|
||||
<h1 class="special-header fancy-text-primary">Privacy Policy</h1>
|
||||
<p class="lead">
|
||||
This is the privacy policy for the website private.coffee. It describes
|
||||
how we collect and use your personal data.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<p>
|
||||
This privacy policy is effective as of 2024-04-26. It may be updated from
|
||||
time to time, so please check back regularly.
|
||||
</p>
|
||||
<p>
|
||||
If you have any questions about this privacy policy, please contact us at
|
||||
<a href="mailto:support@private.coffee">support@private.coffee</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>Who are we?</h2>
|
||||
<p>The data controller for private.coffee is:</p>
|
||||
<address>
|
||||
Private.coffee ‐ Verein zur Förderung von Privatsphäre und digitaler
|
||||
Souveränität
|
||||
<br />
|
||||
c/o Klaus-Uwe Mitterer
|
||||
<br />
|
||||
Gartengasse 22/7/3
|
||||
<br />
|
||||
8010 Graz
|
||||
<br />
|
||||
Austria
|
||||
<br />
|
||||
</address>
|
||||
<p>Central Register of Associations (ZVR) Number: 1758485319</p>
|
||||
<p>
|
||||
Email:
|
||||
<a href="mailto:support@private.coffee">support@private.coffee</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>What data do we collect?</h2>
|
||||
<p>We collect the following data from you:</p>
|
||||
<ul>
|
||||
<li>
|
||||
Your IP address, which is automatically collected by our web server for
|
||||
some of our services.
|
||||
</li>
|
||||
<li>
|
||||
Any data you provide to us, such as your email address, when you create
|
||||
an account on one of our services.
|
||||
</li>
|
||||
<li>
|
||||
Usage data that is collected automatically by our services, such as the
|
||||
time you last logged in, or the number of times you have logged in, as
|
||||
well as any content you create using our services.
|
||||
</li>
|
||||
<li>
|
||||
Any information, including personal data and payment information, that
|
||||
you provide to us when you make a donation or join our association.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>How do we use your data?</h2>
|
||||
<p>
|
||||
We use your data to provide you with the services you requested. This
|
||||
includes:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Communication between our web server and your browser</li>
|
||||
<li>Storing your preferences or your created content</li>
|
||||
<li>Detection of abuse or resource exhaustion on our servers</li>
|
||||
<li>Providing support to you</li>
|
||||
<li>Processing donations and memberships</li>
|
||||
</ul>
|
||||
<p>All of those are what is called "legitimate interests" in legal speak.</p>
|
||||
<p>
|
||||
We do not use your data for any other purposes, including marketing,
|
||||
advertising, or tracking, we do not share your data with third parties
|
||||
(unless required by law), we do not use your data to create profiles or
|
||||
make automated decisions, and we do not cross-reference your data between
|
||||
different services or any other sources.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>Where do we store your data?</h2>
|
||||
<p>
|
||||
We store your data on our web servers, which are located in Austria. We
|
||||
also use servers in Germany, but those are not public-facing and do not
|
||||
store or process any personal data.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>How long do we store your data?</h2>
|
||||
<ul>
|
||||
<li>
|
||||
IP addresses collected by our web server are stored for up to 48 hours.
|
||||
After that, the log files that contain them are deleted automatically.
|
||||
</li>
|
||||
<li>
|
||||
Data associated with an account you have on one of our services is
|
||||
stored for as long as you have an account on that service. If you delete
|
||||
your account, your data will be deleted automatically. The service will
|
||||
have a dedicated privacy policy, please consult that if you have any
|
||||
specific questions.
|
||||
</li>
|
||||
<li>
|
||||
If you send a support request to us, we will store your email address
|
||||
and any other data you provide to us for up to 30 days in our support
|
||||
system. After that, the data will be deleted automatically.
|
||||
</li>
|
||||
<li>
|
||||
Data associated with a donation is stored for as long as required by
|
||||
law, which is currently 7 years in Austria. After that, the data will be
|
||||
deleted.
|
||||
</li>
|
||||
<li>
|
||||
Data associated with a membership is stored for as long as you are a
|
||||
member of our association. If you leave the association, your data will
|
||||
be deleted automatically. This does not apply to data that is required
|
||||
by law to be stored for a longer period of time, such as financial
|
||||
records, which are stored for 7 years regardless of your membership
|
||||
status.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>What are your data protection rights?</h2>
|
||||
<p>You have the following data protection rights:</p>
|
||||
<ul>
|
||||
<li>You have the right to request access to your personal data.</li>
|
||||
<li>You have the right to request correction of your personal data.</li>
|
||||
<li>You have the right to request erasure of your personal data.</li>
|
||||
<li>
|
||||
You have the right to request restriction of processing of your personal
|
||||
data.
|
||||
</li>
|
||||
<li>You have the right to object to processing of your personal data.</li>
|
||||
<li>You have the right to request transfer of your personal data.</li>
|
||||
</ul>
|
||||
<p>If you make a request, we have one month to respond to you.</p>
|
||||
<p>
|
||||
If you would like to exercise any of these rights, please contact us at
|
||||
<a href="mailto:support@private.coffee">support@private.coffee</a>.
|
||||
</p>
|
||||
<p>
|
||||
Your privacy is important to us - after all, that's why we're all here -
|
||||
and we will do our best to respond to your request as soon as possible.
|
||||
Please note that we may need to verify your identity before we can respond
|
||||
to your request - we will not share your data with anyone else.
|
||||
</p>
|
||||
<p>
|
||||
If you are not satisfied with our response, or believe that we are
|
||||
processing your data in a way that is not compliant with the law, you have
|
||||
the right to lodge a complaint with the supervisory authority in your
|
||||
country. In Austria, this is the Austrian Data Protection Authority (<a href="https://www.dsb.gv.at/">https://www.dsb.gv.at/</a>). However, we like to think of ourselves as nice people and will try to
|
||||
help you out directly, and are always open to suggestions for improvement,
|
||||
so please do get in touch with us if you have any questions or concerns.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>What are cookies?</h2>
|
||||
<p>
|
||||
Cookies are small text files that are placed on your computer or mobile
|
||||
device when you visit a website. They are widely used to make websites
|
||||
work, or work more efficiently, as well as to provide information to the
|
||||
owners of the site. Cookies are stored on your device, and can be accessed
|
||||
by the website that created them. They are not harmful to your device, and
|
||||
do not directly contain any personal data, but are used by our services to
|
||||
identify you between multiple visits.
|
||||
</p>
|
||||
<p>
|
||||
Cookies are used on some of our services to provide you with a better
|
||||
experience. For example, we use cookies to remember your preferences and
|
||||
settings - for example, to allow you to login to our services - and to
|
||||
provide you with a better experience when browsing our services. We do not
|
||||
use cookies to track your activity, either on our services or on other
|
||||
websites. In legal/technical terms, we exclusively use "strictly
|
||||
necessary" first-party cookies, which is also why you don't see any cookie
|
||||
banners on our website.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -1,60 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Private.coffee</title>
|
||||
</head>
|
||||
<body>
|
||||
<div style="font-family: Arial, sans-serif;
|
||||
background-color: #f2f2f2;
|
||||
color: #333;
|
||||
line-height: 1.6;
|
||||
padding: 20px;
|
||||
max-width: 600px;
|
||||
margin: auto">
|
||||
<h2 style="color: #333;">Welcome to Private.coffee</h2>
|
||||
<p>Thanks for using our Element instance! Now, why don't you join our rooms?</p>
|
||||
<ul style="list-style: none; padding: 0;">
|
||||
<li style="padding: 8px 0;">
|
||||
<a style="color: #1a5dab;
|
||||
text-decoration: none"
|
||||
href="https://element.private.coffee/#/#coffeespace:private.coffee">#coffeespace:private.coffee</a> - The Private.coffee Space, containing all rooms
|
||||
</li>
|
||||
<li style="padding: 8px 0;">
|
||||
<a style="color: #1a5dab;
|
||||
text-decoration: none"
|
||||
href="https://element.private.coffee/#/#private.coffee:private.coffee">#private.coffee:private.coffee</a> - General support for our services
|
||||
</li>
|
||||
<li style="padding: 8px 0;">
|
||||
<a style="color: #1a5dab;
|
||||
text-decoration: none"
|
||||
href="https://element.private.coffee/#/#matrix:private.coffee">#matrix:private.coffee</a> - Support for our Matrix server
|
||||
</li>
|
||||
<li style="padding: 8px 0;">
|
||||
<a style="color: #1a5dab;
|
||||
text-decoration: none"
|
||||
href="https://element.private.coffee/#/#coffeebreak:private.coffee">#coffeebreak:private.coffee</a> - ☕ Coffee Break ☕ - our off-topic room
|
||||
</li>
|
||||
</ul>
|
||||
<hr>
|
||||
<p>Private.coffee operates a collection of services that respect your privacy, here are some others:</p>
|
||||
<ul style="list-style: none; padding: 0;">
|
||||
{% for service in services.services %}
|
||||
{% if not service.exclude_from_simple %}
|
||||
<li style="padding: 8px 0;">
|
||||
<a style="color: #1a5dab;
|
||||
text-decoration: none"
|
||||
href="{{ service.url }}">{{ service.name }}</a> - {{ service.short_description }}
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<p>
|
||||
For hosting inquiries for privacy-related, social, or wholesome projects, <a href="mailto:support@private.coffee"
|
||||
style="color: #1a5dab;
|
||||
text-decoration: none">get in touch</a>!
|
||||
</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,160 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}Terms of Service{% endblock %}
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="text-center mb-5">
|
||||
<h1 class="special-header fancy-text-primary">Terms of Service</h1>
|
||||
<p class="lead">
|
||||
These are the terms of service for the website private.coffee and all
|
||||
services provided under this domain and its subdomains. Please read them
|
||||
carefully.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>1. Who are we?</h2>
|
||||
<p>The website private.coffee is run by:</p>
|
||||
<address>
|
||||
Private.coffee ‐ Verein zur Förderung von Privatsphäre und digitaler
|
||||
Souveränität
|
||||
<br />
|
||||
c/o Klaus-Uwe Mitterer
|
||||
<br />
|
||||
Gartengasse 22/7/3
|
||||
<br />
|
||||
8010 Graz
|
||||
<br />
|
||||
Austria
|
||||
<br />
|
||||
</address>
|
||||
<p>Central Register of Associations (ZVR) Number: 1758485319</p>
|
||||
<p>
|
||||
Email:
|
||||
<a href="mailto:support@private.coffee">support@private.coffee</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>2. What services do we provide?</h2>
|
||||
<p>
|
||||
The website private.coffee provides a collection of services that respect
|
||||
your privacy. These services include:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Information about the Private.coffee association</li>
|
||||
<li>
|
||||
Proxy servers to several proprietary services (like YouTube, Twitter,
|
||||
etc.)
|
||||
</li>
|
||||
<li>Matrix server</li>
|
||||
<li>etc.</li>
|
||||
</ul>
|
||||
<p>
|
||||
You can find more information about these services on the
|
||||
<a href="/">main page</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>3. What are your obligations?</h2>
|
||||
<p>
|
||||
a. We provide these services to you for free. In return, we ask you to
|
||||
respect our terms of service. If you do not respect our terms of service, we
|
||||
reserve the right to terminate your account and delete your data.
|
||||
</p>
|
||||
<p>
|
||||
b. We hope that our community will be diverse, respectful and friendly. As
|
||||
such, any form of harassment, bullying, or abuse will not be tolerated. If
|
||||
you are found to be harassing, bullying, or abusing other users, spreading
|
||||
hate, lies or misinformation, we will terminate your account and delete your
|
||||
data. Note that we may and will report you to the appropriate authorities if
|
||||
we find your actions to be illegal. If you find yourself on the receiving
|
||||
end of harassment, bullying, or abuse, please report it to us as soon as
|
||||
possible.
|
||||
</p>
|
||||
<p>
|
||||
c. You are responsible for your own actions and any content you post on our
|
||||
services.
|
||||
</p>
|
||||
<p>
|
||||
d. You are responsible for keeping your passwords, devices, private keys,
|
||||
etc., secure. If you lose access, we may not be able to recover your data.
|
||||
If third parties gain access to your account, we will not be able to prevent
|
||||
them from accessing your data or restore any data that was lost.
|
||||
</p>
|
||||
<p>
|
||||
e. You are required to follow the laws governing our platform (especially
|
||||
the laws of Austria and the European Union) as well as any laws or
|
||||
regulations that apply to you personally. If you are found to be violating
|
||||
the law, we will terminate your account and delete your data. If we are
|
||||
required to do so by law, we will also report you to the authorities, or
|
||||
cooperate with the authorities in any way necessary.
|
||||
</p>
|
||||
<p>
|
||||
f. You are responsible for any damage you cause to our services or other
|
||||
users. This includes, but is not limited to, denial of service attacks,
|
||||
spamming, etc. If you are found to be causing damage to our services or
|
||||
other users, we will terminate your account and delete your data. We may
|
||||
also report you to the appropriate authorities and request compensation for
|
||||
any damage you caused, including legal fees.
|
||||
</p>
|
||||
<p>
|
||||
g. If you are a minor, you may be legally required to have a parent's or
|
||||
guardian's permission to use our services. Unless otherwise stated, our
|
||||
services are not intended for minors.
|
||||
</p>
|
||||
<p>
|
||||
h. In the end, this is our platform, and you are our guest. We reserve the
|
||||
right to terminate your account and delete your data at any time for any
|
||||
reason. We will try to give you as much notice as possible before doing so,
|
||||
but we are not required to do so.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>4. What are our obligations?</h2>
|
||||
<p>
|
||||
a. We will do our best to provide you with a stable and reliable service.
|
||||
However, we cannot guarantee that our services will be available at all
|
||||
times. We may need to take our services offline for maintenance or other
|
||||
reasons. In case of scheduled outages, will try to give you as much notice
|
||||
as possible.
|
||||
</p>
|
||||
<p>
|
||||
b. We will do our best to keep your data secure. However, we cannot
|
||||
guarantee that your data will be secure at all times. We will do our best to
|
||||
prevent unauthorized access to your data, but we cannot guarantee that we
|
||||
will be able to do so. If we become aware of any unauthorized access to your
|
||||
data, we will notify you as soon as possible and take all reasonable steps
|
||||
to prevent further unauthorized access. However, we are not responsible for
|
||||
any damage that may result from unauthorized access to your data.
|
||||
</p>
|
||||
<p>
|
||||
c. We will do our best to prevent data loss. However, we cannot guarantee
|
||||
that your data will not be lost at any time. We will do our best to prevent
|
||||
data loss, but we cannot guarantee that we will be able to do so. If we
|
||||
become aware of any data loss, we will take all reasonable steps to restore
|
||||
your data. If we are unable to restore your data, we are not responsible for
|
||||
any damage that may result from the loss of your data.
|
||||
</p>
|
||||
<p>
|
||||
d. We will do our best to keep our services available free of charge. If at
|
||||
any time we decide to cease our operations, or start charging for our
|
||||
services, we will give you as much notice as possible. We will also try to
|
||||
find a suitable replacement for our services and, where possible, help you
|
||||
migrate your data to the new service.
|
||||
</p>
|
||||
<p>
|
||||
e. We commit to providing you with a service that respects your privacy. We
|
||||
will not sell your data to third parties, and we will not use your data for
|
||||
any purpose other than providing you with our services. We will not share
|
||||
your data with third parties unless we are required to do so by law.
|
||||
</p>
|
||||
<p>
|
||||
f. We commit to keeping our community diverse, respectful and friendly. As
|
||||
such, we will actively monitor and moderate our community. We will not
|
||||
tolerate any form of harassment, bullying, or abuse. If we become aware of
|
||||
any harassment, bullying, or abuse, we will take all reasonable steps to
|
||||
prevent it from continuing. If we are unable to prevent it from continuing,
|
||||
we will terminate the accounts of the users involved and delete their data.
|
||||
We may also report the users involved to the appropriate authorities.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -1,24 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}Membership / Donations{% endblock %}
|
||||
{% block content %}
|
||||
<div class="container my-5">
|
||||
<div class="text-center mb-5">
|
||||
<h1 class="special-header fancy-text-primary">Transparency</h1>
|
||||
<p class="lead">
|
||||
Private.coffee is funded by its members and donations. We believe in
|
||||
transparency and accountability. Below you can find financial reports for
|
||||
each month since our inception.
|
||||
</p>
|
||||
</div>
|
||||
{% for year, year_data in finances.items() %}
|
||||
{% for month, month_data in year_data.items() %}
|
||||
<div class="card shadow-sm mt-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Transparency Report for {{ month|month_name }} {{ year }}</h5>
|
||||
<div class="table-responsive">{{ month_data|safe }}</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endblock %}
|
321
terms.html
Normal file
321
terms.html
Normal file
|
@ -0,0 +1,321 @@
|
|||
<!DOCTYPE html>
|
||||
<html data-bs-theme="light" lang="en">
|
||||
<!-- This file was created as part of the Private.coffee project
|
||||
It is licensed under the MIT license
|
||||
For more information, please visit https://private.coffee -->
|
||||
|
||||
<head>
|
||||
<meta charset="utf8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, shrink-to-fit=no"
|
||||
/>
|
||||
<meta
|
||||
name="description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta
|
||||
name="keywords"
|
||||
content="privacy, digital sovereignty, non-profit, association, privacy-focused"
|
||||
/>
|
||||
<meta name="author" content="Private.coffee" />
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Private.coffee - Empowering Privacy with Open Source"
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://private.coffee/" />
|
||||
<meta
|
||||
property="og:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png"
|
||||
/>
|
||||
<meta property="og:site_name" content="Private.coffee" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:title" content="Private.coffee" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta
|
||||
name="twitter:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png"
|
||||
/>
|
||||
<link rel="icon" type="image/png" href="assets/img/logo_inv_grad.png" />
|
||||
<title>Terms of Service - Private.coffee</title>
|
||||
<link rel="stylesheet" href="assets/dist/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="assets/css/base.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-expand-md py-3 navbar-light" id="mainNav">
|
||||
<div class="container">
|
||||
<div class="row d-lg-flex align-items-lg-center">
|
||||
<div class="col p-0">
|
||||
<a href="/"
|
||||
><img src="assets/img/logo-inv_grad.svg" style="height: 60px"
|
||||
/></a>
|
||||
</div>
|
||||
<div class="col d-flex">
|
||||
<a class="navbar-brand d-flex align-items-center" href="/">
|
||||
<p
|
||||
class="mb-0"
|
||||
style="line-height: 1.2rem; color: var(--bs-tertiary-color)"
|
||||
>
|
||||
<span class="ps-2 fancy-text-primary"
|
||||
><span style="color: rgb(35, 35, 35)"
|
||||
>Private.coffee</span
|
||||
></span
|
||||
><br class="that-br" /><span class="ps-2 slogan"
|
||||
>Empowering Privacy with Open Source</span
|
||||
>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="navbar" id="navcol-1">
|
||||
<ul class="navbar-nav mx-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/index.html">Home</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://status.private.coffee/"
|
||||
>Status</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
<a
|
||||
class="btn btn-primary shadow navbar-btn"
|
||||
role="button"
|
||||
href="/membership.html"
|
||||
>JOIN & SUPPORT</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="alert alert-warning text-center" role="alert">
|
||||
This is a development version of the Private.coffee website. For the live
|
||||
version, please visit
|
||||
<a href="https://private.coffee" class="alert-link">https://private.coffee</a
|
||||
>.
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="text-center mb-5">
|
||||
<h1 class="special-header fancy-text-primary">Terms of Service</h1>
|
||||
<p class="lead">
|
||||
These are the terms of service for the website private.coffee and all
|
||||
services provided under this domain and its subdomains. Please read them
|
||||
carefully.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>1. Who are we?</h2>
|
||||
<p>The website private.coffee is run by:</p>
|
||||
<address>
|
||||
Private.coffee ‐ Verein zur Förderung von Privatsphäre und digitaler
|
||||
Souveränität<br />
|
||||
c/o Klaus-Uwe Mitterer<br />
|
||||
Gartengasse 22/7/3<br />
|
||||
8010 Graz<br />
|
||||
Austria<br />
|
||||
</address>
|
||||
<p>Central Register of Associations (ZVR) Number: 1758485319</p>
|
||||
<p>
|
||||
Email:
|
||||
<a href="mailto:support@private.coffee">support@private.coffee</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>2. What services do we provide?</h2>
|
||||
<p>
|
||||
The website private.coffee provides a collection of services that respect
|
||||
your privacy. These services include:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Information about the Private.coffee association</li>
|
||||
<li>
|
||||
Proxy servers to several proprietary services (like YouTube, Twitter,
|
||||
etc.)
|
||||
</li>
|
||||
<li>Matrix server</li>
|
||||
<li>etc.</li>
|
||||
</ul>
|
||||
<p>
|
||||
You can find more information about these services on the
|
||||
<a href="/">main page</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>3. What are your obligations?</h2>
|
||||
<p>
|
||||
a. We provide these services to you for free. In return, we ask you to
|
||||
respect our terms of service. If you do not respect our terms of service, we
|
||||
reserve the right to terminate your account and delete your data.
|
||||
</p>
|
||||
<p>
|
||||
b. We hope that our community will be diverse, respectful and friendly. As
|
||||
such, any form of harassment, bullying, or abuse will not be tolerated. If
|
||||
you are found to be harassing, bullying, or abusing other users, spreading
|
||||
hate, lies or misinformation, we will terminate your account and delete your
|
||||
data. Note that we may and will report you to the appropriate authorities if
|
||||
we find your actions to be illegal. If you find yourself on the receiving
|
||||
end of harassment, bullying, or abuse, please report it to us as soon as
|
||||
possible.
|
||||
</p>
|
||||
<p>
|
||||
c. You are responsible for your own actions and any content you post on our
|
||||
services.
|
||||
</p>
|
||||
<p>
|
||||
d. You are responsible for keeping your passwords, devices, private keys,
|
||||
etc., secure. If you lose access, we may not be able to recover your data.
|
||||
If third parties gain access to your account, we will not be able to prevent
|
||||
them from accessing your data or restore any data that was lost.
|
||||
</p>
|
||||
<p>
|
||||
e. You are required to follow the laws governing our platform (especially
|
||||
the laws of Austria and the European Union) as well as any laws or
|
||||
regulations that apply to you personally. If you are found to be violating
|
||||
the law, we will terminate your account and delete your data. If we are
|
||||
required to do so by law, we will also report you to the authorities, or
|
||||
cooperate with the authorities in any way necessary.
|
||||
</p>
|
||||
<p>
|
||||
f. You are responsible for any damage you cause to our services or other
|
||||
users. This includes, but is not limited to, denial of service attacks,
|
||||
spamming, etc. If you are found to be causing damage to our services or
|
||||
other users, we will terminate your account and delete your data. We may
|
||||
also report you to the appropriate authorities and request compensation for
|
||||
any damage you caused, including legal fees.
|
||||
</p>
|
||||
<p>
|
||||
g. If you are a minor, you may be legally required to have a parent's or
|
||||
guardian's permission to use our services. Unless otherwise stated, our
|
||||
services are not intended for minors.
|
||||
</p>
|
||||
<p>
|
||||
h. In the end, this is our platform, and you are our guest. We reserve the
|
||||
right to terminate your account and delete your data at any time for any
|
||||
reason. We will try to give you as much notice as possible before doing so,
|
||||
but we are not required to do so.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>4. What are our obligations?</h2>
|
||||
<p>
|
||||
a. We will do our best to provide you with a stable and reliable service.
|
||||
However, we cannot guarantee that our services will be available at all
|
||||
times. We may need to take our services offline for maintenance or other
|
||||
reasons. In case of scheduled outages, will try to give you as much notice
|
||||
as possible.
|
||||
</p>
|
||||
<p>
|
||||
b. We will do our best to keep your data secure. However, we cannot
|
||||
guarantee that your data will be secure at all times. We will do our best to
|
||||
prevent unauthorized access to your data, but we cannot guarantee that we
|
||||
will be able to do so. If we become aware of any unauthorized access to your
|
||||
data, we will notify you as soon as possible and take all reasonable steps
|
||||
to prevent further unauthorized access. However, we are not responsible for
|
||||
any damage that may result from unauthorized access to your data.
|
||||
</p>
|
||||
<p>
|
||||
c. We will do our best to prevent data loss. However, we cannot guarantee
|
||||
that your data will not be lost at any time. We will do our best to prevent
|
||||
data loss, but we cannot guarantee that we will be able to do so. If we
|
||||
become aware of any data loss, we will take all reasonable steps to restore
|
||||
your data. If we are unable to restore your data, we are not responsible for
|
||||
any damage that may result from the loss of your data.
|
||||
</p>
|
||||
<p>
|
||||
d. We will do our best to keep our services available free of charge. If at
|
||||
any time we decide to cease our operations, or start charging for our
|
||||
services, we will give you as much notice as possible. We will also try to
|
||||
find a suitable replacement for our services and, where possible, help you
|
||||
migrate your data to the new service.
|
||||
</p>
|
||||
<p>
|
||||
e. We commit to providing you with a service that respects your privacy. We
|
||||
will not sell your data to third parties, and we will not use your data for
|
||||
any purpose other than providing you with our services. We will not share
|
||||
your data with third parties unless we are required to do so by law.
|
||||
</p>
|
||||
<p>
|
||||
f. We commit to keeping our community diverse, respectful and friendly. As
|
||||
such, we will actively monitor and moderate our community. We will not
|
||||
tolerate any form of harassment, bullying, or abuse. If we become aware of
|
||||
any harassment, bullying, or abuse, we will take all reasonable steps to
|
||||
prevent it from continuing. If we are unable to prevent it from continuing,
|
||||
we will terminate the accounts of the users involved and delete their data.
|
||||
We may also report the users involved to the appropriate authorities.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="bg-primary-gradient">
|
||||
<div class="container py-4 py-lg-5">
|
||||
<div class="row justify-content-center">
|
||||
<div
|
||||
class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column"
|
||||
>
|
||||
<h3 class="fs-6 fw-bold">Legal Stuff</h3>
|
||||
<ul class="list-unstyled">
|
||||
<li><a href="/legal.html">Legal Notice</a></li>
|
||||
<li><a href="/privacy.html">Privacy Notice</a></li>
|
||||
<li><a href="/terms.html">Terms of Service</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div
|
||||
class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column"
|
||||
></div>
|
||||
<div
|
||||
class="col-lg-3 text-center text-lg-start d-flex flex-column align-items-center order-first align-items-lg-start order-lg-last"
|
||||
>
|
||||
<div class="fw-bold d-flex align-items-center mb-2">
|
||||
<span
|
||||
class="bs-icon-sm bs-icon-circle bs-icon-primary d-flex justify-content-center align-items-center bs-icon me-2"
|
||||
><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#000000" viewBox="0 0 256 256"><path d="M80,56V24a8,8,0,0,1,16,0V56a8,8,0,0,1-16,0Zm40,8a8,8,0,0,0,8-8V24a8,8,0,0,0-16,0V56A8,8,0,0,0,120,64Zm32,0a8,8,0,0,0,8-8V24a8,8,0,0,0-16,0V56A8,8,0,0,0,152,64Zm96,56v8a40,40,0,0,1-37.51,39.91,96.59,96.59,0,0,1-27,40.09H208a8,8,0,0,1,0,16H32a8,8,0,0,1,0-16H56.54A96.3,96.3,0,0,1,24,136V88a8,8,0,0,1,8-8H208A40,40,0,0,1,248,120ZM200,96H40v40a80.27,80.27,0,0,0,45.12,72h69.76A80.27,80.27,0,0,0,200,136Zm32,24a24,24,0,0,0-16-22.62V136a95.78,95.78,0,0,1-1.2,15A24,24,0,0,0,232,128Z"></path></svg></span
|
||||
><span>Private.coffee</span>
|
||||
</div>
|
||||
<p class="text-muted">
|
||||
Private.coffee is a privacy-focused non-profit association,
|
||||
dedicated to supporting privacy and digital sovereignty.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div
|
||||
class="text-muted d-flex justify-content-between align-items-center pt-3"
|
||||
>
|
||||
<p class="mb-0">Made with ❤️ and ☕ by Private.coffee</p>
|
||||
<p class="mb-0">
|
||||
<a
|
||||
href="https://git.private.coffee/privatecoffee/privatecoffee-website"
|
||||
><img
|
||||
src="https://shields.private.coffee/gitea/last-commit/privatecoffee/privatecoffee-website?gitea_url=https://git.private.coffee&logo=forgejo"
|
||||
/></a>
|
||||
<a href="https://pride.coffee"><svg xmlns="http://www.w3.org/2000/svg" width="135" height="20" role="img" aria-label="LGBTIQ+">
|
||||
<!-- This file was created as part of the Private.coffee project
|
||||
It is licensed under the MIT license
|
||||
For more information, please visit https://private.coffee -->
|
||||
<title>LGBTIQ+</title>
|
||||
<rect rx="3" width="135" height="20" fill="#555"></rect>
|
||||
<rect x="53" width="82" height="20" fill="#e05d44"></rect>
|
||||
<rect x="66.5" width="68.5" height="20" fill="#fecc00"></rect>
|
||||
<rect x="80" width="55" height="20" fill="#61c354"></rect>
|
||||
<rect x="93.5" width="41.5" height="20" fill="#007ec6"></rect>
|
||||
<rect x="107" width="28" height="20" fill="#744ca1"></rect>
|
||||
<rect x="120.5" width="14.5" height="20" rx="3" ry="3" fill="#8b00ff"></rect>
|
||||
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="8">
|
||||
<text x="27" y="15" fill="#fff">LGBTIQ+</text>
|
||||
</g>
|
||||
</svg></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
280
transparency.html
Normal file
280
transparency.html
Normal file
|
@ -0,0 +1,280 @@
|
|||
<!DOCTYPE html>
|
||||
<html data-bs-theme="light" lang="en">
|
||||
<!-- This file was created as part of the Private.coffee project
|
||||
It is licensed under the MIT license
|
||||
For more information, please visit https://private.coffee -->
|
||||
|
||||
<head>
|
||||
<meta charset="utf8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, shrink-to-fit=no"
|
||||
/>
|
||||
<meta
|
||||
name="description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta
|
||||
name="keywords"
|
||||
content="privacy, digital sovereignty, non-profit, association, privacy-focused"
|
||||
/>
|
||||
<meta name="author" content="Private.coffee" />
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Private.coffee - Empowering Privacy with Open Source"
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://private.coffee/" />
|
||||
<meta
|
||||
property="og:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png"
|
||||
/>
|
||||
<meta property="og:site_name" content="Private.coffee" />
|
||||
<meta name="twitter:card" content="summary" />
|
||||
<meta name="twitter:title" content="Private.coffee" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Private.coffee is a privacy-focused non-profit association, dedicated to supporting privacy and digital sovereignty."
|
||||
/>
|
||||
<meta
|
||||
name="twitter:image"
|
||||
content="https://private.coffee/assets/img/logo-inv_grad.png"
|
||||
/>
|
||||
<link rel="icon" type="image/png" href="assets/img/logo_inv_grad.png" />
|
||||
<title>Membership / Donations - Private.coffee</title>
|
||||
<link rel="stylesheet" href="assets/dist/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="assets/css/base.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<nav class="navbar navbar-expand-md py-3 navbar-light" id="mainNav">
|
||||
<div class="container">
|
||||
<div class="row d-lg-flex align-items-lg-center">
|
||||
<div class="col p-0">
|
||||
<a href="/"
|
||||
><img src="assets/img/logo-inv_grad.svg" style="height: 60px"
|
||||
/></a>
|
||||
</div>
|
||||
<div class="col d-flex">
|
||||
<a class="navbar-brand d-flex align-items-center" href="/">
|
||||
<p
|
||||
class="mb-0"
|
||||
style="line-height: 1.2rem; color: var(--bs-tertiary-color)"
|
||||
>
|
||||
<span class="ps-2 fancy-text-primary"
|
||||
><span style="color: rgb(35, 35, 35)"
|
||||
>Private.coffee</span
|
||||
></span
|
||||
><br class="that-br" /><span class="ps-2 slogan"
|
||||
>Empowering Privacy with Open Source</span
|
||||
>
|
||||
</p>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="navbar" id="navcol-1">
|
||||
<ul class="navbar-nav mx-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="/index.html">Home</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="https://status.private.coffee/"
|
||||
>Status</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
<a
|
||||
class="btn btn-primary shadow navbar-btn"
|
||||
role="button"
|
||||
href="/membership.html"
|
||||
>JOIN & SUPPORT</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="alert alert-warning text-center" role="alert">
|
||||
This is a development version of the Private.coffee website. For the live
|
||||
version, please visit
|
||||
<a href="https://private.coffee" class="alert-link">https://private.coffee</a
|
||||
>.
|
||||
</div>
|
||||
|
||||
<div class="container my-5">
|
||||
<div class="text-center mb-5">
|
||||
<h1 class="special-header fancy-text-primary">Transparency</h1>
|
||||
<p class="lead">
|
||||
Private.coffee is funded by its members and donations. We believe in
|
||||
transparency and accountability. Below you can find financial reports for
|
||||
each month since our inception.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="card shadow-sm mt-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Transparency Report for August 2024</h5>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-transparency">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th scope="col">Category</th>
|
||||
<th class="currency-col" scope="col">Euros (€)</th><th class="currency-col" scope="col">Bitcoin (BTC)</th><th class="currency-col" scope="col">Monero (XMR)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>Account Balance (start of month)</td><td>+ €245.47</td><td>+ 0.000434000 BTC</td><td>+ 1.447661806 XMR</td></tr><tr><td>Membership Fees</td><td>+ €325.00</td><td></td><td></td></tr><tr><td>Server Costs</td><td>- €77.28</td><td></td><td></td></tr><tr class="table-secondary"><td><b>Total Income</b></td><td><b>+ €325.00</b></td><td><b>0.000000000 BTC</b></td><td><b>0.000000000 XMR</b></td></tr><tr class="table-secondary"><td><b>Total Expenses</b></td><td><b>- €77.28</b></td><td><b>0.000000000 BTC</b></td><td><b>0.000000000 XMR</b></td></tr><tr class="table-secondary"><td><b>Account Balance (end of month)</b></td><td><b>+ €493.19</b></td><td><b>+ 0.000434000 BTC</b></td><td><b>+ 1.447661806 XMR</b></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm mt-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Transparency Report for July 2024</h5>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-transparency">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th scope="col">Category</th>
|
||||
<th class="currency-col" scope="col">Euros (€)</th><th class="currency-col" scope="col">Bitcoin (BTC)</th><th class="currency-col" scope="col">Monero (XMR)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>Account Balance (start of month)</td><td>+ €88.04</td><td>+ 0.000434000 BTC</td><td>+ 0.447661806 XMR</td></tr><tr><td>Membership Fees</td><td>+ €422.42</td><td></td><td></td></tr><tr><td>Donations</td><td></td><td></td><td>+ 1.000000000 XMR</td></tr><tr><td>Server Costs</td><td>- €264.99</td><td></td><td></td></tr><tr class="table-secondary"><td><b>Total Income</b></td><td><b>+ €422.42</b></td><td><b>0.000000000 BTC</b></td><td><b>+ 1.000000000 XMR</b></td></tr><tr class="table-secondary"><td><b>Total Expenses</b></td><td><b>- €264.99</b></td><td><b>0.000000000 BTC</b></td><td><b>0.000000000 XMR</b></td></tr><tr class="table-secondary"><td><b>Account Balance (end of month)</b></td><td><b>+ €245.47</b></td><td><b>+ 0.000434000 BTC</b></td><td><b>+ 1.447661806 XMR</b></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm mt-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Transparency Report for June 2024</h5>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-transparency">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th scope="col">Category</th>
|
||||
<th class="currency-col" scope="col">Euros (€)</th><th class="currency-col" scope="col">Bitcoin (BTC)</th><th class="currency-col" scope="col">Monero (XMR)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>Account Balance (start of month)</td><td>+ €72.29</td><td>+ 0.000434000 BTC</td><td>+ 0.447661806 XMR</td></tr><tr><td>Membership Fees</td><td>+ €382.42</td><td></td><td></td></tr><tr><td>Server Costs</td><td>- €317.62</td><td></td><td></td></tr><tr><td>Bank Fees</td><td>- €49.05</td><td></td><td></td></tr><tr class="table-secondary"><td><b>Total Income</b></td><td><b>+ €382.42</b></td><td><b>0.000000000 BTC</b></td><td><b>0.000000000 XMR</b></td></tr><tr class="table-secondary"><td><b>Total Expenses</b></td><td><b>- €366.67</b></td><td><b>0.000000000 BTC</b></td><td><b>0.000000000 XMR</b></td></tr><tr class="table-secondary"><td><b>Account Balance (end of month)</b></td><td><b>+ €88.04</b></td><td><b>+ 0.000434000 BTC</b></td><td><b>+ 0.447661806 XMR</b></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm mt-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Transparency Report for May 2024</h5>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-transparency">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th scope="col">Category</th>
|
||||
<th class="currency-col" scope="col">Euros (€)</th><th class="currency-col" scope="col">Bitcoin (BTC)</th><th class="currency-col" scope="col">Monero (XMR)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>Account Balance (start of month)</td><td>+ €112.33</td><td>0.000000000 BTC</td><td>0.000000000 XMR</td></tr><tr><td>Membership Fees</td><td>+ €390.00</td><td></td><td></td></tr><tr><td>Donations</td><td></td><td>+ 0.000434000 BTC</td><td>+ 0.447661806 XMR</td></tr><tr><td>Server Costs*</td><td>- €430.04</td><td></td><td></td></tr><tr class="table-secondary"><td><b>Total Income</b></td><td><b>+ €390.00</b></td><td><b>+ 0.000434000 BTC</b></td><td><b>+ 0.447661806 XMR</b></td></tr><tr class="table-secondary"><td><b>Total Expenses</b></td><td><b>- €430.04</b></td><td><b>0.000000000 BTC</b></td><td><b>0.000000000 XMR</b></td></tr><tr class="table-secondary"><td><b>Account Balance (end of month)</b></td><td><b>+ €72.29</b></td><td><b>+ 0.000434000 BTC</b></td><td><b>+ 0.447661806 XMR</b></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><b>Notes:</b></p><ul><li>Server Costs: Includes setup costs and two monthly payments for new server</li></ul></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow-sm mt-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">Transparency Report for April 2024</h5>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered table-transparency">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th scope="col">Category</th>
|
||||
<th class="currency-col" scope="col">Euros (€)</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>Account Balance (start of month)</td><td>€0.00</td></tr><tr><td>Membership Fees</td><td>+ €365.00</td></tr><tr><td>Server Costs</td><td>- €216.57</td></tr><tr><td>Administrative Expenses*</td><td>- €36.10</td></tr><tr class="table-secondary"><td><b>Total Income</b></td><td><b>+ €365.00</b></td></tr><tr class="table-secondary"><td><b>Total Expenses</b></td><td><b>- €252.67</b></td></tr><tr class="table-secondary"><td><b>Account Balance (end of month)</b></td><td><b>+ €112.33</b></td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p><b>Notes:</b></p><ul><li>Administrative Expenses: Administrative fee for the formation of the association</li></ul></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<footer class="bg-primary-gradient">
|
||||
<div class="container py-4 py-lg-5">
|
||||
<div class="row justify-content-center">
|
||||
<div
|
||||
class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column"
|
||||
>
|
||||
<h3 class="fs-6 fw-bold">Legal Stuff</h3>
|
||||
<ul class="list-unstyled">
|
||||
<li><a href="/legal.html">Legal Notice</a></li>
|
||||
<li><a href="/privacy.html">Privacy Notice</a></li>
|
||||
<li><a href="/terms.html">Terms of Service</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div
|
||||
class="col-sm-4 col-md-3 text-center text-lg-start d-flex flex-column"
|
||||
></div>
|
||||
<div
|
||||
class="col-lg-3 text-center text-lg-start d-flex flex-column align-items-center order-first align-items-lg-start order-lg-last"
|
||||
>
|
||||
<div class="fw-bold d-flex align-items-center mb-2">
|
||||
<span
|
||||
class="bs-icon-sm bs-icon-circle bs-icon-primary d-flex justify-content-center align-items-center bs-icon me-2"
|
||||
><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="#000000" viewBox="0 0 256 256"><path d="M80,56V24a8,8,0,0,1,16,0V56a8,8,0,0,1-16,0Zm40,8a8,8,0,0,0,8-8V24a8,8,0,0,0-16,0V56A8,8,0,0,0,120,64Zm32,0a8,8,0,0,0,8-8V24a8,8,0,0,0-16,0V56A8,8,0,0,0,152,64Zm96,56v8a40,40,0,0,1-37.51,39.91,96.59,96.59,0,0,1-27,40.09H208a8,8,0,0,1,0,16H32a8,8,0,0,1,0-16H56.54A96.3,96.3,0,0,1,24,136V88a8,8,0,0,1,8-8H208A40,40,0,0,1,248,120ZM200,96H40v40a80.27,80.27,0,0,0,45.12,72h69.76A80.27,80.27,0,0,0,200,136Zm32,24a24,24,0,0,0-16-22.62V136a95.78,95.78,0,0,1-1.2,15A24,24,0,0,0,232,128Z"></path></svg></span
|
||||
><span>Private.coffee</span>
|
||||
</div>
|
||||
<p class="text-muted">
|
||||
Private.coffee is a privacy-focused non-profit association,
|
||||
dedicated to supporting privacy and digital sovereignty.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div
|
||||
class="text-muted d-flex justify-content-between align-items-center pt-3"
|
||||
>
|
||||
<p class="mb-0">Made with ❤️ and ☕ by Private.coffee</p>
|
||||
<p class="mb-0">
|
||||
<a
|
||||
href="https://git.private.coffee/privatecoffee/privatecoffee-website"
|
||||
><img
|
||||
src="https://shields.private.coffee/gitea/last-commit/privatecoffee/privatecoffee-website?gitea_url=https://git.private.coffee&logo=forgejo"
|
||||
/></a>
|
||||
<a href="https://pride.coffee"><svg xmlns="http://www.w3.org/2000/svg" width="135" height="20" role="img" aria-label="LGBTIQ+">
|
||||
<!-- This file was created as part of the Private.coffee project
|
||||
It is licensed under the MIT license
|
||||
For more information, please visit https://private.coffee -->
|
||||
<title>LGBTIQ+</title>
|
||||
<rect rx="3" width="135" height="20" fill="#555"></rect>
|
||||
<rect x="53" width="82" height="20" fill="#e05d44"></rect>
|
||||
<rect x="66.5" width="68.5" height="20" fill="#fecc00"></rect>
|
||||
<rect x="80" width="55" height="20" fill="#61c354"></rect>
|
||||
<rect x="93.5" width="41.5" height="20" fill="#007ec6"></rect>
|
||||
<rect x="107" width="28" height="20" fill="#744ca1"></rect>
|
||||
<rect x="120.5" width="14.5" height="20" rx="3" ry="3" fill="#8b00ff"></rect>
|
||||
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="8">
|
||||
<text x="27" y="15" fill="#fff">LGBTIQ+</text>
|
||||
</g>
|
||||
</svg></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue