Realizacja · Portal miejski / silnik wieloinstancyjny

Wirtualny Otwock 2.0 — jeden plik konfiguracyjny rządzi całym powiatem

Dziewiątego portalu z newsami w Otwocku nikt nie potrzebował. Powiat liczy 125 tysięcy mieszkańców i ma osiem serwisów walczących o te same kliknięcia. Weszliśmy tam z marką z 2007 roku, ale zamiast pisać kolejne teksty o tym samym, zrzuciliśmy bombę technologiczną. Wirtualny Otwock to nie strona. To silnik, dla którego portal miejski jest produktem ubocznym.

wirtualnyotwock.pl →
Wirtualny Otwock — strona główna portalu powiatu otwockiego
5 dni
Od startu prac do premiery całego portalu
1 656
Wizytówek firm z 9 gmin, gotowych do przejęcia
100%
Konfiguracji z jednego pliku — zero zmian w kodzie
44
Narzędzia serwera MCP dla asystentów AI

Osiem portali, jeden czerwony ocean

Z dawnego Wirtualnego Otwocka została domena, logo, komplet kolorów i zrzut ekranu z 2007 roku. Kodu nie było, bazy nie było, sentyment był. Wejście z dziewiątym serwisem newsowym oznaczałoby walkę o resztki uwagi w regionie, w którym o tym samym remoncie drogi pisze już ośmiu graczy. Postawiliśmy inaczej: newsów nie piszemy, tylko przejmujemy ich dopływy, a budujemy to, czego żaden z tamtych nie ma — katalog firm, dane ligowe i przewodniki po powiecie.

To nie strona. To silnik.

Zasada nr 1: nic „otwockiego” w kodzie

  • Nazwa, domena, kolory, gminy, kategorie, źródła danych, cennik i włączone moduły — wszystko w jednym pliku konfiguracji instancji
  • 23 przełączniki modułów sterują nawigacją, stroną główną i trasami; wyłączony moduł znika z portalu razem ze swoimi adresami
  • Paleta marki wstrzykiwana jako zmienne CSS — jeden skompilowany arkusz obsługuje dowolną liczbę instancji
  • Test jest brutalnie prosty: druga instancja to nowy plik konfiguracji i logo. Jeśli trzeba tknąć kod silnika, coś otwockiego wyciekło i wraca do poprawki

Katalog, który zbudował się sam

20 kategorii, 153 specjalności, dziewięć gmin

  • 1 656 wizytówek firm z dziewięciu gmin powiatu — zebranych, opisanych i gotowych do przejęcia przez właścicieli
  • Publikujemy partiami, dopiero po sprawdzeniu opisu, adresu i zdjęć. Jakość przed licznikiem na stronie głównej
  • Zamiast drzewa podkategorii — 137 specjalności z własnymi stronami, w rodzaju „stomatolodzy w Otwocku”. Cechy typu parking zostają filtrem, bo kombinatoryka to filtr, nie treść
  • Zdjęcia pozyskujemy własnymi narzędziami, a firma bez strony dostaje kadr z banku obrazów przygotowanego pod ten region
Katalog firm powiatu otwockiego — kategorie ze zdjęciami i licznikami

Trzy ligi, trzy kapryśne API, jeden bezwzględny moduł

Adapter zamiast integracji na sztywno

  • Każdy organizator trzyma dane inaczej — i każdy w swoim cyfrowym średniowieczu
  • Rozwiązała to architektura adapterów — trzy źródła, trzy adaptery, reszta systemu nic o nich nie wie
  • Efekt: 12 rozgrywek pod jednym adresem — te z powiatu i te mazowieckie, w których grają miejscowe kluby. Razem 144 drużyny, 797 meczów i 1 236 zawodników, odświeżanych bez udziału człowieka
  • Gdy źródło padnie, kibic nie widzi błędu, tylko ostatnią bezpieczną kopię. Nowa liga w powiecie to wpis w konfiguracji, nie przebudowa modułu
Moduł ligi — tabele, terminarz i wyniki rozgrywek lokalnych

Przejęliśmy dopływy zamiast walczyć o ocean

Konkurencja jako źródło, ruch wraca do autorów

  • Skanujemy 36 źródeł nagłówków i 16 baz wydarzeń: portale, urzędy ośmiu gmin, starostwo, biblioteki, domy kultury, policję i kluby
  • System wyłapuje duplikaty imprez z różnych urzędów i scala je w jedno wydarzenie, rozpoznając te same miejsca pod różnymi nazwami
  • Pokazujemy tytuł i źródło, a kliknięcie oddaje ruch oryginalnemu autorowi. Zero skopiowanych tekstów, zero wrogów
  • Nagłówki z regionu zasilają plan redakcji, która pisze przewodniki i kontekst — newsów nie dotyka
Najnowsze z regionu — agregator nagłówków z lokalnych portali i instytucji

Praca i wpisy firm za darmo, bo tak brzmi obietnica

Lokalny rynek pracy w jednym miejscu

  • Oferty pracy firm z powiatu są bezpłatne i nie są płatnym dodatkiem do żadnego pakietu
  • Adapter Centralnej Bazy Ofert Pracy dokłada ogłoszenia z powiatowego urzędu pracy
  • Firma prowadzi własny kanał aktualności i promocji, z osobnym RSS-em i limitem dobowym przeciw spamowi
  • Radar pracodawców pokazuje, kto zatrudnia, kto zaczyna i kto przyspiesza — sygnał handlowy wyciągnięty z własnych danych
Moduł pracy — oferty lokalnych firm i urzędu pracy

Zbudowaliśmy portal dla ludzi i dla maszyn

Prawdopodobnie pierwszy portal miejski w Polsce z własnym serwerem MCP

Coraz więcej ludzi nie wpisuje już haseł w wyszukiwarkę — pytają swoje modele językowe. Zwykła strona karmi taki model tekstem do zgadywania. My wystawiliśmy natywny serwer MCP: 44 narzędzia, z czego 15 pozwala czytać katalog, wydarzenia i oferty pracy bez żadnego klucza. Dalej jest ciekawiej. Właściciel otwockiej firmy generuje token w swoim panelu i oddaje wizytówkę swojemu asystentowi AI — ten publikuje w jego imieniu ofertę pracy, poprawia opis, aktualizuje godziny otwarcia, wszystko prosto przez API. Reguły zapisu są te same, co w formularzach, każda zmiana wraca jako różnica pole po polu, usuwanie jest miękkie i wymaga potwierdzenia, a samej wizytówki przez API skasować się nie da. Jak zrobić to u siebie, opisaliśmy osobno.

Kalendarz wydarzeń powiatu — dane scalone z szesnastu źródeł

Mierzymy, nie deklarujemy

Audyt przed premierą, nie po awarii

  • Każdą stronę mierzymy na telefonie w słabym zasięgu — liczy się moment, w którym czytelnik widzi treść, nie wynik w laboratorium
  • Układ nie skacze pod palcem: obrazy, kroje i miejsca na reklamę mają zarezerwowaną przestrzeń, zanim się wczytają
  • Kod przechodzi audyt bezpieczeństwa przed premierą i po każdym nowym module — znaleziska naprawiamy i spisujemy, zanim cokolwiek trafi na produkcję
  • Reklama kontekstowa bez ciasteczek: do dostawcy idzie sam identyfikator kampanii, dopasowanie zostaje w przeglądarce czytelnika
  • Konto pobiera własne dane i kasuje się samo, z anonimizacją zamiast pustego rekordu w bazie

Z czego to powstało

Pięć naszych projektów złożonych w jeden silnik

Nic tu nie powstało od zera i to jest cały sens. Katalog, płatności, obróbka zdjęć i deploy przyszły z portalu Slub24, budowanego przez lata pod ten sam typ katalogu. Dyscyplinę redakcyjną wzięliśmy z ChceBycPiekna: warstwowy model językowy z dostawcą zapasowym, własne zdjęcie do każdego tekstu, autor i kategoria przy każdym materiale. Układ strony artykułu przyjechał z portalu miejskiego City24. Reklamę obsługuje nasz własny ContentLink, ten sam, który stoi na pozostałych portalach sieci. Zdjęcia przechodzą przez pipeline wspólny ze ScaleTry, a lokalnym firmom oferujemy w tym samym miejscu agenta FlashAI. Klocki na następny etap — konta osób, znajomi, wiadomości, wydarzenia z zapisami i lokalny marketplace — czekają gotowe w LoveMerci, zbudowanym na tym samym stosie. Portal miejski jest produktem ubocznym. Produktem głównym jest silnik, który postawi następny.

Oddomenowaliśmy przeszłość. Nie zbudowaliśmy dziewiątego portalu z newsami, tylko silnik portali miejskich — a Otwock jest jego pierwszą instancją. Kolejne miasto to plik konfiguracyjny, nie kolejny projekt.

Najczęstsze pytania

Czym ten portal różni się od lokalnego serwisu z newsami?

Nie publikuje własnych newsów. Agreguje nagłówki z 36 lokalnych źródeł i odsyła ruch do oryginałów, a sam buduje to, czego w regionie brakowało: katalog firm z dziewięciu gmin, dane z dwunastu rozgrywek ligowych, kalendarz wydarzeń, ogłoszenia o pracy i przewodniki po powiecie.

Co daje portalowi własny serwer MCP?

Asystent AI czyta katalog, wydarzenia i oferty pracy bez klucza, a właściciel firmy po wygenerowaniu tokenu w panelu może kazać swojemu asystentowi opublikować ofertę albo poprawić opis wizytówki. Reguły zapisu są wspólne z formularzami, każda zmiana wraca jako różnica pole po polu, a usuwanie jest miękkie i wymaga potwierdzenia.

Czy ten sam silnik uruchomi portal dla innego miasta?

Po to powstał. Nazwa, domena, kolory, gminy, kategorie, źródła danych i zestaw modułów są konfiguracją, nie kodem, a paleta marki wchodzi jako zmienne CSS. Kolejna instancja to nowy plik konfiguracyjny, logo i favicony. Jeśli wymaga czegoś więcej, traktujemy to jak błąd projektowy do naprawienia.

Ile trwała budowa?

Pięć dni od startu prac do premiery, zgranej ze startem sezonu lokalnej ligi. W tym czasie powstały moduły katalogu, ligi, agregatora, wydarzeń, pracy, kont, reklamy i serwera MCP, a całość przeszła audyt wydajności i bezpieczeństwa, zanim weszła na produkcję.

Masz lokalną markę albo katalog do ożywienia?

Postawimy portal na gotowym silniku: katalog firm, dane z zewnętrznych API przez adaptery, konta, reklama bez ciasteczek i serwer MCP dla asystentów AI. Konfiguracja zamiast pisania wszystkiego od nowa.