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
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# data located at docs/source/json-data
- docs/source/json-data/articles.json
- docs/source/json-data/meetups.json
- docs/source/json-data/speakers.json

Expand Down
26 changes: 26 additions & 0 deletions docs/source/articles/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Articles
============

*The first place to look when you want to read something worth reading about Python.*

This is a curated, `community-voted <https://t.me/python_belgrade>`_ section of articles from across the Python ecosystem. It's not just an aggregator however, think of it like a high-signal place to keep yourself informed about Python and its ecosystem.

Links to past years' archives can be found at the bottom of the page.

----

{% for article in articles["2026"] %}

{% set heading = "`" + article.title + " ↗ <" + article.url + ">`_" %}
- .. rubric:: {{ heading }}


by `{{ article.author }} ↗ <{{ article.authorUrl }}>`_

.. image:: {{ article.image }}
:height: 10em

{{ article.description }}


{% endfor %}
10 changes: 9 additions & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
# -- Project information -----------------------------------------------------

project = "Python Belgrade"
copyright = "2024, Python Belgrade"
copyright = "2026, Python Belgrade"
Comment thread
ruslan-korneev marked this conversation as resolved.
author = "Python Belgrade"


Expand Down Expand Up @@ -69,9 +69,13 @@
with open("json-data/speakers.json") as file:
speakers = json.load(file)

with open("json-data/articles.json") as file:
articles = json.load(file)

html_context = {
"meetups": meetups,
"speakers": speakers,
"articles": articles,
}

if os.environ.get("READTHEDOCS", "") == "True":
Expand All @@ -98,6 +102,10 @@
"title": "Sponsorship",
"url": "sponsorship/index",
},
{
"title": "Articles",
"url": "articles/index",
},
{
"title": "Social",
"children": [
Expand Down
1 change: 1 addition & 0 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ Only reason why you may want to bring a laptop would be if you are planning to g

meetups/index
speakers/index
articles/index

.. toctree::
:maxdepth: 2
Expand Down
16 changes: 16 additions & 0 deletions docs/source/json-data/articles.json
Comment thread
lukal-x marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"2026": [
{
"id": 1,
"title": "Writing agentic systems in Python",
"description": "From Python as a non-negotiable foundation all the way to an entire agentic system, this straightforward guide charts out a roadmap for getting hands on experience as an AI first Python engineer.",
"url": "https://dev.to/klement_gunndu/the-ai-engineering-stack-in-2026-what-to-learn-first-1nhj",
"image": "https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fimages.unsplash.com%2Fphoto-1709547228697-fa1f424a3f39%3Fcrop%3Dentropy%26cs%3Dtinysrgb%26fit%3Dmax%26fm%3Djpg%26ixid%3DM3w4ODA4ODZ8MHwxfHNlYXJjaHwxfHxwcm9ncmFtbWluZyUyMGNhcmVlciUyMGxlYXJuaW5nfGVufDB8MHx8fDE3NzM0OTE1Nzh8MA%26ixlib%3Drb-4.1.0%26q%3D80%26w%3D1080",
"author": "Klement Gunndu",
"authorUrl": "https://www.linkedin.com/in/klement-gunndu-601872351/"
}
],
"archives": {
"2026": []
}
}