{"data":{"markdownRemark":{"id":"e20e0491-9012-501f-9237-56c08d8a7dda","html":"","fields":{"slug":"/blog/wtf-open-source-web-testing-framework/"},"frontmatter":{"title":"WTF: Open Source Web Testing Framework","cover":"/img/kamil-chyrek.jpg","tags":["open source","JavaScript"],"lead":"Boldare’s Web Testing Framework is a framework designed for the automation of End-To-End (E2E) tests of web applications. It was created as part of a company initiative called “10% of time for **open-source**” and it was released under the terms of MIT license.","content":[{"body":"One of the goals of creating this framework was to **simplify writing tests** that are useful both for development team and for business purposes. For this reason, the test execution logs are quite complex. Reports may be useful for business users thanks to **Gherkin scenarios**, which use natural language to describe the performed tests, and screenshots to visualize the errors. \n\nDev teams will make use of the low-level logs, such as requests history (HAR) collected by proxy or browser console logs. Framework methods are high-level and have built-in waits, which facilitates writing tests significantly. The ease of test-writing was itself tested during in-house training for our company interns, who were able to learn how to write tests in quite a short time despite being previously unfamiliar with the technology.\n\n**Boldare’s Web Testing Framework** is available via [GitHub](https://github.com/xsolve-pl/testing-framework) and [NPM](https://www.npmjs.com/package/xsolve_wtf).\n\n## Main goals\n\n### Language\n\nThe framework was written in **JavaScript**. There were several reasons for that choice, the most important being JavaScript’s popularity when it comes to web apps. When tests are written in a language commonly used by developers, there’s no problem with finding people who could run a code review of the tests. Besides, code reviews carried out by someone specializing in a given technology are the most valuable – they are more than mere checking of general assumptions. In case of Python or Java that could have been problematic.\n\n### Selenium WebDriver\n\nSelenium WebDriver is probably the most frequently used tool for automating E2E web apps tests, directly or indirectly. Its bindings are also available for JavaScript (although they’re simplified in comparison with PHP, Python, or Java). So, Selenium WebDriver was also used as a base for the Boldare Web Testing Framework.\n\n### Gherkin – useful for business goals\n\nE2E tests should be useful not only from the dev team’s perspective. Business clients are also important users of tests, which should be easily understood by non-technical persons. That’s why Gherkin was used as the BDD layer. When properly used, the overhead on the Gherkin layer is minimal, and Gherkin itself has a lot of advantages for dev teams: it generates clear test reports, makes it easier to create bug reports, etc.\n\n### Logs\n\nThe main purpose of E2E tests is to verify if the app is working correctly. However, it’s also crucial to quickly identify errors in the case of a red test. In such situations, each detail that can help to reproduce the error or fix it may come in handy.\n\n* Gherkin scenarios are the first level of logs. In fact they’re steps helping reproduce the bug: apart from being used in bug reports, they will be understandable by clients.\n* Screenshots are another frequently used test output – thanks to them, you can see what the tested app looks like in the moment of failure, from a high-level point of view.\n* For developers, **HAR** is definitely a useful log. It can be used to track particular requests, which can be very helpful in identifying problems. Proxy is used to collect them, and HAR files are saved for every scenario.\n* The browser console logs can be of use mainly for front-end developers.\n* The Selenium driver log can be a great help for QAs, mainly while writing new tests.\n* The framework log supplements the logs above. It can be general – in the case of a method failure – or specific, providing information that helps track the functioning of the tests.\n* Other useful logs (without support implemented in framework yet) include web server logs. Another source of logs can be tools, which are specific to the technology used in the project: in the case of the **PHP and Symfony** back-end, these would be Symfony Profiler logs.\n\n### Easy and quick test implementation\n\nCommercial project tests are always limited by budget – you can virtually never test the app as vigilantly as you would like to. Still, the framework you use has a significant impact on the pace of test writing.\n\n* High-level methods available in the framework facilitate test implementation and also speed it up. The availability of these high-level methods does not limit the user – low-level Selenium WebDriver methods are also available and can be used if necessary.\n* Framework methods have built-in waits, which makes it much simpler to use them. The user retains the control over them – the default values of the configuration file _config.json_ are normally used, but you can choose a non-standard value when calling particular methods.\n\n### Stability\n\nDev teams cannot trust tests if the results do not recur in a given version of the app or when some tests are randomly “red”. The most frequent causes of non-stable tests that I’ve encountered are incorrectly used waits and application state changes during the execution of an action. The built-in waits in our framework methods have another good point – apart from the ease of use and quickness of test writing – they improve test stability.\n\n### Headless\n\nE2E tests are often run on headless servers. The frequently recommended headless browsers, e.g. PhantomJS, do not correspond with real browsers. PhantomJS uses a forked version of the **QtWebKit** engine from the Qt library, which is considerably different even from the WebKit engine used in Safari. E2E tests run on such browsers will not guarantee the proper functioning of the app on the real browsers.\n\nOne option of running headless tests on a real browser is to use **Xvfb** (X virtual framebuffer), a Linux tool that enables you to create a virtual screen within which a real browser (like Chrome or Firefox) can be started. If a browser is not available for Linux, you can use Remote Driver and connect to a virtual machine or a cloud service offering browsers for test execution.\n\n## Methods\n\nThe framework gives access to methods which can be generally divided into actions, validators, and “other”.\n\nActions are methods allowing the use of particular tasks in the browser, e.g. clicking. Validators verify the effect of the performed actions.\n\nBoth actions and validators are performed in the context of page elements: for example, you can click on an element or check if it is visible. The elements are identified by XPath selctors.\n\nA complete list of the available methods can be found in the manual at GitHub; below, you’ll find a few examples.\n\n### Actions\n\n* click(xpath, customTimeout)\\\n  Thanks to the _**click** _method, you can click on an element identified by XPath referenced by an _**xpath**_ parameter._\\\n  **customTimeout**_ is an optional parameter serving to define the maximum time for an action. If it’s not set, the default value from the framework’s configuration file will be used.\n* loadPage(url, customTimeout)\\\n  loadPage opens a page given as a **_url_** argument.\\\n  The _**customTimeout**_ parameter, just like in the click method, is optional.\n* Main actions:\\\n  fillInInput\\\n  setCheckboxValue – defining the checkbox value – true / false\\\n  setFileInputValue\\\n  sleep – static sleep\\\n  cleanBrowserState – cleaning browser state (cookies, localStorage, sessionStorage, console log)\n\n### Validators\n\n* Get and Validate\\\n  In the framework, get methods return a value, e.g. the number of elements on the page, the text on the elements, etc. _**Validate**_ methods serve to verify whether the number of elements is correct or whether the text is right.\\\n  The main difference is that _**get**_ shows the current status, and _**validate**_ checks that a given value agrees with the expected value before the timeout. This is especially important in the case of dynamic pages where the value can change. Thanks to _**validate**_, logic can also be transferred to a lower level – instead of getting the values during the tests to check if they’re correct, the validator can be used. The logic can be transferred even lower: to XPath, which enables you to verify several values at the same time, as can be seen in the following example – _**validateElementDisplayed**_.\n* validateElementDisplayed(xpath, customTimeout)\\\n  The validateElementDisplayed method validates the visibility of the XPath-identified object. It can be a simple element or an extended XPath like the one presented below, validating two values simultaneously. XPath finds the _**div**_ element containing two child elements – _**span**_ – with specific values.web testing framework\n\n![Web Testing Framework 1](/img/development-code-div.png)\n\n* Main methods\\\n  getCurrentUrl, validateUrl, validateUrlByRegex\\\n  validatePageReadyState\\\n  validateElementDisplayed / NotDisplayed\\\n  validateElementVisible / NotVisible\\\n  validateElementsDisplayed / NotDisplayed\\\n  getCheckboxValue, validateCheckboxValue\\\n  getElementsNumber\\\n  getElementText, validateElementText\n\n### Other methods\n\nOther methods are not directly related to the actions performed on the page, but they may prove useful while writing tests. These are, for example, loggers and methods allowing the taking of screenshots or loading the current time.\n\n## Configuration\n\nTo configure the framework, you can use the config.json file. It’s one of the framework’s requirements, so it should be visible in the main project directory. It contains the most important settings of the framework – from the most basic, like the Selenium Server URL, to more advanced ones, like the level of proxy logging or Selenium Server polling delay. The picture presents a sample configuration; you’ll find more detailed information in the GitHub documentation.\n\n![Web Testing Framework 2](/img/development-code-configuration.png)\n\n## How do you make a test?\n\nThe framework doesn’t impose any particular way of writing a test, apart from the fact that Gherkin scenarios must be on the top. Below, you’ll see one of the possibilities.\n\n### Gherkin\n\nIn the **_features_** directory, there are .**_feature_** files containing Gherkin scenarios for particular functionalities. In the example below, you can see a sample scenario verifying the correctness of an online shop functionality – buying a product.\n\n![Web Testing Framework 3](/img/development-code-scenario.jpg)\n\nThe steps are high-level, as they describe whole actions, for instance, adding a product to the cart. In this way, they are both understandable by business users and useful for dev team, and at the same time they reduce the overhead resulting from writing scenarios. Additionally, any possible changes in the app will not result in the need to rewrite a big part of the scenario – some modifications “below” should be enough.\n\nIn most cases, test data are not directly placed in Gherkin – there is a clear, separate name which allows to get them from test-data file.\n\n### Step->Context\n\nThe example of logging in will show you how individual steps are mapped with corresponding actions.\n\n![Web Testing Framework 4](/img/development-code-user-logs.jpg)\n\nContext methods are automatically generated by Cucumber – you just need to name the parameters used (in this case: _**userName**_) and call the adequate method from the proper page.\n\n![Web Testing Framework 5](/img/development-code.jpg)\n\nIn this situation, the log-in form undergoing the test is on the home page – therefore, the _**logIn**_ method used to log in is located in _**HomePage**_ (the home page is really simplified so there’s no need for a separate Page, such as _**LoginPage**_). It only serves to execute the appropriate method and pass the parameter: userName (“test user 1”). The correct logic is in the Page method.\n\n### Page\n\n![Web Testing Framework 6](/img/development-code-function-login.jpg)\n\nThe **_logIn_** method visible above fills in the login and password fields and clicks on “log in” button. Test data (username or password) are taken from the test-data file by means of the **_getUserData_** method. The user in test data is identified through the username provided in the **_userName_** parameter.\n\n### Test data\n\nTest data are located in _**testData.js**_. This can be, for example, JSON containing all the necessary values. User data can be named, e.g. _**userData**_. In the log-in scenario, the username and password would be sufficient. In other scenarios, though, other details might be necessary, such as the e-mail address.\n\n![Web Testing Framework 7](/img/development-code-user-data.jpg)\n\nThe _**getUserData**_ method presented in the example only returns values for a particular user, improving readability when compared to direct getting of the value. It might happen, though, that the data must be processed in some way.\n\n![Web Testing Framework 8](/img/development-code-test-data.jpg)\n\n## Open source\n\nThe Boldare Web Testing Framework is a young project – there are many functionalities to be added and numerous ways of improving the existing ones. Feel free to take part in the process of developing the framework, both in the form of PRs and through suggestions of what could be changed or made better.\n\nYou can access the framework via GitHub and NPM.","fullwidthImage":null}],"settings":{"date":"2018-06-05T08:36:24+02:00","category":"Tech","metaDescription":"Boldare’s Web Testing Framework is an Open Source framework designed for the automation of End-To-End (E2E) tests of web applications. ","metaTitle":"Open Source Web Testing Framework","related":null,"slug":"web-testing-framework","canonical":""},"contributor":"Tomasz Konieczny","mainContent":null}},"allMarkdownRemark":{"edges":[{"node":{"excerpt":"","id":"a9a74167-061d-5449-a2c6-dc7c1782dc89","fields":{"slug":"/blog/6-benefits-from-having-a-qa-ba-in-your-development-team/"},"frontmatter":{"title":"6 benefits from having a QA/BA in your development team","job":null,"photo":null,"cover":"/img/team-meeting-in-conference-room.jpg","templateKey":"article-page","settings":{"date":"October 11, 2018","slug":"6-benefits-from-having-qa-ba-in-your-team","type":"blog","category":"How to"},"contributor":"Natalia Kolińska","box":{"content":{"title":"6 benefits from having a QA/BA in your development team","tags":null,"clientLogo":null,"coverImage":"/img/team-meeting-in-conference-room.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"4063b7a7-933f-5dc0-ad59-812f89ab802d","fields":{"slug":"/blog/digitalizing-renewable-energy/"},"frontmatter":{"title":"Digitalizing renewable energy","job":null,"photo":null,"cover":"/img/wind-turbines-photo-by-jason-blackeye.jpg","templateKey":"article-page","settings":{"date":"October 23, 2018","slug":"digitalizing-renewable-energy","type":"blog","category":"Future"},"contributor":"Kamil Mizera","box":{"content":{"title":"Digitalizing renewable energy","tags":null,"clientLogo":null,"coverImage":"/img/wind-turbines-photo-by-jason-blackeye.jpg"},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"209d906b-0385-5007-8608-34403e51f78e","fields":{"slug":"/blog/system-story-the-little-sentence-that-builds-big-things/"},"frontmatter":{"title":"System Story – the little sentence that builds big things","job":null,"photo":null,"cover":"/img/system-story.jpg","templateKey":"article-page","settings":{"date":"October 29, 2018","slug":"system-story-the-little-sentence-that-builds-big-things","type":"blog","category":"How to"},"contributor":"Anna Bil","box":{"content":{"title":"System Story – the little sentence that builds big things","tags":null,"clientLogo":null,"coverImage":"/img/system-story.jpg"},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"a3748254-2e36-5a1e-b1c3-e12684fd7a66","fields":{"slug":"/blog/marble-js-new-open-source-framework-for-javascript/"},"frontmatter":{"title":"Marble.js – new open source framework for JavaScript","job":null,"photo":null,"cover":"/img/marblejs.jpg","templateKey":"article-page","settings":{"date":"November 07, 2018","slug":"marblejs-new-open-source-framework-for-javascript","type":"blog","category":"Tech"},"contributor":"Kamil Mizera","box":{"content":{"title":"Marble.js – new open source framework for JavaScript","tags":null,"clientLogo":null,"coverImage":"/img/marblejs.jpg"},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"594cc335-68ab-5f32-a312-9ca32b8ec9a8","fields":{"slug":"/career/qa-business-analyst-warszawa/"},"frontmatter":{"title":"QA Business Analyst Warszawa","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 18, 2018","slug":"qa-business-analyst-warszawa","type":"career","category":"Product"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"d8e30317-a1e2-524d-bd1c-ef42b29e651d","fields":{"slug":"/career/social-media-strategiest-warszawa/"},"frontmatter":{"title":"Social Media Strategist Warszawa","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 18, 2018","slug":"social-media-strategiest-warszawa","type":"career","category":"Marketing"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"1b9bd994-2308-5d94-96c1-c5d847deb012","fields":{"slug":"/career/product-designer-warszawa/"},"frontmatter":{"title":"Product Designer Warszawa","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 18, 2018","slug":"product-designer-warszawa","type":"career","category":"Product"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"5fd9230c-2c5f-5e3f-a6f6-f37117047653","fields":{"slug":"/career/php-developer-warszawa/"},"frontmatter":{"title":"PHP Developer Warszawa","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 18, 2018","slug":"php-developer-warszawa","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"d6826549-8d52-56d2-9b00-73735c4ce91f","fields":{"slug":"/career/java-developer-gliwice/"},"frontmatter":{"title":"JAVA Developer Gliwice","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 18, 2018","slug":"java-developer-gliwice","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"d0757525-e447-59d2-96c2-5db00efdd966","fields":{"slug":"/career/python-developer-warszawa/"},"frontmatter":{"title":"Python Developer Warszawa","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 18, 2018","slug":"python-developer-warszawa","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"058baa2d-fe58-58db-809f-5835a01341ad","fields":{"slug":"/career/scrum-master-warszawa/"},"frontmatter":{"title":"Scrum Master Warszawa","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 18, 2018","slug":"scrum-master-warszawa","type":"career","category":"Product"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"17ffb8fe-12d1-50e1-b094-e9b7e748ff70","fields":{"slug":"/career/finance-and-administrations-specialist-gliwice/"},"frontmatter":{"title":"Finance and Administrations Specialist Gliwice","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 18, 2018","slug":"finance-administrations-specialist-gliwice","type":"career","category":"Operations"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"e6fb07bd-2a4b-5964-bac2-c651e255cd75","fields":{"slug":"/career/devops-engineer-gliwice/"},"frontmatter":{"title":"DevOps Engineer Gliwice","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 18, 2018","slug":"devops-engineer-gliwice","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"95c0f56e-e668-5c8e-9615-cc674fdc1e5f","fields":{"slug":"/career/qa-engineer-warszawa/"},"frontmatter":{"title":"QA Engineer Warszawa","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 18, 2018","slug":"qa-engineer-warszawa","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"d242e797-634b-5c1c-94f0-711b73d53775","fields":{"slug":"/career/social-media-strategiest-gliwice/"},"frontmatter":{"title":"Social Media Strategist Gliwice","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 19, 2018","slug":"social-media-strategiest-gliwice","type":"career","category":"Marketing"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"d8a55b1f-f6bc-5ac3-ab78-ce7df7706572","fields":{"slug":"/career/scrum-master-gliwice/"},"frontmatter":{"title":"Scrum Master Gliwice","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 19, 2018","slug":"scrum-master-gliwice","type":"career","category":"Product"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"008fd063-191a-5e71-a7d7-c95884746fb7","fields":{"slug":"/career/python-developer-gliwice/"},"frontmatter":{"title":"Python Developer Gliwice","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 19, 2018","slug":"python-developer-gliwice","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"8956fba2-8e4b-5d11-a3a4-112f110c8134","fields":{"slug":"/career/php-developer-gliwice/"},"frontmatter":{"title":"PHP Developer Gliwice","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 19, 2018","slug":"php-developer-gliwice","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"241104c9-d806-5fcb-a8a2-bc771d824876","fields":{"slug":"/career/php-developer-wroclaw/"},"frontmatter":{"title":"PHP Developer Wroclaw","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 19, 2018","slug":"php-developer-wroclaw","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"92bba01b-1041-5b5a-8fa4-cb42a9af478b","fields":{"slug":"/career/qa-engineer-gliwice/"},"frontmatter":{"title":"QA Engineer Gliwice","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 19, 2018","slug":"qa-engineer-gliwice","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"a8cc031a-3526-5ab6-9889-4589e69c387a","fields":{"slug":"/career/qa-business-analyst-gliwice/"},"frontmatter":{"title":"QA Business Analyst Gliwice","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 19, 2018","slug":"qa-business-analyst-gliwice","type":"career","category":"Product"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"28afd319-72b8-5ccd-b10b-b13905bc4f23","fields":{"slug":"/career/product-designer-gliwice/"},"frontmatter":{"title":"Product Designer Gliwice","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 19, 2018","slug":"product-designer-gliwice","type":"career","category":"Product"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"da24caca-b571-573f-ac8b-431bbc084e37","fields":{"slug":"/career/product-designer-wroclaw/"},"frontmatter":{"title":"Product Designer Wroclaw","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 19, 2018","slug":"product-designer-wroclaw","type":"career","category":"Product"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"a6893e76-0dc4-5213-9990-af16c36e632d","fields":{"slug":"/career/javascript-developer-wroclaw/"},"frontmatter":{"title":"JavaScript Developer Wroclaw","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 19, 2018","slug":"javascript-developer-wroclaw","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"43f7c991-491f-5b3b-ad28-1fd852c0a875","fields":{"slug":"/blog/differences-between-class-and-dex-files-in-java-android/"},"frontmatter":{"title":"Differences between .class and .dex files in Java & Android","job":null,"photo":null,"cover":"/img/25094713777_cae2db29e7_k-1-.jpg","templateKey":"article-page","settings":{"date":"November 29, 2018","slug":"differences-between-class-and-dex-files-in-java-android","type":"blog","category":"Tech"},"contributor":"Grzegorz Kukla","box":{"content":{"title":"Differences between .class and .dex files in Java & Android","tags":null,"clientLogo":null,"coverImage":"/img/devsatwork.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"625ca873-6a9d-55e6-8564-9390834dc2bf","fields":{"slug":"/blog/hackyeah-2018-boldare-team-at-the-biggest-stationary-hackathon-in-the-world/"},"frontmatter":{"title":"HackYeah 2018 – Boldare Team at the biggest stationary hackathon in the world!","job":null,"photo":null,"cover":"/img/img_9134.jpg","templateKey":"article-page","settings":{"date":"December 04, 2018","slug":"hackyeah-2018-boldare-team-at-the-hackathon","type":"blog","category":"People"},"contributor":"Claudia Wensierska","box":{"content":{"title":"HackYeah 2018 – Boldare Team at the biggest stationary hackathon in the world!","tags":null,"clientLogo":null,"coverImage":"/img/img_9134.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"4ad6cf8e-d46b-5ee1-9542-91bdcc2e3b8d","fields":{"slug":"/blog/10-steps-to-becoming-a-javascript-developer/"},"frontmatter":{"title":"10 Steps to Becoming a JavaScript Developer","job":null,"photo":null,"cover":"/img/boldare-js-developers-team.jpg","templateKey":"article-page","settings":{"date":"December 05, 2018","slug":"10-steps-becoming-javascript-developer","type":"blog","category":"Tech"},"contributor":"Mateusz Grzesiukiewicz","box":{"content":{"title":"10 Steps to Becoming a JavaScript Developer","tags":null,"clientLogo":null,"coverImage":"/img/boldare-js-javascript-developers-team.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"f3b97c7c-4034-565a-89af-dd7bdfd33cea","fields":{"slug":"/blog/digital-product-prototyping-it-s-a-team-effort/"},"frontmatter":{"title":"Digital Product Prototyping – it’s a team effort","job":null,"photo":null,"cover":"POC-teameffort-blog_cover_v4.jpg","templateKey":"article-page","settings":{"date":"December 07, 2018","slug":"digital-product-prototyping-team-effort","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"Digital Product Prototyping – it’s a team effort","tags":null,"clientLogo":null,"coverImage":"POC-teameffort-miniatura.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"10cea117-d483-585e-a95f-66a05d8db143","fields":{"slug":"/career/customer-success-guide-warszawa/"},"frontmatter":{"title":"Customer Success Guide Warszawa","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"December 09, 2018","slug":"customer-success-guide-warszawa","type":"career","category":"Product"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"a8b1d57b-582d-55da-8968-18f6c4f487ad","fields":{"slug":"/career/customer-success-guide-gliwice/"},"frontmatter":{"title":"Customer Success Guide Gliwice","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"December 09, 2018","slug":"customer-success-guide-gliwice","type":"career","category":"Product"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"1dceda6f-73a4-58bb-8340-b0d3d867a7b5","fields":{"slug":"/career/devops-engineer-warszawa/"},"frontmatter":{"title":"DevOps Engineer Warszawa","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"December 12, 2018","slug":"devops-engineer-warszawa","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"3dbc7b9b-b163-5855-8b9a-b6b4b94ba3db","fields":{"slug":"/blog/effective-scaling-through-teamwork/"},"frontmatter":{"title":"Effective scaling through teamwork","job":null,"photo":null,"cover":"/img/working-in-the-office.jpg","templateKey":"article-page","settings":{"date":"December 13, 2018","slug":"scaling-team-for-digital-product","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"Effective scaling through teamwork","tags":null,"clientLogo":null,"coverImage":"/img/working-in-the-office-2.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"3bc4a242-1228-50d6-9aad-a141515624dc","fields":{"slug":"/career/content-writer-warszawa/"},"frontmatter":{"title":"Content Writer Warszawa","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"December 14, 2018","slug":"content-writer-warszawa","type":"career","category":"Marketing"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"ad58d0ec-f978-541a-bf81-acccfe623d8f","fields":{"slug":"/career/content-writer-gliwice/"},"frontmatter":{"title":"Content Writer Gliwice","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"December 14, 2018","slug":"content-writer-gliwice","type":"career","category":"Marketing"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"3ddb8338-24b7-5e73-8490-339437d999a7","fields":{"slug":"/blog/building-digital-products-based-on-machine-learning-the-cost-perspective/"},"frontmatter":{"title":"Building digital products based on machine learning - the cost perspective","job":null,"photo":null,"cover":"/img/team-meeting-discussion.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"machine-learning-digital-product-costs","type":"blog","category":"Strategy"},"contributor":"Kamil Mizera","box":{"content":{"title":"Building digital products based on machine learning - the cost perspective","tags":null,"clientLogo":null,"coverImage":"/img/team-meeting-discussion.jpg"},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"66c4db9b-3dd4-5ab6-b8ef-9c515cf2c141","fields":{"slug":"/blog/lean-process-for-a-better-product/"},"frontmatter":{"title":"Lean process for a better product","job":null,"photo":null,"cover":"/img/team-meeting-in-mir-room.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"lean-process-for-better-product","type":"blog","category":"Digital Product"},"contributor":"Kamil Mizera","box":null}}},{"node":{"excerpt":"","id":"e9c5a21b-f2e8-536e-a8b7-80f47bce5e3d","fields":{"slug":"/blog/digital-product-prototyping-what-s-it-all-about/"},"frontmatter":{"title":"Digital Product Prototyping – what’s it all about?","job":null,"photo":null,"cover":"POC-prototyp-blog_cover.jpg","templateKey":"article-page","settings":{"date":"December 18, 2018","slug":"digital-product-prototyping-whats-it-all-about","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"What is a igital product prototype?","tags":null,"clientLogo":null,"coverImage":"POC-prototyp-miniatura_2x.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"e4247904-a734-55b0-b6b1-5efb16eb8ed6","fields":{"slug":"/blog/digital-travel-trends-in-the-experience-economy/"},"frontmatter":{"title":"Digital travel trends in the experience economy","job":null,"photo":null,"cover":"/img/travel-digital-trends.png","templateKey":"article-page","settings":{"date":"December 21, 2018","slug":"digital-travel-trends-in-experience-economy","type":"blog","category":"Ideas"},"contributor":"Radek Grabarek","box":{"content":{"title":"Digital travel trends in the experience economy","tags":null,"clientLogo":null,"coverImage":"/img/travel.png"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"1125509f-7b32-5388-bfc9-52dea1165eb0","fields":{"slug":"/blog/converter-pattern-in-java-8/"},"frontmatter":{"title":"Converter pattern in Java 8","job":null,"photo":null,"cover":"/img/converter-pattern-in-java8-boldare-blog.jpg","templateKey":"article-page","settings":{"date":"January 01, 2019","slug":"converter-pattern-in-java-8","type":"blog","category":"Tech"},"contributor":"Anna Skawińska","box":{"content":{"title":"Converter pattern in Java 8","tags":null,"clientLogo":null,"coverImage":"/img/converter-pattern-in-java-8-boldare-blog-cover.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"ffad3fbb-e3e1-5785-9d35-95ce10a13143","fields":{"slug":"/blog/2018-at-boldare-the-story-of-great-changes-in-ten-graphics/"},"frontmatter":{"title":"2018 at Boldare: the story of great changes in ten graphics","job":null,"photo":null,"cover":"/img/cover-na-bloga.jpg","templateKey":"article-page","settings":{"date":"January 16, 2019","slug":"2018-at-boldare-the-story-of-great-changes","type":"blog","category":"News"},"contributor":"Kamil Mizera","box":{"content":{"title":"2018 at Boldare: the story of great changes in ten graphics","tags":null,"clientLogo":null,"coverImage":"/img/blog-miniaturka.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"7e5ab016-da29-5222-9e79-1442657b5cb9","fields":{"slug":"/career/qa-business-analyst-wroclaw/"},"frontmatter":{"title":"QA Business Analyst Wroclaw","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"January 18, 2019","slug":"qa-business-analyst-wroclaw","type":"career","category":"Product"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"1f967c77-6045-55b9-9c94-30e792ce69f6","fields":{"slug":"/career/qa-engineer-wroclaw/"},"frontmatter":{"title":"QA Engineer Wroclaw","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"January 24, 2019","slug":"qa-engineer-wroclaw","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"a64966ec-0fd9-5528-a7f7-526540c87f49","fields":{"slug":"/blog/eres-yachting-designing-a-premium-online-booking-experience-for-luxury-travel/"},"frontmatter":{"title":"ERES Yachting - designing a premium online booking experience for luxury travel","job":null,"photo":null,"cover":"/img/coverfoto-blogpost-big.jpg","templateKey":"article-page","settings":{"date":"January 30, 2019","slug":"eres-yachting-designing-premium-online-booking-experience","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"ERES Yachting - designing a premium online booking experience for luxury travel","tags":null,"clientLogo":null,"coverImage":"/img/coverfoto-blogpost-small.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"5df42308-319e-5e86-b1df-42dcad8f925d","fields":{"slug":"/blog/choosing-digital-product-development-partner-political-and-economic-issues/"},"frontmatter":{"title":"Choosing a digital product development partner - the political and economic issues","job":null,"photo":null,"cover":"img/video-call-at-conference-room.jpg","templateKey":"article-page","settings":{"date":"February 01, 2019","slug":"choosing-digital-product-development-partner-political-and-economic-issues","type":"blog","category":"Strategy"},"contributor":"Paweł Kaiser","box":{"content":{"title":"Choosing a development partner - the political and economic issues","tags":null,"clientLogo":null,"coverImage":"img/video-call-at-conference-room.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"95f1cc78-0016-5002-b2d9-074325c4687e","fields":{"slug":"/blog/how-much-should-you-pay-for-digital-product-development/"},"frontmatter":{"title":"How much should you pay for a digital product development?","job":null,"photo":null,"cover":"img/webp.net-resizeimage-1-.jpg","templateKey":"article-page","settings":{"date":"February 01, 2019","slug":"how-much-should-you-pay-for-digital-product-development","type":"blog","category":"Strategy"},"contributor":"Paweł Kaiser","box":{"content":{"title":"Looking for a digital product development partner? ","tags":null,"clientLogo":null,"coverImage":"img/webp.net-resizeimage-1-.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"17a0958e-87fb-568c-91ab-17183a611644","fields":{"slug":"/blog/face-validator-open-source-symfony3-facial-recognition-bundle/"},"frontmatter":{"title":"Face Validator: open source Symfony3 facial recognition bundle","job":null,"photo":null,"cover":"/img/facevailidator.jpg","templateKey":"article-page","settings":{"date":"February 13, 2019","slug":"face-detection-open-source-symfony3","type":"blog","category":"Tech"},"contributor":"Paweł Krynicki","box":{"content":{"title":"Face Validator: open source Symfony3 facial recognition bundle","tags":null,"clientLogo":null,"coverImage":"/img/facevailidatorsymfony3.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"69cd8e52-1dad-5209-89a1-8a40687b4835","fields":{"slug":"/reviews/tauron-polska-energia/"},"frontmatter":{"title":"Tauron Polska Energia, an energy company","job":null,"photo":null,"cover":null,"templateKey":"review-page","settings":{"date":"March 05, 2019","slug":"tauron-polska-energia","type":"reviews","category":null},"contributor":"Karolina Kołodziej","box":null}}},{"node":{"excerpt":"","id":"cc5b368e-1a10-5747-91b1-fc826264d915","fields":{"slug":"/reviews/virgin-radio-oman/"},"frontmatter":{"title":"Virgin Radio Oman, a part of Sabco Media ","job":null,"photo":null,"cover":null,"templateKey":"review-page","settings":{"date":"March 05, 2019","slug":"virgin-radio-oman","type":"reviews","category":null},"contributor":"Karolina Kołodziej","box":null}}},{"node":{"excerpt":"","id":"d9dbfd84-e0e2-5719-acbf-2b9a5745c048","fields":{"slug":"/reviews/eres-yachting/"},"frontmatter":{"title":"Eres Yachting - a booking platform","job":null,"photo":null,"cover":null,"templateKey":"review-page","settings":{"date":"March 05, 2019","slug":"eres-yachting","type":"reviews","category":null},"contributor":"Karolina Kołodziej","box":null}}},{"node":{"excerpt":"","id":"2aa0994b-173c-5455-a4f7-ce8edab3dfc6","fields":{"slug":"/reviews/numera-lighting/"},"frontmatter":{"title":"Numera Lighting, a lighting manufacturer","job":null,"photo":null,"cover":null,"templateKey":"review-page","settings":{"date":"March 06, 2019","slug":"numera-lighting","type":"reviews","category":null},"contributor":"Karolina Kołodziej","box":null}}},{"node":{"excerpt":"","id":"67da4b02-5c53-5e7e-a103-fde6c3803144","fields":{"slug":"/reviews/holiday-taxis/"},"frontmatter":{"title":"Holiday Taxis - a transport booking service","job":null,"photo":null,"cover":null,"templateKey":"review-page","settings":{"date":"March 06, 2019","slug":"holiday-taxis","type":"reviews","category":null},"contributor":"Karolina Kołodziej","box":null}}},{"node":{"excerpt":"","id":"d068d911-945a-540c-a07f-2f3f6b91b3fc","fields":{"slug":"/reviews/ezycount/"},"frontmatter":{"title":"EZYcount - a fintech startup","job":null,"photo":null,"cover":null,"templateKey":"review-page","settings":{"date":"March 06, 2019","slug":"ezycount","type":"reviews","category":null},"contributor":"Karolina Kołodziej","box":null}}},{"node":{"excerpt":"","id":"828e7028-9bdf-59d5-bbbb-f851267671ab","fields":{"slug":"/reviews/lamden/"},"frontmatter":{"title":"Lamden - a blockchain startup","job":null,"photo":null,"cover":null,"templateKey":"review-page","settings":{"date":"March 06, 2019","slug":"lamden","type":"reviews","category":null},"contributor":"Karolina Kołodziej","box":null}}},{"node":{"excerpt":"","id":"d854d112-347e-5811-8551-d652ddfe5e2c","fields":{"slug":"/reviews/brasswillow/"},"frontmatter":{"title":"BrassWillow - a consulting company","job":null,"photo":null,"cover":null,"templateKey":"review-page","settings":{"date":"March 06, 2019","slug":"brasswillow","type":"reviews","category":null},"contributor":"Karolina Kołodziej","box":null}}},{"node":{"excerpt":"","id":"c1ec5b4f-7e91-5e73-bc13-fd87f40119a9","fields":{"slug":"/blog/top-3-products-weve-built-in-php-challenges-and-conclusions/"},"frontmatter":{"title":"TOP 3 products we've built in PHP – challenges and conclusions","job":null,"photo":null,"cover":"/img/webp.net-resizeimage-1-.jpg","templateKey":"article-page","settings":{"date":"March 12, 2019","slug":"top-3-products-php-tojjar","type":"blog","category":"Tech"},"contributor":"Mariusz Bąk","box":{"content":{"title":"TOP 3 products we've built in PHP – challenges and conclusions","tags":null,"clientLogo":null,"coverImage":"/img/takamol-tojjar-case-study-boldare-product-development-team.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"c41c41c0-b0ba-5f70-88ce-c4d3f425fa7f","fields":{"slug":"/blog/when-two-become-one-the-story-of-boldare/"},"frontmatter":{"title":"When two become one. The story of Boldare","job":null,"photo":null,"cover":"/img/anna-zarudzka-and-piotr-majchrzak.jpg","templateKey":"article-page","settings":{"date":"June 04, 2018","slug":"the-story-of-boldare","type":"blog","category":"News"},"contributor":"Kamil Mizera","box":{"content":{"title":"When two become one. The story of Boldare","tags":null,"clientLogo":null,"coverImage":"/img/anna-zarudzka-and-piotr-majchrzak.jpg"},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"e20e0491-9012-501f-9237-56c08d8a7dda","fields":{"slug":"/blog/wtf-open-source-web-testing-framework/"},"frontmatter":{"title":"WTF: Open Source Web Testing Framework","job":null,"photo":null,"cover":"/img/kamil-chyrek.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"web-testing-framework","type":"blog","category":"Tech"},"contributor":"Tomasz Konieczny","box":null}}},{"node":{"excerpt":"","id":"ae745671-5fac-5bf4-8fc6-5584ce0332f4","fields":{"slug":"/blog/transforming-us-politics-with-a-voting-platform-for-concerned-citizens/"},"frontmatter":{"title":"Transforming US politics with a voting platform for concerned citizens","job":null,"photo":null,"cover":"/img/usa-flag.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"case-study-polco","type":"blog","category":"Case Study"},"contributor":"Karolina Kołodziej","box":{"content":{"title":"Transforming US politics with a voting platform for concerned citizens","tags":null,"clientLogo":null,"coverImage":null},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"3d384b14-f104-5965-86f7-224829f22c9d","fields":{"slug":"/blog/speeding-up-e-commerce-content-moderation-with-machine-learning-based-on-amazon-web-services/"},"frontmatter":{"title":"Speeding up e-commerce content moderation with Machine Learning based on Amazon Web Services","job":null,"photo":null,"cover":"/img/human-eye.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"machine-learning-content-moderation","type":"blog","category":"Case Study"},"contributor":"Paweł Krynicki","box":{"content":{"title":"Speeding up e-commerce content moderation with Machine Learning based on Amazon Web Services","tags":null,"clientLogo":null,"coverImage":"/img/human-eye.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"31250d56-d30d-516c-a1e6-eddf4a60ad16","fields":{"slug":"/blog/how-we-do-digital-products-at-boldare-and-what-it-means-for-your-business/"},"frontmatter":{"title":"This is how Boldare Development Teams process addresses your business needs","job":null,"photo":null,"cover":"/img/open-space.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"agile-process-for-digital-product-development","type":"blog","category":"How to"},"contributor":"Kamil Mizera","box":{"content":{"title":"This is how Boldare Development Teams process addresses your business needs","tags":null,"clientLogo":null,"coverImage":"/img/open-space.jpg"},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"364acb1e-105f-5dc3-b49b-265e7ef8c5a9","fields":{"slug":"/blog/how-to-start-a-neural-network-with-javascript-in-5-minutes/"},"frontmatter":{"title":"How to start a neural network with JavaScript in 5 minutes","job":null,"photo":null,"cover":"/img/barbara-strak.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"neural-network-with-javascript","type":"blog","category":"Tech"},"contributor":"Kamil Mikosz","box":null}}},{"node":{"excerpt":"","id":"05a33609-f9e8-55af-a595-50e4bdd418a2","fields":{"slug":"/blog/how-to-scale-a-monolithic-mvp-application-without-losing-business/"},"frontmatter":{"title":"How to scale a monolithic MVP application without losing business?","job":null,"photo":null,"cover":"/img/dubai.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"case-study-ionoview","type":"blog","category":"Case Study"},"contributor":"Karolina Kołodziej","box":{"content":{"title":"How to scale a monolithic MVP application without losing business?","tags":null,"clientLogo":null,"coverImage":null},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"98547217-caf0-56f6-955f-a615b8aaf688","fields":{"slug":"/blog/how-to-deliver-an-e-commerce-platform-mvp-in-just-6-weeks/"},"frontmatter":{"title":"How to deliver an e-commerce platform MVP in just 6 weeks","job":null,"photo":null,"cover":"/img/arabian-women.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"case-study-tojjar","type":"blog","category":"Case Study"},"contributor":"Karolina Kołodziej","box":null}}},{"node":{"excerpt":"","id":"28bad4be-ff41-5eb1-a1fa-922cfa1e511c","fields":{"slug":"/blog/how-to-create-a-teal-space-for-enhancing-creativity-and-productivity-of-self-managing-teams/"},"frontmatter":{"title":"How to create a teal space for enhancing creativity and productivity of self-managing teams","job":null,"photo":null,"cover":"/img/relax-space-big-hammock.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"teal-space-for-creativity-and-productivity","type":"blog","category":"Ideas"},"contributor":"Patrycja Kasperkiewicz","box":{"content":{"title":"How to create a teal space for enhancing creativity and productivity of self-managing teams","tags":null,"clientLogo":null,"coverImage":"/img/relax-space-hammock-and-bike.jpg"},"settings":{"tileColor":null,"textColor":null,"link":"/blog/teal-space-for-creativity-and-productivity/"},"type":"BLOG"}}}},{"node":{"excerpt":"","id":"6d31c771-b3eb-519e-850c-bd4b6ddb51d0","fields":{"slug":"/blog/from-design-to-development-in-4-weeks-creating-a-mobile-and-web-mvp-for-an-iconic-brand/"},"frontmatter":{"title":"From design to development in 4 weeks. Creating a mobile and web MVP for an iconic brand","job":null,"photo":null,"cover":"/img/virgin-radio-oman-mobile-app-design.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"case-study-virgin-radio-oman","type":"blog","category":"Case Study"},"contributor":"Karolina Kołodziej","box":{"content":{"title":"From design to development in 4 weeks. Creating a mobile and web MVP for an iconic brand","tags":null,"clientLogo":null,"coverImage":null},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"12ceee0c-1750-5780-b53a-7dbefa112d19","fields":{"slug":"/blog/designing-a-simple-search-experience-for-a-complex-product-with-a-luxurious-interface/"},"frontmatter":{"title":"Designing a simple search experience for a complex product with a luxurious interface","job":null,"photo":null,"cover":"/img/yacht.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"case-study-eres-yachting-booking-platform","type":"blog","category":"Case Study"},"contributor":"Karolina Kołodziej","box":{"content":{"title":"Designing a simple search experience for a complex product with a luxurious interface","tags":null,"clientLogo":null,"coverImage":null},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"a4fe2a8a-4bf4-5978-855a-7ea9ca9f5c05","fields":{"slug":"/blog/best-outsourcing-practices-meetup-–-designed-for-ctos/"},"frontmatter":{"title":"Best Outsourcing Practices Meetup – designed for CTOs","job":null,"photo":null,"cover":"/img/outsourcing-best-practices-meetup-group.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"cto-asks-meetup","type":"blog","category":"People"},"contributor":"Kamil Mizera","box":{"content":{"title":"Best Outsourcing Practices Meetup – designed for CTOs","tags":null,"clientLogo":null,"coverImage":null},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"6e6f6df1-3ef1-5301-867f-a342d766efd9","fields":{"slug":"/blog/agile-and-skilled-development-teams-for-a-french-unicorn/"},"frontmatter":{"title":"Agile and skilled development teams for a French unicorn","job":null,"photo":null,"cover":"/img/blablacar-office.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"case-story-blablacar","type":"blog","category":"Case Study"},"contributor":"Karolina Kołodziej","box":{"content":{"title":"Agile and skilled development teams for a French unicorn","tags":null,"clientLogo":null,"coverImage":null},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"2c5d6b57-5f85-5d02-9fe0-8696c2519059","fields":{"slug":"/blog/a-step-by-step-guide-to-event-storming-–-our-experience/"},"frontmatter":{"title":"A step by step guide to Event Storming – our experience","job":null,"photo":null,"cover":"/img/woman-in-room-with-glass-walls.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"event-storming-guide","type":"blog","category":"How to"},"contributor":"Natalia Kolińska","box":null}}},{"node":{"excerpt":"","id":"ce64d144-f9f4-528b-be78-62cda2836cbb","fields":{"slug":"/blog/5-signs-you’re-ready-for-holacracy/"},"frontmatter":{"title":"5 Signs You’re Ready for Holacracy","job":null,"photo":null,"cover":"/img/team-meeting-during-holacracy-workshop.jpg","templateKey":"article-page","settings":{"date":"June 05, 2018","slug":"5-signs-you-are-ready-for-holacracy","type":"blog","category":"Ideas"},"contributor":"Piotr Majchrzak","box":{"content":{"title":"5 Signs You’re Ready for Holacracy","tags":null,"clientLogo":null,"coverImage":"/img/team-meeting-during-holacracy-workshop.jpg"},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"2dab7565-9fc1-5d04-a721-3f7e72eec8f0","fields":{"slug":"/work/how-to-create-predictive-maintenance-software-for-wind-turbines-using-machine-learning-algorithms/"},"frontmatter":{"title":"How to create predictive maintenance software for wind turbines using machine learning algorithms","job":null,"photo":null,"cover":"/img/wind-turbine-predictive-maintenance-software-case-study.jpg","templateKey":"case-study-page","settings":{"date":"October 29, 2018","slug":"case-study-predictive-maintenance","type":null,"category":"Case Study"},"contributor":"Karolina Kołodziej","box":{"content":{"title":"How to create predictive maintenance software using machine learning","tags":["#machinelearning #python #ux #lean"],"clientLogo":null,"coverImage":null},"settings":{"tileColor":"white","textColor":"black","link":"https://www.boldare.com/work/case-study-predictive-maintenance"},"type":null}}}},{"node":{"excerpt":"","id":"a14e040a-8768-5d38-80fe-c023cc6de5bd","fields":{"slug":"/blog/introducing-data-visualization-in-d3-javascript-library/"},"frontmatter":{"title":"Introducing Data Visualization in D3 JavaScript library","job":null,"photo":null,"cover":"/img/giant-globe.jpg","templateKey":"article-page","settings":{"date":"November 07, 2018","slug":"data-visualization-in-d3-javascript-library","type":"blog","category":"Tech"},"contributor":"Marcin Brach","box":{"content":{"title":"Introducing Data Visualization in D3 JavaScript library","tags":null,"clientLogo":null,"coverImage":"/img/giant-globe.jpg"},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"77d570b2-f7ec-5415-af3e-d335793486d2","fields":{"slug":"/blog/lean-startup-series-vanity-metrics-vs-actionable-metrics/"},"frontmatter":{"title":"Lean Startup Series: Vanity Metrics vs. Actionable Metrics","job":null,"photo":null,"cover":"/img/meeting-room-1440.jpeg","templateKey":"article-page","settings":{"date":"November 19, 2018","slug":"lean-startup-vanity-metrics-vs-actionable-metrics","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"Lean Startup Series: Vanity Metrics vs. Actionable Metrics","tags":null,"clientLogo":null,"coverImage":"/img/meeting-room-1440.jpeg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"05f28b4e-5320-595c-b7b3-d147bc0bb129","fields":{"slug":"/blog/lean-startup-series-validated-learning/"},"frontmatter":{"title":"Lean Startup Series: Validated Learning","job":null,"photo":null,"cover":"/img/team-at-work-1440.jpg","templateKey":"article-page","settings":{"date":"November 21, 2018","slug":"lean-startup-validated-learning","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"Lean Startup Series: Validated Learning","tags":null,"clientLogo":null,"coverImage":"/img/team-at-work-1440.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"e9317355-0ae3-5691-ade0-f06e70ac4ab3","fields":{"slug":"/blog/practical-tips-on-changing-the-service-provider-and-keeping-your-digital-product-delivered/"},"frontmatter":{"title":"Practical tips on changing the service provider and still delivering your digital product","job":null,"photo":null,"cover":"/img/dev-team-at-work.jpg","templateKey":"article-page","settings":{"date":"November 25, 2018","slug":"changing-the-digital-product-service-provider","type":"blog","category":"Strategy"},"contributor":"Adam Ziemba","box":{"content":{"title":"Practical tips on changing the service provider and keeping your digital product delivered ","tags":null,"clientLogo":null,"coverImage":"/img/dev-team-at-work-cover.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"3c699bf0-2b0f-5b91-a69a-41dee56279f7","fields":{"slug":"/blog/lean-startup-series-innovation-accounting/"},"frontmatter":{"title":"Lean Startup Series: Innovation Accounting","job":null,"photo":null,"cover":"/img/lean-startup-chart.jpg","templateKey":"article-page","settings":{"date":"November 28, 2018","slug":"lean-startup-innovation-accounting","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"Lean Startup series: innovation accounting","tags":null,"clientLogo":null,"coverImage":"/img/lean-startup-chart.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"23ac8e45-1c10-544a-ae63-73a9dc74bc77","fields":{"slug":"/blog/predictive-maintenance-for-wind-turbines-an-interview-with-boldare-s-machine-learning-engineers/"},"frontmatter":{"title":"Predictive maintenance for wind turbines - an interview with Boldare’s machine learning engineers","job":null,"photo":null,"cover":"/img/machine-learning-team-boldare.png","templateKey":"article-page","settings":{"date":"November 30, 2018","slug":"predictive-maintenance-wind-turbine","type":"blog","category":"Digital Product"},"contributor":"Mateusz Kościelak","box":{"content":{"title":"Predictive maintenance for wind turbines - an interview with Boldare’s machine learning engineers","tags":null,"clientLogo":null,"coverImage":"/img/machine-learning-team-boldare.png"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"545ca9ce-097c-5047-a759-a6fd14566899","fields":{"slug":"/blog/product-market-fit-for-expanding-market-demand/"},"frontmatter":{"title":"Product-Market Fit for expanding market demand","job":null,"photo":null,"cover":"/img/team-board.jpg","templateKey":"article-page","settings":{"date":"December 05, 2018","slug":"product-market-fit-expanding-demand","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"Product-Market Fit for expanding market demand","tags":null,"clientLogo":null,"coverImage":"/img/team-board-miniatura.jpeg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"68a10263-08e5-5906-aa47-8a3e56250b23","fields":{"slug":"/blog/product-vision-workshops-seeing-clearly-from-the-beginning/"},"frontmatter":{"title":"Product Vision Workshops – seeing clearly from the beginning","job":null,"photo":null,"cover":"/img/team-meetings.jpg","templateKey":"article-page","settings":{"date":"December 11, 2018","slug":"product-vision-workshops-toolkit","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"Product Vision Workshops – seeing clearly from the beginning","tags":null,"clientLogo":null,"coverImage":"/img/team-meetings.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"be4dba11-a1c4-5a55-94de-13271c6c5fe7","fields":{"slug":"/blog/the-what-why-and-how-of-mvps/"},"frontmatter":{"title":"MVP development - what, why & how","job":null,"photo":null,"cover":"/img/rallo.png","templateKey":"article-page","settings":{"date":"December 12, 2018","slug":"mvp-what-why-how","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"MVP development - what, why & how","tags":null,"clientLogo":null,"coverImage":"/img/rallo-mini.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"97b4ca81-c274-565c-84db-4d0e62bf2d7a","fields":{"slug":"/blog/user-satisfaction-user-perspective-user-oriented-approach-an-interview-with-product-designer-pawel-capaja/"},"frontmatter":{"title":"\"User satisfaction. User perspective. User-oriented approach\" - an interview with Paweł Capaja","job":null,"photo":null,"cover":"/img/cover-photo-blogspot.jpg","templateKey":"article-page","settings":{"date":"December 12, 2018","slug":"product-desinger-pawel-capaja-interview","type":"blog","category":"Ideas"},"contributor":"Kamil Mizera","box":{"content":{"title":"What does it mean to be a Product Designer- an interview with Paweł Capaja","tags":null,"clientLogo":null,"coverImage":"/img/cover-photo-miniaturka.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"960777c2-f59c-58c3-8323-72557ba6353d","fields":{"slug":"/blog/product-market-fit-teamworking-for-results/"},"frontmatter":{"title":"Product-Market Fit – teamworking for results","job":null,"photo":null,"cover":"/img/team-meeting-1440.jpeg","templateKey":"article-page","settings":{"date":"December 14, 2018","slug":"product-market-fit-team-for-results","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"Product-Market Fit – teamworking for results","tags":null,"clientLogo":null,"coverImage":"/img/team-meeting-1440.jpeg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"25800c12-fafc-5c39-ac21-19b137e9928b","fields":{"slug":"/blog/minimum-viable-products-it-s-all-about-the-team/"},"frontmatter":{"title":"Minimum Viable Products? It’s all about the team","job":null,"photo":null,"cover":"/img/teamwork.jpg","templateKey":"article-page","settings":{"date":"December 18, 2018","slug":"minimum-viable-product-team","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"Minimum Viable Products? It’s all about the team","tags":null,"clientLogo":null,"coverImage":"/img/teamwork.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"7838a388-62b3-5d2c-b68e-3f89949c8470","fields":{"slug":"/blog/what-is-design-thinking/"},"frontmatter":{"title":"What is Design Thinking","job":null,"photo":null,"cover":"/img/design-thinking.jpg","templateKey":"article-page","settings":{"date":"December 18, 2018","slug":"what-is-design-thinking","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"What is Design Thinking","tags":null,"clientLogo":null,"coverImage":"/img/design-thinking.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"356867d7-a9ea-5c30-9725-03f4e16f5804","fields":{"slug":"/blog/the-5-dares-of-functional-testing-an-application-in-arabic/"},"frontmatter":{"title":"The 5 dares of functional testing an application in Arabic","job":null,"photo":null,"cover":"/img/openspace-work.jpg","templateKey":"article-page","settings":{"date":"January 29, 2019","slug":"5-dares-of-functional-testing-in-Arabic","type":"blog","category":"How to"},"contributor":"Natalia Kolińska","box":{"content":{"title":"The 5 dares of functional testing an application in Arabic","tags":null,"clientLogo":null,"coverImage":"/img/openspace-work.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"a662207b-eeea-5020-8b5e-7063b88e066f","fields":{"slug":"/blog/people-dont-buy-products-people-buy-meanings/"},"frontmatter":{"title":"People don't buy products. People buy meanings","job":null,"photo":null,"cover":"/img/cover.jpg","templateKey":"article-page","settings":{"date":"February 07, 2019","slug":"design-driven-innovation","type":"blog","category":"Ideas"},"contributor":"Anna Zarudzka","box":{"content":{"title":"People don't buy products. People buy meanings","tags":null,"clientLogo":null,"coverImage":"/img/cover-mini.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"1ecc7b10-fe5e-58fb-a3db-55e65e2e1f87","fields":{"slug":"/blog/what-exactly-can-you-do-with-python/"},"frontmatter":{"title":"What exactly can you do with Python? ","job":null,"photo":null,"cover":"/img/developers-working-on-machine-learning-algoritm.jpg","templateKey":"article-page","settings":{"date":"February 27, 2019","slug":"what-exactly-can-you-do-with-Python","type":"blog","category":"Tech"},"contributor":"Mateusz Wyciślik","box":{"content":{"title":"What exactly can you do with Python? ","tags":null,"clientLogo":null,"coverImage":"/img/developers-working-on-machine-learning-algoritm.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"1c8073b0-a59b-5f51-8ceb-ee4206c84b69","fields":{"slug":"/blog/what-is-node-js-used-for/"},"frontmatter":{"title":"What is Node.js used for? ","job":null,"photo":null,"cover":"node.js_a_cover_photo.png","templateKey":"article-page","settings":{"date":"March 01, 2019","slug":"what-is-node-js-used-for","type":"blog","category":"Tech"},"contributor":"Kacper Geisheimer","box":{"content":{"title":"Learn about Node.js characteristic","tags":null,"clientLogo":null,"coverImage":"node.js_.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"1dd3e9ac-ee33-5abc-bb9d-77ba0c05dbf2","fields":{"slug":"/blog/java-vs-javascript-whats-the-difference/"},"frontmatter":{"title":"Java vs. JavaScript: what's the difference? ","job":null,"photo":null,"cover":"/img/java-vs-java-script.jpg","templateKey":"article-page","settings":{"date":"March 01, 2019","slug":"java-vs-javascript-what-is-the-difference","type":"blog","category":"Tech"},"contributor":"Grzegorz Kukla","box":{"content":{"title":"See the main differences between Java and JavaScript","tags":null,"clientLogo":null,"coverImage":"/img/javascript-vs-java.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"7c10cc73-8a0f-5ada-aec9-f06400ee6913","fields":{"slug":"/blog/machine-learning-obstacles-and-limitations/"},"frontmatter":{"title":"Machine learning - obstacles and limitations","job":null,"photo":null,"cover":"machine_learning_b.png","templateKey":"article-page","settings":{"date":"March 03, 2019","slug":"machine-learning-obstacles-and-limitations","type":"blog","category":"Strategy"},"contributor":"Jonathan Wooddin","box":{"content":{"title":"See the real power of Machine Learning","tags":null,"clientLogo":null,"coverImage":"machine_learning_b.png"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"a179fdd9-84ab-5f5d-9673-c344c54057e0","fields":{"slug":"/blog/how-to-use-javascript-classes-three-different-ways/"},"frontmatter":{"title":"How to use JavaScript Classes? Three Different Ways","job":null,"photo":null,"cover":"/img/dev-team-at-work2.jpg","templateKey":"article-page","settings":{"date":"March 21, 2019","slug":"how-to-use-javascript-classes","type":"blog","category":"Tech"},"contributor":"Sebastian Musiał","box":{"content":{"title":"How to use JavaScript Classes? Three Different Ways","tags":null,"clientLogo":null,"coverImage":"/img/dev-team-at-work-cover.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"cc9ad27c-1e05-5a65-b6b8-fd0fa0fe3340","fields":{"slug":"/work/case-study-sonnen-customer-portal/"},"frontmatter":{"title":"Visualising Energy","job":null,"photo":null,"cover":"/img/sonnen-web-app-mockup.jpg","templateKey":"case-study-page","settings":{"date":"June 05, 2018","slug":"case-study-sonnen","type":"work","category":"Case Study"},"contributor":"Karolina Kołodziej","box":{"content":{"title":"Visualising Energy","tags":["ReactJS","MVP"],"clientLogo":"/img/sonnen-logo.png","coverImage":"/img/sonnen-case-study-boldare-min.jpg"},"settings":{"tileColor":"white","textColor":"black","link":"/work/case-study-sonnen/"},"type":"CASE_STUDY"}}}},{"node":{"excerpt":"","id":"3914c4ff-8699-5b32-8b57-338e0a21a76c","fields":{"slug":"/blog/wondering-about-viability-let-impact-mapping-reassure-you/"},"frontmatter":{"title":"Wondering about viability? Let impact mapping reassure you","job":null,"photo":null,"cover":"/img/team-meeting-in-apollo.jpg","templateKey":"article-page","settings":{"date":"July 06, 2018","slug":"build-product-that-make-impact","type":"blog","category":"How to"},"contributor":"Natalia Kolińska","box":null}}},{"node":{"excerpt":"","id":"8d37b599-7a71-566e-ae63-a2cbd9b38c3f","fields":{"slug":"/blog/5-git-commands-i-wish-i-d-known-about-when-i-started-coding/"},"frontmatter":{"title":"5 Git commands that will make your work smarter","job":null,"photo":null,"cover":"5_useful_git_command.jpg","templateKey":"article-page","settings":{"date":"March 01, 2019","slug":"5-git-commands-that-will-make-your-work-smarter","type":"blog","category":"Tech"},"contributor":"Łukasz Mitusiński","box":{"content":{"title":"Learn super useful Git commands","tags":null,"clientLogo":null,"coverImage":"img/5_Useful_command_cover29.03.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"ba18bf7b-b537-52c3-8689-9abaf926ada0","fields":{"slug":"/blog/the-new-dawn-of-functional-reactive-programming-in-node-js-marble-js/"},"frontmatter":{"title":"The New Dawn of functional reactive programming in Node.js - Marble.js 2.0","job":null,"photo":null,"cover":"/img/marble_fb.png","templateKey":"article-page","settings":{"date":"March 12, 2019","slug":"functional-reactive-programming-nodejs-marblejs","type":"blog","category":"Tech"},"contributor":"Józef Flakus","box":{"content":{"title":"The New Dawn of functional reactive programming in Node.js - Marble.js 2.0","tags":null,"clientLogo":null,"coverImage":"/img/marble.js-2.0-2-.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"d3068389-ad96-565d-9537-85d7499f1df0","fields":{"slug":"/blog/python-vs-c-sharp-detailed-comparison/"},"frontmatter":{"title":"Python vs C# - a detailed comparison","job":null,"photo":null,"cover":"/img/python-vs-c-_cover-duz-y-2x.jpg","templateKey":"article-page","settings":{"date":"March 13, 2019","slug":"python-vs-c-sharp-a-comparison","type":"blog","category":"Tech"},"contributor":"Krzysztof Miczkowski","box":{"content":{"title":"Python vs C# - a detailed comparison","tags":null,"clientLogo":null,"coverImage":"/img/python-vs-c-_miniatura-2x.jpg"},"settings":null,"type":"BLOG"}}}},{"node":{"excerpt":"","id":"aaa6ddb7-41d7-5322-a719-642d4ec9a332","fields":{"slug":"/work/how-to-test-a-business-idea-with-minimum-cost-time-and-effort/"},"frontmatter":{"title":"How to test a business idea with minimum cost, time and effort","job":null,"photo":null,"cover":"/img/lean-startup-moodboard.jpg","templateKey":"case-study-page","settings":{"date":"July 18, 2018","slug":"case-study-boldare","type":"work","category":"Case Study"},"contributor":"Karolina Kołodziej","box":{"content":{"title":"How to test a business idea with minimum cost, time and effort","tags":["Lean Startup","MVP","ReactJS"],"clientLogo":null,"coverImage":null},"settings":{"tileColor":"yellow","textColor":"black","link":"/work/case-study-boldare/"},"type":"CASE_STUDY"}}}},{"node":{"excerpt":"","id":"7e0e1169-5c9d-5504-a3c6-bdff665380e7","fields":{"slug":"/blog/scaling-your-product-thriving-in-the-market/"},"frontmatter":{"title":"Scaling Your Product – thriving in the market","job":null,"photo":null,"cover":"/img/ionoview-web-app-mockup.jpg","templateKey":"article-page","settings":{"date":"September 12, 2018","slug":"scaling-your-product-thriving-in-the-market","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"Scaling Your Product","tags":null,"clientLogo":null,"coverImage":"/img/ionoview-web-app-mockup.jpg"},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"b5d246ec-f16d-5e88-aacf-fbfd7fcc38a8","fields":{"slug":"/blog/how-machine-learning-is-boosting-businesses/"},"frontmatter":{"title":"How machine learning is boosting businesses","job":null,"photo":null,"cover":"/img/developers-working-on-machine-learning.jpg","templateKey":"article-page","settings":{"date":"September 12, 2018","slug":"how-machine-learning-is-boosting-businesses","type":"blog","category":"Future"},"contributor":"Dave Foxall","box":{"content":{"title":"Artificial Intelligence: the next digital frontier","tags":null,"clientLogo":null,"coverImage":"/img/developers-working-on-machine-learning-algoritm.jpg"},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"65930467-2328-534f-aa46-090ceb6c826c","fields":{"slug":"/blog/what-are-design-sprints/"},"frontmatter":{"title":"What are design sprints?","job":null,"photo":null,"cover":"/img/lean-startup-moodboard.jpg","templateKey":"article-page","settings":{"date":"September 12, 2018","slug":"what-are-design-sprints","type":"blog","category":"Digital Product"},"contributor":"Dave Foxall","box":{"content":{"title":"What are design sprints?","tags":null,"clientLogo":null,"coverImage":"/img/lean-startup-moodboard.jpg"},"settings":null,"type":null}}}},{"node":{"excerpt":"","id":"0c153fd2-b6cb-5b8a-8b39-adaf355814cc","fields":{"slug":"/career/javascript-developer-gliwice/"},"frontmatter":{"title":"JavaScript Developer Gliwice","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 05, 2018","slug":"javascript-developer-gliwice","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"79d159fe-b91f-57e9-ab54-1bba5d1dcb22","fields":{"slug":"/career/javascript-developer-warszawa/"},"frontmatter":{"title":"JavaScript Developer Warszawa","job":null,"photo":null,"cover":null,"templateKey":"job-offer-page","settings":{"date":"November 05, 2018","slug":"javascript-developer-warszawa","type":"career","category":"Technology"},"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"f8664000-0175-575e-a57b-f0fec19fb5a6","fields":{"slug":"/categories/digital-product/"},"frontmatter":{"title":"Digital Product","job":null,"photo":null,"cover":null,"templateKey":"category-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"aeb35f54-7b85-58ec-8161-46d3a6fd589d","fields":{"slug":"/categories/future/"},"frontmatter":{"title":"Future","job":null,"photo":null,"cover":null,"templateKey":"category-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"f0d198ed-1809-5505-8e7e-a97d2a75a238","fields":{"slug":"/categories/how-to/"},"frontmatter":{"title":"How to","job":null,"photo":null,"cover":null,"templateKey":"category-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"06eefb24-632a-5c1d-a885-32b84016f220","fields":{"slug":"/categories/news/"},"frontmatter":{"title":"News","job":null,"photo":null,"cover":null,"templateKey":"category-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"f07ffebb-bac3-54c3-9c75-e41a29f90c8d","fields":{"slug":"/categories/ideas/"},"frontmatter":{"title":"Ideas","job":null,"photo":null,"cover":null,"templateKey":"category-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"533db729-1580-5a09-9a54-13c2f19965b4","fields":{"slug":"/categories/people/"},"frontmatter":{"title":"People","job":null,"photo":null,"cover":null,"templateKey":"category-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"9edae576-6321-53db-9438-b43635ee49e7","fields":{"slug":"/categories/strategy/"},"frontmatter":{"title":"Strategy","job":null,"photo":null,"cover":null,"templateKey":"category-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"e8f53529-9f9f-5478-beea-c2caf5f888b1","fields":{"slug":"/categories/tech/"},"frontmatter":{"title":"Tech","job":null,"photo":null,"cover":null,"templateKey":"category-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"ad4a22c2-f1f9-5eed-a322-08c0cbfc72b4","fields":{"slug":"/contributors/adam-ziemba/"},"frontmatter":{"title":"Adam Ziemba","job":"Customer Success Guide","photo":"/img/adam-ziemba.png","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"de38694f-459b-5c43-a04d-e017daecf733","fields":{"slug":"/contributors/anna-bil/"},"frontmatter":{"title":"Anna Bil","job":"Product Designer","photo":"/img/ania_bil_blog.png","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"2b26f7a5-7fad-52f7-a597-110764a5b39c","fields":{"slug":"/contributors/anna-skawinska/"},"frontmatter":{"title":"Anna Skawińska","job":"Java Developer","photo":"/img/anna-skawin-ska-java-developer-.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"487500a7-95fa-52ce-b66e-8fbd7390a170","fields":{"slug":"/contributors/anna-zarudzka/"},"frontmatter":{"title":"Anna Zarudzka","job":"Co-CEO of Boldare","photo":"/img/anna-zarudzka.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"811fb6bd-64da-5b1f-86af-87488bdd2f99","fields":{"slug":"/contributors/claudia-wensierska/"},"frontmatter":{"title":"Claudia Wensierska","job":"Product Designer","photo":"/img/image-from-ios-2-2-.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"1daa2bfc-f4d9-54e8-af4c-26803363f04e","fields":{"slug":"/contributors/dave-foxall/"},"frontmatter":{"title":"Dave Foxall","job":"Blog Editor","photo":"/img/dave-foxall-2-.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"7fb675ae-3ebc-5aae-a81c-5a1d7ece03b0","fields":{"slug":"/contributors/dawid-rogowicz/"},"frontmatter":{"title":"Dawid Rogowicz","job":"Frontend Developer ","photo":"Dawid_Rogowicz.png","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"96148145-77e2-521e-8483-a24d368a85ff","fields":{"slug":"/contributors/grzegorz-kukla/"},"frontmatter":{"title":"Grzegorz Kukla","job":"Java Developer","photo":"/img/grzegorz-kukla.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"ac376421-4cfd-5885-9162-114eaf8a15f3","fields":{"slug":"/contributors/jonathan-wooddin/"},"frontmatter":{"title":"Jonathan Wooddin","job":"Guest Blogger","photo":"Jonathan_Wooddin.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"74b0f21e-659c-5e80-bba2-06603fb3eb65","fields":{"slug":"/contributors/kamil-mizera/"},"frontmatter":{"title":"Kamil Mizera","job":"Content Editor-in-Chief","photo":"/img/kamil-mizera-.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"8fd24eb6-db34-56ea-bcd4-5492c800964d","fields":{"slug":"/contributors/kacper-geisheimer/"},"frontmatter":{"title":"Kacper Geisheimer","job":"JavaScript Developer","photo":"Kacper_Geisheimer_JavaScript_Developer.png","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"be6c3e0b-6fbf-5517-99c8-650f78c63b1f","fields":{"slug":"/contributors/kamil-mikosz/"},"frontmatter":{"title":"Kamil Mikosz","job":"Frontend Developer","photo":"/img/kamil-mikosz.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"ab98f2af-26b1-50c1-a372-8f9059cff184","fields":{"slug":"/contributors/jozef-flakus/"},"frontmatter":{"title":"Józef Flakus","job":"Senior JavaScript Developer","photo":"/img/20840986_1453742828012914_5601588540288690596_n.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"ebd2adc5-39b1-5a8e-9cfa-cca58c133b21","fields":{"slug":"/contributors/karolina-kolodziej/"},"frontmatter":{"title":"Karolina Kołodziej","job":"Communications Manager","photo":"/img/karolina-kolodziej.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"06e843fa-c803-5d46-b8da-3392606c180b","fields":{"slug":"/contributors/lukasz-mitusinski/"},"frontmatter":{"title":"Łukasz Mitusiński","job":"Java Developer","photo":"Lukasz_Mitusinski_Java_Developer.png","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"c285c3f7-5108-5295-a238-b4d2bc4107d8","fields":{"slug":"/contributors/krzysztof-miczkowski/"},"frontmatter":{"title":"Krzysztof Miczkowski","job":".NET developer","photo":"/img/wp_20150704_002-2-.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"7fe90594-3623-5803-b924-3440cd3cb887","fields":{"slug":"/contributors/mariusz-bak/"},"frontmatter":{"title":"Mariusz Bąk","job":"Senior Software Developer ","photo":"/img/1810317.png","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"23fe696e-bdd9-5db5-97e5-7c415a90f53a","fields":{"slug":"/contributors/marcin-brach/"},"frontmatter":{"title":"Marcin Brach","job":"JavaScript Developer at Boldare","photo":"/img/marcin-brach.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"3c39dd75-dc4d-5085-ab47-49eedb24d940","fields":{"slug":"/contributors/mateusz-grzesiukiewicz/"},"frontmatter":{"title":"Mateusz Grzesiukiewicz","job":"Senior JavaScript Developer ","photo":"/img/mateusz-grzesiukiewicz.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"1166809c-2652-55ff-a9a9-d35c5ff10b32","fields":{"slug":"/contributors/mateusz-koscielak/"},"frontmatter":{"title":"Mateusz Kościelak","job":"Direct Marketing Lead","photo":"/img/mateusz-koscielak.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"88a52405-13b1-51d6-90dd-dd1f2b4a8c89","fields":{"slug":"/contributors/natalia-kolinska/"},"frontmatter":{"title":"Natalia Kolińska","job":"QA Business Analyst","photo":"/img/natalia-kolinska.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"159c6e0d-8b74-571e-b355-120ec5a6e00a","fields":{"slug":"/contributors/mateusz-wycislik/"},"frontmatter":{"title":"Mateusz Wyciślik","job":"Machine Learning/Python developer","photo":"/img/prof_sqr.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"3e951423-0b04-53b7-afb7-e787c02cc143","fields":{"slug":"/contributors/patrycja-kasperkiewicz/"},"frontmatter":{"title":"Patrycja Kasperkiewicz","job":"Office Coordinator","photo":"/img/patrycja-kasperkiewicz.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"424b273f-f67e-515f-84cd-eeae16915cfb","fields":{"slug":"/contributors/pawel-kaiser/"},"frontmatter":{"title":"Paweł Kaiser","job":"Customer Success Guide ","photo":"/img/pawelkaiser.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"7e7643bb-e010-5f35-aadb-341b15aa453e","fields":{"slug":"/contributors/pawel-krynicki/"},"frontmatter":{"title":"Paweł Krynicki","job":"Senior PHP Developer","photo":"/img/paweł-krynicki.jpeg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"91ebd35e-d1c1-5a34-8844-03cfcba5816d","fields":{"slug":"/contributors/radek-grabarek/"},"frontmatter":{"title":"Radek Grabarek","job":"Guest Blogger","photo":"/img/radek-portret-800.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"9cfe40f6-01b4-55c9-b937-fafd7bd7bf34","fields":{"slug":"/contributors/piotr-majchrzak/"},"frontmatter":{"title":"Piotr Majchrzak","job":"CEO","photo":"/img/piotr-majchrzak.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"28ee12d9-7f00-5e75-adce-539ff4326637","fields":{"slug":"/contributors/sebastian-musial/"},"frontmatter":{"title":"Sebastian Musiał","job":"Senior JavaScript developer","photo":"/img/_musial.png","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}},{"node":{"excerpt":"","id":"99f1dc20-b1c5-507f-b4a6-7e24c1f8f3f5","fields":{"slug":"/contributors/tomasz-konieczny/"},"frontmatter":{"title":"Tomasz Konieczny","job":"QA Engineer","photo":"/img/tomasz-konieczny.jpg","cover":null,"templateKey":"contributor-page","settings":null,"contributor":null,"box":null}}}]}},"pageContext":{"id":"e20e0491-9012-501f-9237-56c08d8a7dda","isCanonical":""}}