O nas

Dandy Horse Wheels

Dandy Horse Wheels to warszawska pracownia kołodziejska tworząca bezkompromisowe koła rowerowe na zamówienie. Jako rzemieślnicy i pasjonaci kolarstwa budują je z najwyższą starannością, używając starannie dobranych i przetestowanych komponentów najwyższej jakości, dostosowując każdy zestaw do wagi, opon i stylu jazdy klienta.​​

Firma oferuje dożywotnią gwarancję na koła karbonowe, dwuletnią na aluminiowe oraz kompleksową opiekę posprzedażową z programem Crash Replacement i szybkimi terminami napraw.

Dane kontaktowe:

Dane firmowe:

Dandy Horse Sp. z o. o.
ul. Jordanowska 2a, 04-204 Warszawa
NIP: 1133119924

Sztuka budowania kół

Jesteśmy rzemieślnikami, mistrzami w swoim fachu i pasjonatami kolarstwa. Z naszej pasji powstała pracownia kołodziejska Dandy Horse.

Konstruujemy bezkompromisowe koła rowerowe. Budujemy je na zamówienie z niespotykaną dziś starannością, przy użyciu uważnie dobranych i wnikliwie przetestowanych komponentów. Każde z tysięcy ręcznie złożonych przez nas kół jest owocem wielu godzin eksperymentów, projektowania i testów. Kochamy to, co robimy i nieustannie rozwijamy się, dążąc do perfekcji. Naszą misją jest budować koła tak dobre, żeby każda jazda była wyjątkowym doświadczeniem.

czesci kol rowerowych
centrowanie kola rowerowego

Obsesja precyzji

Koło to fizyka. Podczas naszej pracy fanatycznie przestrzegamy jej praw.

Bezkompromisowa precyzja i dokładność procesu zaplatania, centrowania i stabilizacji są tym, co charakteryzuje koła spod znaku Dandy Horse. Ta obsesyjna staranność znajduje odzwierciedlenie w ich trwałości i bezawaryjności. Każde zamówienie traktujemy jak osobny, indywidualny projekt, któremu poświęcamy tyle czasu, pracy i zaangażowania, ile potrzeba do uzyskania satysfakcjonującego nas poziomu jakości.

Koło to więcej niż suma jego części

Do budowy naszych kół używamy wyłącznie części najwyższej jakości.

Niektóre z nich projektujemy sami, a ich wykonanie zlecamy zaufanym producentom. Korzystamy tylko z usług doświadczonych firm zajmujących się wytwarzaniem podzespołów dla najlepszych na świecie marek rowerowych. Dzięki bogatemu doświadczeniu w budowaniu i serwisowaniu kół mamy szczegółową wiedzę na temat doboru komponentów, rozwiązań technicznych i patentów pozwalającą wykorzystać w pełni drzemiący w nich potencjał.

Kołodziejska etyka

Prowadzimy sklep i warsztat na warszawskiej Pradze gdzie zapraszamy wszystkich, którzy chcieliby porozmawiać o kołach i zobaczyć je przed zamówieniem.

Ponadto oferujemy możliwość zakupu na raty 0%. Dajemy dożywotnią gwarancję na koła z naszej oferty zbudowane na obręczach karbonowych i dwuletnią na aluminiowych, a reklamacje rozpatrujemy w ciągu 5 dni roboczych. Zapewniamy także troskliwą opiekę posprzedażową, w której skład wchodzi Crash Replacement i szeroki wachlarz usług serwisowych. Wszelkich napraw dokonujemy w ciągu dwóch tygodni ponieważ potrzebne do nich części zamienne posiadamy na stanie.

Zgarnij dodatkowe 5% rabatu

Zapisz się do newslettera, by jako pierwszy dowiedzieć się o promocjach

(function() { const popupID = 4091; // <- Twoje ID popupu const requiredMs = 60000; // 60 sekund const startKey = "popupTimerStart_" + popupID; const closedKey = "popupClosed_" + popupID; const shownSessionKey = "popupShownSession_" + popupID; const maxWaitForElementorMs = 10000; // ile maksymalnie czekamy na elementorProFrontend // Jeśli zamknięto już popup (localStorage) — nie pokazuj więcej if (localStorage.getItem(closedKey)) return; // Ustal moment rozpoczęcia liczenia (persistuje między podstronami) let start = localStorage.getItem(startKey); if (!start) { start = Date.now(); localStorage.setItem(startKey, start); } else { start = parseInt(start, 10); } // Oblicz ile jeszcze brakuje do wymaganych 60s function msRemaining() { return Math.max(0, requiredMs - (Date.now() - start)); } // Funkcja pokazująca popup (gdy elementorProFrontend już gotowy) function tryShowPopup() { // jeśli użytkownik zamknął popup w międzyczasie — przerwij if (localStorage.getItem(closedKey)) return; // jeśli już pokazano w tej sesji — nie pokazuj ponownie if (sessionStorage.getItem(shownSessionKey)) return; // upewnij się, że obiekt elementora jest dostępny if (typeof elementorProFrontend !== "undefined" && elementorProFrontend && elementorProFrontend.modules && elementorProFrontend.modules.popup) { elementorProFrontend.modules.popup.showPopup({ id: popupID }); sessionStorage.setItem(shownSessionKey, "1"); } else { // jeśli elementor jeszcze nie załadowany — nic nie robimy tutaj console.warn("Elementor Pro popup module not ready yet."); } } // Czekaj na elementorProFrontend (polling), ale nie dłużej niż maxWaitForElementorMs function waitForElementorReady(cb) { const interval = 200; let waited = 0; const t = setInterval(function() { if (typeof elementorProFrontend !== "undefined" && elementorProFrontend && elementorProFrontend.modules && elementorProFrontend.modules.popup) { clearInterval(t); cb(true); } else { waited += interval; if (waited >= maxWaitForElementorMs) { clearInterval(t); cb(false); } } }, interval); } // Gdy popup zostanie zamknięty — zapisz to na stałe w localStorage (function bindCloseListener() { if (window.jQuery) { jQuery(document).on('elementor/popup/hide', function(event, id) { if (id === popupID) { localStorage.setItem(closedKey, "1"); } }); } else { // jeśli jQuery jeszcze nie dostępne, spróbuj za chwilę let tries = 0; const t = setInterval(function() { tries++; if (window.jQuery) { clearInterval(t); jQuery(document).on('elementor/popup/hide', function(event, id) { if (id === popupID) { localStorage.setItem(closedKey, "1"); } }); } else if (tries > 50) { clearInterval(t); } }, 200); } })(); // Teraz ustaw timeout — jeśli pozostały czas 0 => pokaż natychmiast (po upewnieniu się, że elementor jest gotowy) const remaining = msRemaining(); if (remaining <= 0) { waitForElementorReady(function(ready) { if (ready) tryShowPopup(); else { // jeśli elementor nie gotowy — spróbuj jeszcze raz po krótkim timeout setTimeout(tryShowPopup, 500); } }); } else { // ustaw timeout na pozostały czas; po upływie — spróbuj pokazać popup setTimeout(function() { waitForElementorReady(function(ready) { if (ready) tryShowPopup(); else { // jeśli elementor nie gotowy — spróbuj z małym opóźnieniem setTimeout(tryShowPopup, 500); } }); }, remaining); } // Dodatkowo: jeśli użytkownik zamknął popup w innej karcie/oknie, ten skrypt też to zauważy dzięki storage event window.addEventListener('storage', function(e) { if (e.key === closedKey && e.newValue) { // nic do zrobienia tutaj — warunki wyżej sprawią, że nic się nie pokaże } }); })();