Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -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.
Binary file added content/images/gandi_black.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/images/psf-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
60 changes: 25 additions & 35 deletions theme/templates/includes/section_sponsors.html
Original file line number Diff line number Diff line change
@@ -1,41 +1,31 @@
{% from 'macros/sponsors.j2' import add_sponsors with context %}
<!-- Sponsors -->
<section class="content-section bg-white" id="sponsors">
<section class="content-section bg-white" id="supporters">
<div class="container">
<div class="content-section-heading text-center">
<h3 class="text-danger mb-0">Our</h3>
<h2 >Community Contributors</h2>
<p class="mb-5">Would you like to see your name or name of your company?
<a class="scroll" href="#contact">Contact us!</a>
</p>
<h3 class="text-danger mb-0">Thanks to our</h3>
<h2>Supporters &amp; Sponsors</h2>
<p class="mb-5">These partners keep PyAmsterdam running for the community.</p>
</div>

<div class="row pt-5">
{{ add_sponsors(
{
'<a href="https://www.gandi.net">Gandi</a>': 'Our beautiful domain registrar!',
'<a href="https://www.optiver.com">Optiver</a>': 'provided a meeting space',
'<a href="https://www.crunchrapps.com">Crunchr</a>': 'provided a meeting space',
'<a href="https://www.hubs.com/">Hubs</a>': 'provided a meeting space',
'<a href="https://picnic.app">Picnic</a>': 'provided a meeting space',
'<a href="https://www.overons.kpn/en/kpn-in-the-netherlands/innovation">KPN</a>': 'provided a meeting space',
'<a href="https://www.brookz.nl">Brookz</a>': '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',
}
)
}}
<div class="row justify-content-center">
<div class="col-12 col-md-4 mb-4">
<div class="supporter-card border rounded p-4 h-100 text-center">
<img src="{{ SITEURL }}/images/gandi_black.png" alt="Gandi.net logo" class="img-fluid mb-3" style="max-height: 120px;">
<h3 class="h5"><a href="https://www.gandi.net" target="_blank" rel="noopener noreferrer">Gandi.net</a></h3>
<p class="text-muted mb-0 small">Provides our py.amsterdam domain and DNS at no cost.</p>
</div>
</div>
<div class="col-12 col-md-4 mb-4">
<div class="supporter-card border rounded p-4 h-100 text-center">
<img src="{{ SITEURL }}/images/psf-logo.png" alt="Python Software Foundation logo" class="img-fluid mb-3" style="max-height: 120px;">
<h3 class="h5"><a href="https://www.python.org/psf/" target="_blank" rel="noopener noreferrer">Python Software Foundation</a></h3>
<p class="text-muted mb-0 small">Sponsors our Meetup.com account so we can organise community events.</p>
</div>
</div>
<div class="col-12 col-md-4 mb-4">
<div class="supporter-card border rounded p-4 h-100 text-center">
<h3 class="h5"><a href="https://zammad.org" target="_blank" rel="noopener noreferrer">Zammad</a></h3>
<p class="text-muted mb-0 small">Donates ticketing software that helps us support attendees and volunteers.</p>
</div>
</div>
</div>
</div>
</section>
Loading