🇪🇸 Web del grupo local de Python Valencia. Es una aplicación Flask con dos partes dinámicas: el año del pie de página y la caja de "Próximo evento", que se alimenta del calendario ICS público de Meetup y solo aparece cuando hay un evento anunciado. Todas las fotos se sirven a través de imagor con URLs firmadas, así no hace falta optimizarlas a mano.
🇬🇧 Website of the Python Valencia local group. It is a Flask application with two dynamic parts: the footer year and the "Next event" box, fed from the public Meetup ICS calendar and only shown when an event is announced. Every photo is served through imagor with signed URLs, so there is no need to optimise them by hand.
- Copy the environment file and adjust it (
PORTis the only public port; set a long randomIMAGOR_SECRET).
cp .env.example .env- Start everything with Docker Compose.
docker compose up --buildThe site is served at http://localhost:${PORT}.
nginx: single entry point. Routes/img/to imagor and everything else to Flask.web: Flask + gunicorn. Renders the page, reads the Meetup ICS feed (cached), and signs imagor URLs withIMAGOR_SECRET(HMAC-SHA256). The compiled CSS is built from SASS in the Docker image (dart-sass stage).imagor: processes and caches the images. Sources: the localapp/static/imgfolder (read-only mount) andsecure.meetupstatic.comfor event covers.
docker compose run --rm --entrypoint sh web -c "pip install pytest -q && pytest tests -q"-
Before adding new HTML or SASS, propose a graphic design that can be reviewed in a Merge Request. Don't forget to design both mobile and desktop.
-
If you are going to do a SASS fix, check the existing classes in case you can reuse some of them. The whole project is modularised.