Skip to content

Latest commit

Β 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GrowVolution e.V.

The association's public website β€” deliberately small, and deliberately temporary.

This repository holds the website of GrowVolution e.V., a German non-profit association registered at the Amtsgericht Braunschweig under VR 202639. It runs on WebFluid, a fullstack Python runtime on top of FastAPI.

Live at https://growvolution.org.


Why it exists

This is not the association's product. It is the smallest site that discharges three obligations and one convenience:

  1. A single, citable Imprint. Everything the association publishes β€” repositories, Matrix rooms, mailing addresses, printed material β€” links to one /imprint, so the Β§ 5 DDG details live in exactly one place and change in exactly one place.
  2. A single, citable Privacy Policy. Same reasoning. /privacy covers the whole network the association operates, not just this page, and is the address every other service points at.
  3. A rough overview of what we actually do, for anyone who arrives from a link and wants to know who is behind it before reading the legal pages.
  4. The association-operating functions that are useful to have online β€” today that means donations, receipts included.

Everything beyond that is intentionally absent. When the association's actual platform is ready, this site is expected to be replaced rather than grown.


What is on it

Path What it is
/ The overview page
/imprint Impressum (Β§ 5 DDG)
/privacy DatenschutzerklΓ€rung, covering the whole network
/donations/ Donation page β€” one-off or monthly, via Stripe
/donations/validation Public check of a donation receipt's seal and integrity
/donations/admin/ Administration of the receipt seal and the donation ledger
/robots.txt, /sitemap Generated from SITE_PAGES in fluid/config.py
/.well-known/matrix/server Server delegation for the association's Matrix homeserver

The donation flow is worth a sentence, because it is the only part with real moving pieces: a donor gives once or monthly without ever creating an account, and whenever they leave a billing address with us, a ZuwendungsbestΓ€tigung on the officially prescribed form is generated, sealed with the association's own signing certificate, filed, and mailed out. The address is collected on our own page, not by the payment provider. See additives/donations-de/README.md for the whole picture and additives/donations-de/PROCESS.md for the Verfahrensdokumentation the tax office gets.


Layout

verein/
β”œβ”€β”€ main.py                  # prepare_fluid() β€” the app factory
β”œβ”€β”€ app_configs/main.ini     # secrets and switches, per deployment (gitignored)
β”œβ”€β”€ additives/               # feature modules, each its own repository (gitignored)
β”‚   β”œβ”€β”€ auth/                # login, sessions, 2FA
β”‚   β”œβ”€β”€ users/               # accounts and profiles
β”‚   β”œβ”€β”€ users-admin/         # user, role and permission administration
β”‚   └── donations-de/        # donations and German donation receipts
└── fluid/
    β”œβ”€β”€ config.py            # the app config class
    β”œβ”€β”€ api/                 # JSON routes
    β”œβ”€β”€ app/                 # HTML routes
    β”œβ”€β”€ i18n/                # translation store (de, en)
    β”œβ”€β”€ static/              # theme, logo, small scripts
    └── templates/           # base, index, imprint, privacy, base_email, sitemaps

app_configs/ and additives/ are gitignored β€” git status will not show edits in there. app_configs/main.example.ini shows the shape of the config a deployment needs.


Running it

Requires Python 3.14+ and a checkout of the additives listed above.

wf run main -d

-d is debug mode: template auto-reload, the detailed error page, the [dev] config section. Never use it for a deployment β€” that is plain wf run main. Logs land in logs/main/<timestamp>.log, one file per run.

After a model change:

wf migrate revision main -a -m "what changed"

Read the generated revision before applying it with wf migrate upgrade main.


Configuration

Everything that is not a secret lives in fluid/config.py: the association's name, address, board, register entry, contact details, the Matrix community, the theme, the sitemap and the mail colour palette. main.py exposes those as Jinja globals (association, ADDRESS, BOARD, MAIL_THEME, …), so the imprint, the privacy page and every outgoing email read them from one source.

Secrets and per-deployment switches β€” the database URI, the Redis URI, the mail credentials, the Stripe keys, the signing passphrase β€” belong in app_configs/main.ini, which is never committed.


Licensing

The code in this repository is released by GrowVolution e.V. under the GNU General Public License v3.0; see LICENSE.

The additives it runs on are not all under the same terms:

Additive Licence
auth GPL v3, maintained by GrowVolution e.V.
users All Rights Reserved, licensed to us
users-admin All Rights Reserved, licensed to us
donations-de All Rights Reserved, licensed to us

users and donations-de β€” together with users-admin, which belongs to the users ecosystem β€” are the copyright of GrowVolution Media, Inh. Pierre Schkoldow and are distributed commercially through the Ocean marketplace. The copyright holder has granted GrowVolution e.V. a free-of-charge licence to use these modules for the purpose of operating the association's website. That grant covers this use and no other: it is not a sublicence, it does not travel with a fork of this repository, and it confers no right to redistribute the modules. Anyone wanting to run them elsewhere needs their own licence β€” see the Ocean licensing overview.

Because those modules are gitignored here, a clone of this repository contains only the GPL-licensed part.


Contact

About

Temporal association site repository. ⏳️🌐

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages