Skip to content

Commit 30b9731

Browse files
committed
fix(events): wip
1 parent 59af20c commit 30b9731

File tree

4 files changed

+113
-54
lines changed

4 files changed

+113
-54
lines changed

public/data/events.json

Lines changed: 95 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,8 @@
1010
"fullDescriptionEn": "An evening dedicated to the music of code: the Python Catania community gathers to share projects, lightning talks and ideas. The event is open to everyone regardless of experience level. We bring the tools of the trade, a bit of curiosity and plenty of desire to learn together. As usual, there will be time for networking, questions and open discussion after the talks.",
1111
"attendees": 45,
1212
"url": "https://www.meetup.com/python-catania/events/313050179/",
13-
"gallery": [
14-
"/images/events/event-313050179.jpg"
15-
],
16-
"speakers": [
17-
{ "name": "TBA", "topic": "Talk in arrivo", "topicEn": "Talk coming soon" }
18-
]
13+
"gallery": ["/images/events/event-313050179.jpg"],
14+
"speakers": [{ "name": "TBA", "topic": "Talk in arrivo", "topicEn": "Talk coming soon" }]
1915
},
2016
{
2117
"id": 312066711,
@@ -28,12 +24,20 @@
2824
"fullDescriptionEn": "The Christmas edition of the Python Catania meetup is always a special moment: the year is coming to an end, it is time to take stock and look ahead. We gather to talk about what we have learned during the year, discover new Python tools and technologies, and celebrate the community spirit together. Christmas sweets and good cheer guaranteed.",
2925
"attendees": 38,
3026
"url": "https://www.meetup.com/python-catania/events/312066711/",
31-
"gallery": [
32-
"/images/events/event-312066711.jpg"
33-
],
27+
"gallery": ["/images/events/event-312066711.jpg"],
3428
"speakers": [
35-
{ "name": "Salvatore Rapisarda", "topic": "Recap 2025: un anno di Python Catania", "topicEn": "Recap 2025: a year of Python Catania" },
36-
{ "name": "Matteo Jacopo Schembri", "topic": "Le novità di Python 3.14", "topicEn": "What's new in Python 3.14" }
29+
{
30+
"name": "Salvatore Rapisarda",
31+
"topic": "Recap 2025: un anno di Python Catania",
32+
"topicEn": "Recap 2025: a year of Python Catania",
33+
"image": "/images/about/SalvoRapisarda.jpeg"
34+
},
35+
{
36+
"name": "Matteo Jacopo Schembri",
37+
"topic": "Le novità di Python 3.14",
38+
"topicEn": "What's new in Python 3.14",
39+
"image": "/images/about/MatteoJacopoSchembri.jpeg"
40+
}
3741
]
3842
},
3943
{
@@ -47,12 +51,20 @@
4751
"fullDescriptionEn": "PythObrata is our autumn meetup par excellence: roasted chestnuts, new wine and lots of Python. This year we explored topics such as type safety in Python, the use of static analysis tools and some previews of upcoming news in the ecosystem. As always, the atmosphere is relaxed and inclusive, perfect for those approaching the community for the first time.",
4852
"attendees": 42,
4953
"url": "https://www.meetup.com/python-catania/events/311306942/",
50-
"gallery": [
51-
"/images/events/event-311306942.jpg"
52-
],
54+
"gallery": ["/images/events/event-311306942.jpg"],
5355
"speakers": [
54-
{ "name": "Claudio Faro", "topic": "Type safety in Python: mypy e pyright a confronto", "topicEn": "Type safety in Python: mypy vs pyright" },
55-
{ "name": "Stefano Borzi", "topic": "Introduzione a Ruff: linting e formatting ultra-veloce", "topicEn": "Introduction to Ruff: ultra-fast linting and formatting" }
56+
{
57+
"name": "Claudio Faro",
58+
"topic": "Type safety in Python: mypy e pyright a confronto",
59+
"topicEn": "Type safety in Python: mypy vs pyright",
60+
"image": "/images/about/ClaudioFaro.jpeg"
61+
},
62+
{
63+
"name": "Stefano Borzi",
64+
"topic": "Introduzione a Ruff: linting e formatting ultra-veloce",
65+
"topicEn": "Introduction to Ruff: ultra-fast linting and formatting",
66+
"image": "/images/about/StefanoBorzi.jpeg"
67+
}
5668
]
5769
},
5870
{
@@ -66,11 +78,14 @@
6678
"fullDescriptionEn": "In summer in Catania the heat is the undisputed protagonist, but the desire to code never stops. We took advantage of the evening coolness to meet, bring some summer projects and share ideas born in the sun. The evening included talks, live demos and ample space for outdoor networking.",
6779
"attendees": 35,
6880
"url": "https://www.meetup.com/python-catania/events/308969846/",
69-
"gallery": [
70-
"/images/events/event-308969846.jpg"
71-
],
81+
"gallery": ["/images/events/event-308969846.jpg"],
7282
"speakers": [
73-
{ "name": "Matteo Jacopo Schembri", "topic": "FastAPI + async: pattern avanzati", "topicEn": "FastAPI + async: advanced patterns" }
83+
{
84+
"name": "Matteo Jacopo Schembri",
85+
"topic": "FastAPI + async: pattern avanzati",
86+
"topicEn": "FastAPI + async: advanced patterns",
87+
"image": "/images/about/MatteoJacopoSchembri.jpeg"
88+
}
7489
]
7590
},
7691
{
@@ -84,12 +99,20 @@
8499
"fullDescriptionEn": "PyCon Italia 2025 is just around the corner and this meetup was dedicated to preparation: who is going, which talks not to miss, how to navigate the tracks and activities. We also heard preview talks from two of our members who will present at PyCon — a great preview for the whole community.",
85100
"attendees": 40,
86101
"url": "https://www.meetup.com/python-catania/events/307712208/",
87-
"gallery": [
88-
"/images/events/event-307712208.jpg"
89-
],
102+
"gallery": ["/images/events/event-307712208.jpg"],
90103
"speakers": [
91-
{ "name": "Salvatore Rapisarda", "topic": "Preview: il mio talk al PyCon Italia 2025", "topicEn": "Preview: my talk at PyCon Italia 2025" },
92-
{ "name": "Claudio Faro", "topic": "Guida al PyCon: come sopravvivere alla conferenza", "topicEn": "PyCon guide: how to survive the conference" }
104+
{
105+
"name": "Salvatore Rapisarda",
106+
"topic": "Preview: il mio talk al PyCon Italia 2025",
107+
"topicEn": "Preview: my talk at PyCon Italia 2025",
108+
"image": "/images/about/SalvoRapisarda.jpeg"
109+
},
110+
{
111+
"name": "Claudio Faro",
112+
"topic": "Guida al PyCon: come sopravvivere alla conferenza",
113+
"topicEn": "PyCon guide: how to survive the conference",
114+
"image": "/images/about/ClaudioFaro.jpeg"
115+
}
93116
]
94117
},
95118
{
@@ -103,11 +126,20 @@
103126
"fullDescriptionEn": "The first meetup of 2025 was held during Carnival: an opportunity to start the year on the right foot, present new projects and welcome new members to the community. Among the topics discussed: Python trends for 2025, news in the web ecosystem and a talk on package management with uv.",
104127
"attendees": 36,
105128
"url": "https://www.meetup.com/python-catania/events/306025381/",
106-
"gallery": [
107-
"/images/events/event-306025381.jpg"
108-
],
129+
"gallery": ["/images/events/event-306025381.jpg"],
109130
"speakers": [
110-
{ "name": "Stefano Borzi", "topic": "uv: il nuovo package manager Python", "topicEn": "uv: the new Python package manager" }
131+
{
132+
"name": "Salvatore Rapisarda",
133+
"topic": "Condivisione delle ultime novità riguardo il linguaggio Python.",
134+
"topicEn": "Sharing the latest news about the Python language.",
135+
"image": "/images/about/SalvoRapisarda.jpeg"
136+
},
137+
{
138+
"name": "Matteo Jacopo Schembri",
139+
"topic": "Gestione dei package Python con uv: una panoramica",
140+
"topicEn": "Python package management with uv: an overview",
141+
"image": "/images/about/MatteoJacopoSchembri.jpeg"
142+
}
111143
]
112144
},
113145
{
@@ -121,12 +153,14 @@
121153
"fullDescriptionEn": "The last meetup of 2024 brought the community together to celebrate another year of growth and learning. We looked back at the highlights of the year, from PyCon Italia to community-born projects, and made plans for 2025 with plenty of enthusiasm.",
122154
"attendees": 44,
123155
"url": "https://www.meetup.com/python-catania/events/304691223/",
124-
"gallery": [
125-
"/images/events/event-304691223.jpg"
126-
],
156+
"gallery": ["/images/events/event-304691223.jpg"],
127157
"speakers": [
128-
{ "name": "Salvatore Rapisarda", "topic": "Best of 2024: i talk più belli dell'anno", "topicEn": "Best of 2024: the year's best talks" },
129-
{ "name": "Matteo Jacopo Schembri", "topic": "Progetti community: cosa abbiamo costruito insieme", "topicEn": "Community projects: what we built together" }
158+
{
159+
"name": "Salvatore Rapisarda",
160+
"topic": "Condivisione delle ultime novità riguardo il linguaggio Python.",
161+
"topicEn": "Sharing the latest news about the Python language.",
162+
"image": "/images/about/SalvoRapisarda.jpeg"
163+
}
130164
]
131165
},
132166
{
@@ -140,11 +174,14 @@
140174
"fullDescriptionEn": "Summer Edition 2024 was one of the most attended evenings of the year. Despite the heat, the enthusiasm for Python won out. The evening opened with a lightning talk session open to everyone, followed by a live demo on Python and generative artificial intelligence.",
141175
"attendees": 32,
142176
"url": "https://www.meetup.com/python-catania/events/302671524/",
143-
"gallery": [
144-
"/images/events/event-302671524.jpg"
145-
],
177+
"gallery": ["/images/events/event-302671524.jpg"],
146178
"speakers": [
147-
{ "name": "Claudio Faro", "topic": "Python e LLM: costruire un chatbot in 30 minuti", "topicEn": "Python and LLMs: build a chatbot in 30 minutes" }
179+
{
180+
"name": "Salvatore Rapisarda",
181+
"topic": "Condivisione delle ultime novità riguardo il linguaggio Python.",
182+
"topicEn": "Sharing the latest news about the Python language.",
183+
"image": "/images/about/SalvoRapisarda.jpeg"
184+
}
148185
]
149186
},
150187
{
@@ -158,12 +195,20 @@
158195
"fullDescriptionEn": "After PyCon Italia 2024 we gathered to share impressions, favourite talks and new contacts made at the conference. Those who attended talked about the most interesting sessions, the workshops they followed and the ideas they brought home. A way to let the PyCon live on for those who could not attend.",
159196
"attendees": 39,
160197
"url": "https://www.meetup.com/python-catania/events/301402271/",
161-
"gallery": [
162-
"/images/events/event-301402271.jpg"
163-
],
198+
"gallery": ["/images/events/event-301402271.jpg"],
164199
"speakers": [
165-
{ "name": "Salvatore Rapisarda", "topic": "PyCon Italia 2024: i miei highlight", "topicEn": "PyCon Italia 2024: my highlights" },
166-
{ "name": "Stefano Borzi", "topic": "Talk report: Django e il futuro del web Python", "topicEn": "Talk report: Django and the future of Python web" }
200+
{
201+
"name": "Salvatore Rapisarda",
202+
"topic": "PyCon Italia 2024: i miei highlight",
203+
"topicEn": "PyCon Italia 2024: my highlights",
204+
"image": "/images/about/SalvoRapisarda.jpeg"
205+
},
206+
{
207+
"name": "Pietro Peterlongo",
208+
"topic": "Talk: Advent of Code",
209+
"topicEn": "Talk: Advent of Code",
210+
"image": "/images/events-speakers/PietroPeterlongo.jpeg"
211+
}
167212
]
168213
},
169214
{
@@ -177,12 +222,14 @@
177222
"fullDescriptionEn": "After a break, the Python Catania community got back on track with this comeback meetup. The event marked a new beginning: new location, new faces and plenty of energy. We talked about Python 3.12, the upcoming PyCon Italia and how the community wants to grow in 2024.",
178223
"attendees": 30,
179224
"url": "https://www.meetup.com/python-catania/events/298457913/",
180-
"gallery": [
181-
"/images/events/event-298457913.jpg"
182-
],
225+
"gallery": ["/images/events/event-298457913.jpg"],
183226
"speakers": [
184-
{ "name": "Matteo Jacopo Schembri", "topic": "Python 3.12: cosa c'è di nuovo", "topicEn": "Python 3.12: what's new" },
185-
{ "name": "Salvatore Rapisarda", "topic": "Roadmap Python Catania 2024", "topicEn": "Python Catania roadmap 2024" }
227+
{
228+
"name": "Salvatore Rapisarda",
229+
"topic": "Roadmap Python Catania 2024",
230+
"topicEn": "Python Catania roadmap 2024",
231+
"image": "/images/about/SalvoRapisarda.jpeg"
232+
}
186233
]
187234
}
188235
]
48.4 KB
Loading

src/app/pages/events/event-detail/event-detail.component.html

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,21 @@ <h2 class="mb-4 text-xl font-semibold">{{ 'events.speakers' | transloco }}</h2>
3838
<li
3939
class="mb-3 flex items-start gap-3 rounded-(--radius) border border-(--border) bg-(--surface) p-4"
4040
>
41-
<div
42-
class="flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-(--color-primary)/15 text-lg font-bold text-(--color-primary)"
43-
>
44-
{{ speaker.name.charAt(0) }}
45-
</div>
41+
@if (speaker.image) {
42+
<img
43+
[ngSrc]="speaker.image"
44+
width="40"
45+
height="40"
46+
[alt]="speaker.name"
47+
class="h-10 w-10 shrink-0 rounded-full object-cover"
48+
/>
49+
} @else {
50+
<div
51+
class="flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-(--color-primary)/15 text-lg font-bold text-(--color-primary)"
52+
>
53+
{{ speaker.name.charAt(0) }}
54+
</div>
55+
}
4656
<div>
4757
<p class="font-medium">{{ speaker.name }}</p>
4858
<p class="text-sm text-(--color-muted)">

src/app/pages/events/event-detail/event-detail.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';
2+
import { NgOptimizedImage } from '@angular/common';
23
import { ActivatedRoute, RouterLink } from '@angular/router';
34
import { HttpClient } from '@angular/common/http';
45
import { toSignal } from '@angular/core/rxjs-interop';
@@ -7,6 +8,7 @@ import { BASE_URL } from '../../../app.config';
78

89
interface Speaker {
910
readonly name: string;
11+
readonly image?: string;
1012
readonly topic: string;
1113
readonly topicEn: string;
1214
}
@@ -28,7 +30,7 @@ interface MeetupEvent {
2830

2931
@Component({
3032
selector: 'app-event-detail',
31-
imports: [TranslocoModule, RouterLink],
33+
imports: [TranslocoModule, RouterLink, NgOptimizedImage],
3234
templateUrl: './event-detail.component.html',
3335
changeDetection: ChangeDetectionStrategy.OnPush,
3436
})

0 commit comments

Comments
 (0)