Cookie Policy.Brake PadsTyres
Terms of Service

Refund policy Website by

Juan Borges DesignsBrake SparesTubes
. >

Hoy Road Bike - Extra Large
<
img src="//projektride.co.uk/cdn/shop/files/service_d6136318-c313-41d8-9715-521cd27ef85f_512x512.png?v=1690612630" alt="" class="icons-row__image"> Quality ControlSee More
Every bike that passes through our business receives the upmost care and attention, ensuring safety and reliability to every client. Black
Complete Brakes
.image-columns[data-section-id="template--15326745166050__163588954489e026a4"] { background: #ffffff; }.image-columns[data-section-id="template--15326745166050__163588954489e026a4"] { color: #000000; } -Brother Cycles Mr Wooden Frameset © 2025,
Brake Rotors ProjektRide Header Image .
< div class="image-column__image image-column__image--desktop no-js-image" style="background-image: url(//projektride.co.uk/cdn/shop/files/shop_2048x.jpg?v=1635888751);"> a class="product__media product__media--featured" href="/collections/road-gravel-touring-bikes/products/brother-cycles-mr-wooden" title="-Brother Cycles Mr Wooden Frameset" aria-label="-Brother Cycles Mr Wooden Frameset" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot_2024-10-01_at_16.22.50_600x.png?v=1727796235)"> < Brake Pads> Website by span class="visually-hidden">-Brother Cycles Mr Wooden Frameset
EH9 1QN
< ForksMon-Fri: 9:00 - 18:30 div class="product__media-hover-img product__media" style="background-image: url(//projektride.co.uk/cdn/shop/files/Screenshot_2024-10-01_at_16.23.29_600x.png?v=1727796235)">
'en_us') // This matches the backend's Mobility.normalize_locale behavior // Returns empty string if locale is empty or invalid (matches original behavior) function normalizeLocale(locale) { if (!locale || locale.trim() === '') { return ''; } return locale.toString().toLowerCase().replace(/-/g, '_'); } window._RestockRocketConfig.locale = 'en'; window._RestockRocketConfig.normalizedLocale = normalizeLocale('en'); window._RestockRocketConfig.shop = 'projektride.myshopify.com'; window._RestockRocketConfig.pageType = 'index';window._RestockRocketConfig.marketId = 382140642;window._RestockRocketConfig.countryName = 'United Kingdom'; window._RestockRocketConfig.countryIsoCode = 'GB';window._RestockRocketConfig.cartInventoryQuantity = {};window._RestockRocketConfig.cachedSettings = {"id":38500,"shop_id":38436,"currency":"GBP","created_at":"2025-07-26T09:13:57.337Z","updated_at":"2025-11-11T14:27:02.312Z","enable_app":true,"enable_signup_widget":false,"storefront_button_text":"Notify me when available","storefront_button_text_color":"#FFFFFF","storefront_button_background_color":"#202223","storefront_form_header":"Notify me","storefront_form_description":"Get a notification as soon as this product is back in stock by signing up below!","storefront_form_button_text":"Notify me when available","storefront_form_button_text_color":"#FFFFFF","storefront_form_button_background_color":"#202223","storefront_form_terms":"Promise we won't spam. You'll only receive notifications for this product.","storefront_form_error":"Please enter a valid email address","storefront_form_success":"Thank you! We will notify you when the product is available.","enable_powered_by":true,"show_button_on_preorder":true,"sms_enabled":false,"email_enabled":true,"storefront_button_disable_tag":"rocket-hide","theme_config":{},"storefront_form_email_placeholder":"Email address","storefront_form_phone_placeholder">
Sun: Closed uantity_label":"Quantity","enable_alerts":true,"sms_allowed":false,"email_allowed":true,"collect_promotion_consent_default":true,"insert_button_after_selector":null,"insert_button_after_selector_type":"afterend","storefront_button_position_type":"float-right","storefront_form_duplicate_error":"You've already subscribed for alerts to this product.","storefront_mixed_cart_error":"This item needs to be purchased separately. Please check out or clear your cart before adding this item.","storefront_error_heading":"Error","default_locale":"en","collection_page_button_text_color":"#FFFFFF","collection_page_button_background_color":"#202223","show_button_if_any_out_of_stock":false,"show_button_if_any_variant_out_of_stock_collection":false,"show_button_on_index":false,"insert_button_after_selector_collection":null,"insert_button_after_selector_index":null,"push_enabled":false,"push_allowed":false,"storefront_form_push_label":"Push","storefront_form_push_description":"Click 'Allow' to be notified via push notification" SETTINGS_CACHE_DURATION) { console.debug('STOQ - settings changed recently, skipping cache'); return null; } return settings; } catch (error) { console.debug('STOQ - Error checking settings cache:', error); return null; } } function createRestockRocketContainer() { const restockRocketContainer = document.createElement('div'); restockRocketContainer.id = 'restock-rocket'; document.body.appendChild(restockRocketContainer); } function createRestockRocketScript(scriptUrl) { const restockRocketScriptElement = document.createElement('script'); restockRocketScriptElement.setAttribute('defer', 'defer'); restockRocketScriptElement.src = scriptUrl; docume
★★★★★ ${window._RestockRocketConfig.locale})`); const translatedFields = translations[normalizedLocale]; if (translatedFields && typeof translatedFields === 'object') { Object.keys(translatedFields).forEach(function(key) { const value = translatedFields[key]; if (value !== null && value !== undefined && value !== '') { settings[key] = value; } }); } else { console.debug('STOQ - No translated fields found for locale:', normalizedLocale); } delete settings.translations; return settings; } catch (e) { console.debug('STOQ - error applying translations:', e); return settings; } } // First try to get settings from metafields with expiry check const cachedSettings = window._RestockRocketConfig.cachedSettings; const validCachedSettings = cachedSettings ? checkSettingsExpiry(cachedSettings) : null; if (validCachedSettings) { console.debug('STOQ - using cached settings'); initializePurple
I was Finishing Kitve cached settings (even if expired), use them as fallback if (cachedSettings) { console.debug('STOQ - using expired cached settings as fallback'); initializeScripts(cachedSettings); } else { console.error('STOQ - failed to load settings:', error); } }) .catch(function(e) { console.error(e) }) } function initializeScripts(settings) { settings = applyTranslations(settings); window._RestockRocketConfig.settings = settings; console.debug(`STOQ - settings configured for ${window._RestockRocketConfig.pageType}`); if(settings.enable_app) { const hijackIntegration = window._RestockRocketConfig.integrations.find(function(integration) { return integration.type === 'hijack' && integration.enabled && integration.page_types.includes(window._RestockRocketConfig.pageType); }) if(window._RestockRocketConfig.pageType === 'collection' && (settings.show_button_on_collection || settings.preorder_collection_enabled)) {
See More } else { console.debug(`STOQ - no scripts enabled for ${window._RestockRocketConfig.pageType}`); } // Check and update cart selling plans after scripts are loaded if (settings.preorder_enabled) { updateCartSellingPlans(); } // Dispatch custom event when app is loaded const appLoadedEvent = new CustomEvent('stoq:loaded', { detail: { pageType: window._RestockRocketConfig.pageType, enabled: settings.enable_app, settings: settings } }); console.debug('STOQ - dispatching app loaded event'); window.dispatchEvent(appLoadedEvent); } } function updateCartSellingPlans() { // Wait for the API to be available with retries const maxRetries = 10; const retryDelay = 500; function attemptCartCheck(attempt = 1) { if (window._RestockRocket && window._RestockRocket.updateCartSellingPlans) { window._RestockRocket.updateCartSellingPlans() .then(hasUpdates => {
KINESIS R2 ROAD BIKE FRAMESET

1
Socks 2
★★★★★
Staff are very kind and the price is relatively reasonable, also student can have 10% discount which it great :)→

Product Details William Gui

 

Sell Your Bike
★★★★★

Durable polyester fabric make this pannier a long lasting touring companion. The waterproof roll closure ensures safe and waterproof storage of food and equipment. With its QL2.1 fixing it is quickly mounted and taken off the bike rack. A shoulder strap provides carrying comfort when taken off the rack. Excellent friendly and efficient service. Great product knowledge and good value for money! Highly recommend.site-footer { --bg: #1f2324; --text: #ffffff; --text-alpha-15: rgba(255, 255, 255, 0.15); --text-alpha-60: rgba(255, 255, 255, 0.6); --text-alpha-85: rgba(255, 255, 255, 0.85); } .footer-content__logo__image { width: 170px; }

Contact UsBen Ross
  • Fabric: PD620/PS490Log in
  • SearchJohn Doe
  • Height: 42cm
  • QUICK LINKS
  • Width: 23 / 32cm
  • Cart About Us
  • Depth: 17cm Contact Us
  • Blog
  • Volume: 40LClose Track Service Progress
  • HAVE A QUESTION?Building Your Bike From the Box
  • Weight: 1900g We love chatting about your next bike adventure. Get in touch and we can go through the perfect bike along with any accessories needed to get you to your final destination. If you are local to our branch in Edinburgh, please pop in for a coffee and feel free to test ride the bikes in stock.Insure Your Bike
  • Spend If you are looking to sell your bike, please click Privacy Policy
£50hereCookie Policy
to qualify for free shipping to get the ball rolling.Terms of Service
GET IN TOUCH Refund policy
Congratulations! Your order qualifies for free shipping
SERVICES
<
Open search bar Email Website by a href="https://projektride.co.uk/search?type=product&q=apidura" class="logo-list__slide-image" style="background-image: url(//projektride.co.uk/cdn/shop/files/IMG_0249_360x.png?v=1693301190); width: 120px; padding-top: 57.4%;">
>
Logo image

Second-Hand Bikes<
Shop All Second-Hand
  • Terms of Service
  • Refund policy   
INFORMATIONWorkshop
Workshop Prices
Finishing Kit