diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..cadf32d --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,34 @@ +# Repository Guidelines + +## Project Structure & Module Organization +- `content/` stores Pelican sources; events live in year folders, pages in `content/pages/`, and shared assets in `content/images/`. +- Site configuration resides in `pelicanconf.py` with environment-specific variants (`conf_prod.py`, `conf_preview.py`, `conf_gh_pages.py`); automation lives in `tasks.py` and the `Makefile`. +- The custom theme is under `theme/` (templates plus static files). Update assets here and keep compiled output out of version control. +- `docs/` holds authoring aids such as `event_template.rst`; `output/` is generated HTML and should be rebuilt rather than edited. + +## Build, Test, and Development Commands +- `source .venv/bin/activate` reuses the shared project virtualenv; run `python3 -m venv .venv` first if you need to recreate it locally. +- `pip install -r requirements.txt` installs Pelican, plugins, and deployment helpers. +- `make html` builds the site into `output/`; `make serve` hosts it at `http://localhost:8000` for manual review. +- `invoke livereload` watches content, theme, and config files and rebuilds as you edit. +- `invoke gh-pages` publishes a preview build to `gh-pages`; run from a clean tree. + +## Coding Style & Naming Conventions +- Follow PEP 8 with four-space indentation for Python helpers; annotate only non-obvious behaviour. +- Write content in reStructuredText. Name events `YYYY/event-name.rst`, include `:event_type:` and `:date:` (YYYY-MM-DD), and add RSVP or external URLs when relevant. +- Store shared imagery in `content/images/`; keep year folders text-only unless the asset is event-specific. + +## Testing Guidelines +- Run `make html` (or `invoke build`) before pushing; fix any Pelican warnings. +- Spot-check pages in `output/` or via `make serve`, confirming events render and metadata appears in listings. +- When editing theme templates or JS, use `invoke livereload` and test key breakpoints for layout changes. + +## Commit & Pull Request Guidelines +- Write short, present-tense imperative commits (`update who we are`, `add mastodon link`) to match existing history; keep related edits together. +- Reference the affected content in the body if context is needed (e.g., meetup slug, page path). +- PRs should summarise changes, link related events or issues, list verification steps (`make html`, manual checks), and add screenshots for layout updates. +- Confirm the branch merges cleanly and previews (if triggered) match expectations before requesting review. + +## Content Contribution Tips +- Start from `docs/event_template.rst`, update titles, slugs, and schedule fields, then move the file into the correct year directory. +- For recurring updates, duplicate the prior event file and adjust metadata to keep formatting consistent. diff --git a/content/images/gandi_black.png b/content/images/gandi_black.png new file mode 100644 index 0000000..952e72b Binary files /dev/null and b/content/images/gandi_black.png differ diff --git a/content/images/psf-logo.png b/content/images/psf-logo.png new file mode 100644 index 0000000..0a7f8e7 Binary files /dev/null and b/content/images/psf-logo.png differ diff --git a/theme/templates/includes/section_sponsors.html b/theme/templates/includes/section_sponsors.html index 44604d4..7116f38 100644 --- a/theme/templates/includes/section_sponsors.html +++ b/theme/templates/includes/section_sponsors.html @@ -1,41 +1,31 @@ -{% from 'macros/sponsors.j2' import add_sponsors with context %} - -
+
-

Our

-

Community Contributors

-

Would you like to see your name or name of your company? - Contact us! -

+

Thanks to our

+

Supporters & Sponsors

+

These partners keep PyAmsterdam running for the community.

- -
- {{ add_sponsors( - { - 'Gandi': 'Our beautiful domain registrar!', - 'Optiver': 'provided a meeting space', - 'Crunchr': 'provided a meeting space', - 'Hubs': 'provided a meeting space', - 'Picnic': 'provided a meeting space', - 'KPN': 'provided a meeting space', - 'Brookz': 'provided a meeting space', - 'Sander van de Graaf': 'Talk: Detecting Outages at Scale', - 'Dinis Louseiro': 'Data Warehouse Automation in Python', - 'Daniel Bradburn': 'Battle testing your web API using OpenAPI and hypothesis', - 'Aybars Badour': 'Practical patterns in distributed systems for mere mortals (aka. patterns for microservices)', - 'Marc Wagner': 'Using micropython in IOT devices', - 'Jan van der Vegt': 'Industrialization of Machine Learning models is a complex task.', - 'Cornelis van Lit': 'Python in digital humanities research', - 'Santiago Fraire Willemoes': 'Exploring pytest capabilties', - 'Ɓukasz Langa': 'AsyncIO + Music', - 'Eric Holscher': 'About Read The docs and The Python Software Foundation', - 'Olga Sentemova': 'Getting started with FPGA with Python', - 'Mikaeil Orfanian': 'Architecture for Everyday Programming', - 'Joost Lek': 'Python 2 vs. Python 3: How to Navigate the Change', - } - ) - }} +
+
+
+ Gandi.net logo +

Gandi.net

+

Provides our py.amsterdam domain and DNS at no cost.

+
+
+
+
+ Python Software Foundation logo +

Python Software Foundation

+

Sponsors our Meetup.com account so we can organise community events.

+
+
+
+
+

Zammad

+

Donates ticketing software that helps us support attendees and volunteers.

+
+