gdzieposztuke.pl · Own product · 2026
gdzieposztuke.pl — cultural events on a map
A service that gathers openings, exhibitions and concerts from gallery, museum and theatre websites and shows them on a map, nearest first.
Visit website
Results
- Event types — from openings to workshops
- 8
- Each source's programme gathered again, with no manual work
- every 6 h
01
Challenge
The programmes of galleries, museums, theatres and concert halls are scattered across dozens of websites, each with its own calendar.
More
Anyone who wants to know what's on a few streets away today has to go through them one by one. The service had to bring it all into one place without anyone retyping programmes by hand.
02
Solution
We built an aggregator that, every few hours, reads the event data institutions publish for search engines and their calendar feeds, recognises the kind of event, removes duplicates and places each venue on the map.
More
Visitors choose how far they're willing to go and when they're free, and see the rest on a list and a map.
Key features
- Events gathered from schema.org data (JSON-LD) and iCalendar feeds
- Eight event types, deduplication across sources, geocoding
- A list and a map sorted by distance from the visitor (Leaflet, OpenStreetMap)
- City and event-type pages for search, generated from the data
- Subscribable calendars and a "Weekend in the city" newsletter
- An editorial panel with accounts, visitor submissions and a change history
The full project story
Starting point
News of an exhibition opening or a concert usually lives only on the website of the venue that runs it. To see what's on nearby, you have to know those venues and visit each one separately.
Most institutions, though, publish their programme in a form search engines read. The whole service is built on that.
What we did
The service from scratch: an API in NestJS on PostgreSQL and a server-rendered Nuxt frontend. Sources are pages with schema.org Event data or iCalendar feeds. Every six hours connectors gather events from them, a classifier assigns the type and a geocoder finds the venue's coordinates. The same event from two sources is stored once.
The visitor's location goes into a cookie, so the server renders nearby events straight away. Filters live in the URL, so a result can be sent to someone. Every city and every event type has its own page for search, and every event carries Event structured data.
Each category has its colour in a glass orb rendered in WebGL. One shared context draws them all, only the visible ones animate, and with prefers-reduced-motion or without WebGL a CSS gradient stays in their place.
The editors work in a panel: they add sources with a preview of what the service will read from them, correct events (corrections survive the next gathering) and approve visitor submissions. Every change goes into a history with its before and after values.