PageSourceSearch

https://www.devhouse.pro/works

html devhouse.pro collected 2026-10-04 18:43:56 UTC 81,157 bytes, 2,539 lines download raw bytes

1<!DOCTYPE html><html lang="en"><head ><title>Our Best Projects | Devhouse</title>
2        <meta name="keywords" content="">
3        <meta name="description" content="We love bold ideas. We design & develop products for people that dare to do things differently. We focus on creating value in these areas by converting your idea into actual web and mobile applications with a long terms support and care." />
4        <meta name="robots" content="index, follow" />
5        <meta charset="utf-8" />
6        <base href="/" />
7        <meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=5">
8        <link rel="canonical" href="https://www.devhouse.pro/works" />
9        
10        <meta property="og:title" content="Our Best Projects | Devhouse"/>
11        <meta property="og:type" content="website"/>
12        <meta property="og:url" content="https://www.devhouse.pro/works"/>
13        <meta property="og:image" content="https://mars-images.imgix.net/1629450591629?auto=compress"/>
14        <meta property="og:site_name" content="Devhouse"/>
15        <meta property="og:description" content="We love bold ideas. We design & develop products for people that dare to do things differently. We focus on creating value in these areas by converting your idea into actual web and mobile applications with a long terms support and care."/>
16
17        <meta property="twitter:title" content="Our Best Projects | Devhouse">
18        <meta property="twitter:description" content="We love bold ideas. We design & develop products for people that dare to do things differently. We focus on creating value in these areas by converting your idea into actual web and mobile applications with a long terms support and care.">
19        <meta property="twitter:image" content="https://mars-images.imgix.net/1629450591629?auto=compress">
20        <meta property="twitter:card" content="summary_large_image">
21        <style>[v-cloak], [x-cloak] { display: none !important;}</style>
22        <link rel="icon" href="https://mars-images.imgix.net/logo-dev.png?auto=compress&w=1200&fit=max">
23<meta name="theme-color" content="#ffffff">
23<script src="/assets/js/mars.js" type="module"></script>
23<link href="/assets/css/theme.css" rel="stylesheet"></link><link rel="preconnect" href="https://fonts.googleapis.com"></link><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="true"></link><link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;700;800&display=swap" rel="stylesheet"></link><link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css"></link>
23<script defer="true" src="/mars/proxy?url=https://unpkg.com/swiper/swiper-bundle.min.js"></script>
23<style>* {
24  padding: 0;
25  margin: 0;
26  box-sizing: border-box;
27  font-family: Open Sans, sans-serif;
28}
29
30body {
31  overflow-x: hidden;
32  margin: 0 auto;
33  background-color: #fff;
34}
35
36body.noscroll {
37  position: fixed;
38  width: 100%;
39  height: 100%;
40  overflow-y: hidden;
41}
42
43main {
44  max-width: 1920px;
45  margin: 0 auto;
46}
47
48ul {
49  list-style: none;
50  padding: 0;
51  margin: 0;
52}
53
54[v-cloak],
55[x-cloak] {
56  display: none !important;
57}
58
59.text-decoration-none {
60  text-decoration: none;
61}
62
63.text-center {
64  text-align: center;
65}
66
67.spacing {
68  padding-left: 100px;
69  padding-right: 100px;
70}
71
72.strict-spacing {
73  margin-left: 100px;
74  margin-right: 100px;
75}
76
77@media only screen and (max-width: 1024px) {
78  .spacing {
79    padding-left: 40px;
80    padding-right: 40px;
81  }
82
83  .strict-spacing {
84    margin-left: 40px;
85    margin-right: 40px;
86  }
87}
88
89@media only screen and (max-width: 512px) {
90  .spacing {
91    padding-left: 15px;
92    padding-right: 15px;
93  }
94
95  .strict-spacing {
96    margin-left: 15px;
97    margin-right: 15px;
98  }
99}
100
101.text-devhouse-green {
102  color: var(--devhouse-green);
103}
104
105.text-light {
106  color: #F8F8F8 !important;
107}
108
109.overflow-hidden {
110  overflow: hidden;
111}
112
113.swiper-slide {
114  height: auto;
115  z-index: 2;
116  cursor: default;
117}
118
119@media(min-width: 768px){
120  .d-md-block{
121    display: block!important;
122  }
123}
124
125:root {
126  --devhouse-green: #6BB551;
127  --devhouse-green-light: #6BB551;
128  --primary: #202020;
129  --secondary: #666666;
130  --light-gray: #E0E0E0;
131  --font-size-1: 14px;
132  --font-size-2: 16px;
133  --font-size-3: 20px;
134  --font-size-4: 22px;
135  --font-size-5: 24px;
136  --font-size-6: 32px;
137  --font-size-7: 40px;
138  --font-size-8: 50px;
139  --font-size-9: 60px;
140  --font-size-10: 70px;
141  --font-size-11: 120px;
142  --font-size-12: 150px;
143}
144
145/* icons */
146@font-face {
147  font-family: "icomoon";
148  src: url("https://cdn.devhouse.pro/assets/img/icomoon.eot");
149  src: url("https://cdn.devhouse.pro/assets/img/icomoon.eot?idymiv#iefix")
150      format("embedded-opentype"),
151    url("https://cdn.devhouse.pro/assets/img/icomoon.ttf?idymiv")
152      format("truetype"),
153    url("https://cdn.devhouse.pro/assets/img/icomoon.woff?idymiv")
154      format("woff"),
155    url("https://cdn.devhouse.pro/assets/img/icomoon.svg?idymiv#icomoon")
156      format("svg");
157  font-weight: normal;
158  font-style: normal;
159  font-display: block;
160}
161
162[class^="icon-"],
163[class*=" icon-"] {
164  /* use !important to prevent issues with browser extensions that change fonts */
165  font-family: "icomoon" !important;
166  font-style: normal;
167  font-weight: normal;
168  font-variant: normal;
169  text-transform: none;
170  line-height: 1;
171
172  /* Better Font Rendering =========== */
173  -webkit-font-smoothing: antialiased;
174  -moz-osx-font-smoothing: grayscale;
175}
176
177.icon-ellipse:before {
178  content: "\e900";
179  font-size: 32px;
180  color: transparent;
181}
182
183.icon-arrow-right:before {
184  content: "\e901";
185}
186
187.icon-arrow-left:before {
188  content: "\e902";
189}
190
191.icon-arrow-right,
192.icon-arrow-left,
193.icon-ellipse:before {
194  transition: 0.2s;
195  cursor: pointer;
196}
197
198.icon-ellipse {
199  border: 1px solid #E0E0E0;
200  border-radius: 50%;
201}
202
203.icon-arrow-right,
204.icon-arrow-left {
205  z-index: 1;
206  font-size: var(--font-size-1);
207}
208
209.icon-arrow-right {
210  transform-origin: 0% 100%;
211}
212
213.icon-arrow-left {
214  transform-origin: 100% 0%;
215}
216
217.noisy-bg {
218  background: linear-gradient(#202020f5, #202020f5), no-repeat center/cover url("https://mars-images.imgix.net/upload-ce1d599e-0536-425c-a0e8-186179e2df14.gif?auto=compress&w=600");
219}
220
221@media only screen and (max-width: 512px) {
222  .button-wrapper span {
223    display: none;
224  }
225
226  .noisy-bg {
227    background: #202020;
228  }
229
230  .cookieinfo {
231    display: flex;
232    flex-direction: column-reverse;
233  }
234
235  .cookieinfo-close {
236    float: unset !important;
237  }
238}</style></head><body class="">
vendor: 63 bytes, line 238
238<script async src="https://www.googletagmanager.com/gtag/js?id=
238G-Y68WTBSN65
vendor: 12 bytes, line 238
238"></script>
239<script>
240  window.webMesurementId = 'G-Y68WTBSN65';
241  
vendor: 134 bytes, lines 241-245
241window.dataLayer = window.dataLayer || [];
242  function gtag(){dataLayer.push(arguments);}
243  gtag('js', new Date());
244
245  gtag('config', '
245G-Y68WTBSN65
vendor: 7 bytes, lines 245-247
245');
246
247  
247if (typeof window.onerror == "object") {
248      window.onerror = function (err, url, line) {
249        if (window.gtag) {
250          gtag('event', 'exception', {
251            description: line + " " + err,
252            fatal: false
253          });
254        }
255      };
256      console.log('GA error tracking initialized');
257  }
258</script>
258<style>body.noscroll { position: fixed; width: 100%; height: 100%; overflow-y: hidden; }
259.xmodal-overlay {
260  position: fixed;
261  left: 0;
262  top: 0;
263  width: 100%;
264  height: 100%;
265  background: rgba(0,0,0,0);
266  z-index: 9999;
267  box-sizing: border-box;
268  overflow-y: scroll;
269  overflow-x: hidden;
270  transition: background .25s ease-out;
271  scroll-behavior: smooth;
272}
273
274.xmodal-overlay.no-padding {
275  padding: 0px;
276}
277
278.xmodal-overlay::-webkit-scrollbar {
279  width: 0px;
280  background: transparent;
281}
282
283.xmodal-overlay.open {
284  background: rgba(0,0,0,.45);
285}
286
287.xmodal-container {
288  position: fixed;
289  top: 200%;
290  bottom: 0;
291  left: 0;
292  width: 100%;
293  height: 100%;
294  min-width: 100%;
295  max-width: 100%;
296  max-height: 100%;
297  margin: auto;
298  box-shadow: 0 8px 16px 0 rgba(0,0,0,.2);
299  background-color: #fff;
300  z-index: 100;
301  scroll-behavior: smooth;
302  transition: top .25s ease;
303  overflow-y: auto;
304}
305
306.xmodal-container.auto-height {
307  transform: scaleY(0);
308  transform-origin: bottom;
309  transition: transform 0.25s ease;
310}
311
312.xmodal-container.sidebar, .xmodal-container.sidebar.left {
313  position: absolute;
314  top: 0!important;
315  bottom: 0!important;
316  max-height: 100%;
317  min-height: 100%;
318  height: 100%;
319  margin-top: 0!important;
320  margin-bottom: 0!important;
321  min-width: unset;
322  width: 85%;
323}
324
325.xmodal-container.sidebar.left {
326  left: 0!important;
327  margin-left: -85%;
328  border-top-left-radius: 0;
329  border-bottom-left-radius: 0;
330  transition: margin-left .25s ease;
331}
332
333.xmodal-container.sidebar.right {
334  right: 0!important;
335  border-top-right-radius: 0;
336  border-bottom-right-radius: 0;
337  margin-right: -85%;
338  transition: margin-right .25s ease;
339}
340
341.open > .xmodal-container {
342  top: 0;
343  transform: scaleY(1);
344}
345
346.open > .xmodal-container.auto-height {
347  height: auto;
348  top: auto;
349  margin-top: 0;
350  margin-bottom: 0;
351}
352
353.open > .xmodal-container.sidebar {
354  transform: scaleX(1);
355}
356
357.open > .xmodal-container.sidebar.left {
358  margin-left: 0!important;
359}
360
361.open > .xmodal-container.sidebar.right {
362  margin-right: 0!important;
363}
364
365.xmodal-container.round-corners {
366  border-radius: 12px 12px 0 0;
367  margin-top: 12px;
368}
369
370.open > .xmodal-container.round-corners.auto-height {
371  max-height: calc(100% - 24px);
372  margin-top: 0;
373  margin-bottom: 0;
374}
375
376.xmodal-container.round-corners:before {
377  position: absolute;
378  top: -8px;
379  left: 0;
380  right: 0;
381  margin: auto;
382  width: 44px;
383  height: 4px;
384  background: var(--color-gray200);
385  content: " ";
386  border-radius: 9px;
387}
388
389.xmodal-header {
390  position: relative;
391  display: block;
392  height: 0;
393  box-sizing: border-box;
394  z-index: 10;
395  padding: 0;
396  border-top-left-radius: 4px;
397  border-top-right-radius: 4px;
398}
399
400.round-corners .xmodal-header {
401  border-radius: 16px 16px 0 0;
402}
403
404.xmodal-header.show {
405  padding: 12px 16px;
406  height: 48px;
407  background-color: #fff;
408  box-shadow: 0 1px 0 0 var(--color-gray200);
409}
410
411.xmodal-header-text {
412  display: none;
413}
414
415.xmodal-header.show .xmodal-header-text {
416  display: inline-block;
417  vertical-align: middle;
418  font-weight: 700;
419  overflow: hidden;
420  text-overflow: ellipsis;
421  white-space: nowrap;
422  max-width: calc(100% - 24px);
423}
424
425.xmodal-close-button {
426  position: absolute;
427  top: 12px;
428  right: 12px;
429  padding: 0;
430  vertical-align: middle;
431  display: inline-block;
432  width: 24px;
433  height: 24px;
434  z-index: 9999;
435  cursor: pointer;
436  font-size: 20px;
437  text-align: center;
438  line-height: 24px;
439  opacity: .6;
440  background: url("data:image/svg+xml,%3Csvg width='18' height='18' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m10.53634,9.00012l6.52972,-6.52992c0.42494,-0.42474 0.42494,-1.1115 0,-1.53624c-0.42474,-0.42474 -1.1115,-0.42474 -1.53624,0l-6.52992,6.52992l-6.52972,-6.52992c-0.42494,-0.42474 -1.1115,-0.42474 -1.53624,0c-0.42494,0.42474 -0.42494,1.1115 0,1.53624l6.52972,6.52992l-6.52972,6.52992c-0.42494,0.42474 -0.42494,1.1115 0,1.53624c0.21168,0.21187 0.49,0.31831 0.76812,0.31831c0.27812,0 0.55625,-0.10644 0.76812,-0.31831l6.52972,-6.52992l6.52992,6.52992c0.21187,0.21187 0.49,0.31831 0.76812,0.31831c0.27812,0 0.55625,-0.10644 0.76812,-0.31831c0.42494,-0.42474 0.42494,-1.1115 0,-1.53624l-6.52972,-6.52992zm0,0'/%3E%3C/svg%3E") no-repeat center;
441}
442
443.xmodal-close-button:hover {
444  opacity: 1;
445}
446
447.xmodal-close-button.hide {
448  display: none;
449}
450
451.xmodal-body {
452  max-height: 100%;
453  margin-top: 0;
454  height: 100%;
455  box-sizing: border-box;
456  overflow-y: auto;
457  scroll-behavior: smooth;
458}
459
460.xmodal-header.show + .xmodal-body {
461  margin-top: 0;
462  height: calc(100% - 48px);
463}
464
465.xmodal-footer + .xmodal-body {
466  margin-top: 0;
467  height: calc(100% - 64px);
468}
469
470.xmodal-header.show + .xmodal-footer + .xmodal-body {
471  margin-top: 0;
472  /* height: calc(100% - 48px - 64px); */
473  margin-bottom: 64px;
474  height: calc(100% - 48px);
475}
476
477.xmodal-content {
478  padding: 16px;
479}
480
481.xmodal-footer {
482  position: absolute;
483  bottom: 0;
484  left: 0;
485  right: 0;
486  display: flex;
487  align-items: center;
488  justify-content: flex-end;
489  padding: .8rem;
490  border-top: 1px solid var(--color-gray200);
491  background-color: #fff;
492}
493
494.xmodal-container.round-corners .xmodal-footer {
495  bottom: 12px;
496}
497
498.xmodal-footer > button {
499  margin-left: .5rem;
500}
501
502.no-padding .xmodal-content {
503  padding: 0;
504}
505
506.no-padding-h .xmodal-content {
507  padding-left: 0;
508  padding-right: 0;
509}
510
511.no-padding-v .xmodal-content {
512  padding-top: 0;
513  padding-bottom: 0;
514}
515
516.xmodal-spinner {
517  min-height: 250px;
518}
519
520.xmodal-content > .card-body {
521  padding: 0!important;
522}
523
524@media screen and (max-width: 768px){  
525  .xmodal-container.sidebar, .xmodal-container.sidebar.left {
526    width: 100%;
527  }
528}
529
530@media (min-width: 640px) {
531  
532  .xmodal-overlay {
533    padding: 32px 0;
534    display: flex;
535    flex-direction: column;
536  }
537
538  .xmodal-container {
539    position: relative;
540    top: unset !important;
541    border-radius: 4px;
542    width: 960px;
543    min-width: unset;
544    height: auto;
545    bottom: unset;
546    opacity: 0;
547    transition: opacity .25s ease;
548  }
549
550  .xmodal-container.top {
551    margin-top: 0;
552  }
553
554  .xmodal-container.sidebar {
555    width: 25%;
556  }
557
558  .xmodal-container.sidebar.left {
559    margin-left: -85%;
560  }
561
562  .xmodal-container.sidebar.right {
563    margin-right: -85%;
564  }
565
566  .open > .xmodal-container {
567    opacity: 1;
568  }
569
570  .xmodal-container.round-corners {
571    border-radius: 16px;
572    margin-top: auto;
573    overflow: hidden;
574  }
575
576  .xmodal-container.auto-height {
577    margin: auto !important;
578    transform: unset;
579    transform-origin: unset;
580  }
581
582  .xmodal-header.show {
583    padding: 12px 24px;
584  }
585
586  .xmodal-content {
587    padding: 24px;
588  }
589
590  .xmodal-container.round-corners .xmodal-footer {
591    bottom: 0;
592  }
593}
594
595.min-h-100{
596  min-height: 100%;
597}</style><template id="xmodal-template">
598	<div id="xmodal" class="xmodal-overlay" style="display: none;">
599		<div id="xmodal_container" class="xmodal-container">
600			<div id="xmodal_header" class="xmodal-header show">
601				<span id="xmodal_header_title" class="xmodal-header-text"></span>
602				<div id="xmodal_close" class="xmodal-close-button"></div>
603			</div>
604			<div class="xmodal-body">
605				<div id="xmodal_content" class="xmodal-content">
606					<div class="xmodal-spinner d-flex justify-content-center align-items-center w-100">
607						<div class="spinner-border text-primary mx-auto"></div>
608					</div>
609				</div>
610			</div>
611		</div>
612	</div>
613</template>
613<script v-pre type="module">const data = JSON.parse(decodeURIComponent("%7B%22_blockName%22%3A%22Modal%22%2C%22Id%22%3A%22objee93c297097541de9bd12c5e74cc4f27%22%2C%22children%22%3Anull%2C%22isMobile%22%3Afalse%7D"));class XModal {
614  constructor(id) {
615    this.id = id;
616    this._listeners = new Map();
617
618    const template = document.getElementById('xmodal-template').content.cloneNode(true);
619    template.getElementById('xmodal').setAttribute('id', 'xmodal_' + id);
620
621
622    template.getElementById('xmodal_container').setAttribute('id', 'xmodal_container_' + id);
623
624    template.getElementById('xmodal_header').setAttribute('id', 'xmodal_header_' + id);
625    template.getElementById('xmodal_header_title').setAttribute('id', 'xmodal_header_title_' + id);
626    template.getElementById('xmodal_close').setAttribute('id', 'xmodal_close_' + id);
627    template.getElementById('xmodal_content').setAttribute('id', 'xmodal_content_' + id);
628   
629    document.body.appendChild(template);
630
631    this.root = document.getElementById('xmodal_' + id);
632
633    this.root.style.zIndex = 9999 + this.id;
634
635    this.container = document.getElementById('xmodal_container_' + id);
636    this.header = document.getElementById('xmodal_header_' + id);
637    this.headerTitle = document.getElementById('xmodal_header_title_' + id);
638    this.closeBtn = document.getElementById('xmodal_close_' + id);
639    this.spinner = `<div class="xmodal-spinner d-flex justify-content-center align-items-center"><div class="spinner-border text-success"></div></div>`;
640    this.content = document.getElementById('xmodal_content_' + id);
641    this.closeByEscape = true;
642
643    this.root.addEventListener('click', (e) => this._closeHandler(e));
644    this.closeBtn.addEventListener('click', (e) => this._closeHandler(e));
645  }
646
647  async open(urlOrDom, options, onLoadCallback, postRequestData) {
648    if (!urlOrDom) {
649      return;
650    }
651
652    if (options) {
653      if (options.domId) this.root.setAttribute('data-dom-id', options.domId);
654
655      if (options.center) this.content.classList.add('d-flex',
656        'align-items-center', 'min-h-100', 'text-center', 'w-100');
657
658      this.noCloseOnOverlay = options.noCloseOnOverlay || false;
659      this.closeByEscape = options.closeByEscape === undefined ? true : options.closeByEscape;
660      if (options.hideModalHeader) {
661        this.header.classList.remove('show');
662      }
663
664      if (options.dark) {
665        this.container.style.backgroundColor = options.dark === true ? 'black' : options.dark;
666      }
667
668      if (options.hideCloseButton) {
669        this.closeBtn.classList.add('hide');
670      }
671
672      if (options.roundCorners) {
673        this.container.classList.add('round-corners');
674      }
675
676      if (options.autoHeight) {
677        this.container.classList.add('auto-height');
678      }
679
680      if (options.noPadding) {
681        this.container.classList.add('no-padding');
682      }
683
684      if (options.noPaddingHorizontal) {
685        this.container.classList.add('no-padding-h');
686      }
687
688      if (options.noPaddingVertical) {
689        this.container.classList.add('no-padding-v');
690      }
691
692      if (options.width) {
693        this.container.style.width = options.width;
694      }
695
696      if (options.height) {
697        this.container.style.height = options.height;
698      }
699
700      if (options.fullScreen) {
701        this.container.style.width = '100%';
702        this.container.style.height = '100vh';
703        this.container.style.borderBottomRightRadius = '0';
704        this.container.style.borderBottomLeftRadius = '0';
705        this.root.classList.add('no-padding');
706      }
707
708      if (options.position && options.position === 'top') {
709        this.container.classList.add('top');
710      }
711
712      if (options.sidebar) {
713        this.container.classList.add('sidebar');
714        if (options.sidebarPosition === 'left') {
715          this.container.classList.add('left');
716          if (options.width) {
717            this.container.style.marginLeft = '-' + options.width;
718          }
719        } else if (options.sidebarPosition === 'right') {
720          this.container.classList.add('right');
721          if (options.width) {
722            this.container.style.marginRight = '-' + options.width;
723          }
724        }
725      }
726    }
727
728    this.root.style.display = '';
729    setTimeout(() => { this.root.classList.add('open'); }, 10);
730
731    if (typeof urlOrDom === 'string') {
732      try {
733        const response = await window.postRequest(urlOrDom, { isModal: true, modalId: this.id, ...(postRequestData || {}) });
734        $(this.content).html(typeof (response.data) === 'string' ? response.data : response.data.html);
735        this.headerTitle.textContent = options && options.title ? options.title : (response.data.PageTitle || response.data.pageTitle);
736        // setTimeout(() => { SITE.updateImages(); }, 700);
737        if (onLoadCallback && typeof onLoadCallback === 'function') {
738          onLoadCallback(this);
739        }
740      }
741      catch (ex) {
742        alert("Something went wrong, please try again: ".concat(ex.message))
743      }
744    } else if (typeof urlOrDom === 'object' && urlOrDom.cloneNode) {
745      $(this.content).html(urlOrDom);
746    }
747
748    if (options && options.buttons && options.buttons.length) {
749      const footer = document.createElement('div');
750      footer.id = "xmodal_footer_" + this.id;
751      footer.classList.add('xmodal-footer');
752      options.buttons.forEach(i => {
753        const btn = document.createElement('button');
754        if (i.id) { btn.id = i.id; };
755        btn.className = i.className || 'btn';
756        btn.type = i.type || 'button';
757        btn.innerText = i.label;
758        btn.onclick = i.callback;
759        footer.appendChild(btn);
760      });
761
762      this.header.after(footer);
763    }
764  }
765
766  close(instantly) {
767    this.root.classList.remove('open');
768    instantly ? this._destroy() : setTimeout(() => this._destroy(), 250);
769  }
770
771  set onClose(callback) {
772    this._on('close', callback);
773  }
774
775  set onClosed(callback) {
776    this._on('closed', callback);
777  }
778
779  _on(label, callback) {
780    this._listeners.has(label) || this._listeners.set(label, []);
781    this._listeners.get(label).push(callback);
782  }
783
784  _trigger(label, ...args) {
785    if (this._listeners.has(label)) {
786      this._listeners.get(label).forEach((listener) => {
787        listener(...args);
788      });
789    }
790  }
791
792  _closeHandler(e) {
793    if (e.target !== this.root && e.target !== this.closeBtn) {
794      return;
795    }
796
797    e.stopPropagation();
798    if (this.noCloseOnOverlay && e.target === this.root) {
799      return;
800    }
801
802    this._trigger('close');
803    this.close();
804  }
805
806  _destroy() {
807    this.root.remove();
808    this._trigger('closed');
809  }
810}
811
812if (!window['Modal']) {
813  const mars = new MarsBlock('xmodal', data, {
814    _instances: [],
815    _init: function () {
816      // Track Escape key press
817      const self = this;
818      document.onkeydown = function (e) {
819        e = e || window.event;
820        let isEscape = false;
821        if ("key" in e) {
822          isEscape = (e.key === "Escape" || e.key === "Esc");
823        } else {
824          isEscape = (e.keyCode === 27);
825        }
826
827        const instances = self._instances;
828        if (isEscape && instances.length && instances[instances.length - 1].closeByEscape) {
829          self.close();
830        }
831      };
832    },
833    _reset: function () {
834      if (this._instances.length) {
835        return;
836      }
837
838      document.body.classList.remove('noscroll');
839      document.body.style.top = '';
840
841      if (this.scrollTop !== undefined) {
842        window.scrollTo({ top: this.scrollTop, behavior: 'instant' });
843      }
844
845      this.scrollTop = undefined;
846    },
847    _getScroll: function () {
848      if (window.pageYOffset != undefined) {
849        return [pageXOffset, pageYOffset];
850      } else {
851        let sx, sy, d = document, r = d.documentElement, b = d.body;
852        sx = r.scrollLeft || b.scrollLeft || 0;
853        sy = r.scrollTop || b.scrollTop || 0;
854        return [sx, sy];
855      }
856    },
857    getModal: function (id) {
858      if (id) {
859        return this._instances.find(i => i.id === id);
860      }
861
862      return null;
863    },
864    open: async function (urlOrDom, options, onLoadCallback, postRequestData) {
865      if (!urlOrDom) {
866        return;
867      }
868
869      if (options && options.width && data.isMobile) options.width = '100%';
870
871      if (options && options.closePrevious && this._instances.length) {
872        this._instances.pop().close(true);
873      }
874
875      if (this._instances.length === 0) {
876        this.scrollTop = (this._getScroll())[1];
877        document.body.classList.add('noscroll');
878        document.body.style.top = -this.scrollTop + 'px';
879      }
880
881      const id = this._instances.length + 1;
882      const modal = new XModal(id);
883      this._instances.push(modal);
884      modal.onClose = () => this.close(id);
885      modal.onClosed = () => this._reset();
886      await modal.open(urlOrDom, options, onLoadCallback, postRequestData);
887      return modal;
888    },
889    close: function (instantly, id) {
890      if (id) {
891        const index = this._instances.findIndex(i => i.id === id);
892        this._instances[index].close(instantly);
893        this._instances.splice(index, 1);
894        return;
895      }
896
897      const lastModal = this._instances.pop();
898      if (lastModal) {
899        lastModal.close(instantly);
900      }
901    },
902  });
903
904  mars._init();
905  window['Modal'] = window['Modal'] || mars;
906}
907</script>
907<header id="objb560d7fb37184c97aae79ef2422c90fa" class="w-100 mx-auto position-sticky d-flex align-items-center"><style>/* nav bar styles */
908header {
909  height: 72px;
910  top: -20px; 
911  transition: 0.4s;
912  z-index: 99;
913}
914
915nav {
916  max-width: 1920px;
917  margin: 0 auto;
918  height: 52px;
919  top: 0;
920}
921
922@media only screen and (max-width: 512px) {
923  header {
924    height: 48px;
925    padding-top: 16px !important;
926    padding-bottom: 16px !important;
927    top: 0;
928  }
929
930  nav {
931    height: 48px;
932  }
933}
934
935header {
936  background: transparent;
937}
938
939nav img {
940  width: 140px;
941  margin-right: 128px;
942}
943
944@media only screen and (max-width: 768px) {
945  nav img {
946    margin-right: 64px;
947  }
948}
949
950@media only screen and (max-width: 370px) {
951  nav img {
952    margin-right: 64px;
953  }
954}
955
956nav a {
957  transition: all 0.5s ease;
958  color: black;
959  position: relative;
960}
961
962nav a.nav-bar-link-underlined:after {    
963  background: none repeat scroll 0 0 transparent;
964  bottom: -2px;
965  content: "";
966  display: block;
967  height: 2px;
968  left: 50%;
969  position: absolute;
970  background: var(--devhouse-green);
971  transition: width 0.3s ease 0s, left 0.3s ease 0s;
972  width: 0;
973}
974
975nav a.nav-bar-link-underlined:hover:after { 
976  width: 100%; 
977  left: 0; 
978}
979
980.nav-bar-link {
981  font-size: var(--font-size-2);
982  cursor: pointer;
983}
984
985@media only screen and (max-width: 860px) {
986  .nav-bar-link {
987    display: none;
988  }
989}
990
991/* nav bar button */
992.menu-btn {
993  width: 52px;
994  height: 52px;
995  cursor: pointer;
996  transition: all .5s ease-in-out;
997  z-index: 99;
998}
999
1000.menu-btn__burger {
1001  width: 24px;
1002  height: 3px;
1003  background: #FFF;
1004  box-shadow: 0 2px 6px 0 rgba(255, 101, 47, .2);
1005  transition: all .5s ease-in-out;
1006}
1007
1008.menu-btn__burger,
1009.menu-btn__burger::before,
1010.menu-btn__burger::after {
1011  content: '';
1012  position: absolute;
1013  height: 3px;
1014  background:#000;
1015  border-radius: 6px;
1016  box-shadow: 0 2px 6px 0 rgba(255, 101, 47, .2);
1017  transition: all .5s ease-in-out;
1018}
1019
1020.menu-btn__burger::before {
1021  width: 30px;
1022  transform: translateY(-8px);
1023}
1024
1025.menu-btn__burger::after {
1026  width: 20px;
1027  transform: translateY(8px);
1028}
1029
1030.menu-btn.open .menu-btn__burger::before,
1031.menu-btn.open .menu-btn__burger::after {
1032  background-color: #fff;
1033}
1034
1035/* nav bar button animation */
1036.menu-btn.open .menu-btn__burger {
1037  transform: translateX(-52px);
1038  background: transparent;
1039  box-shadow: none;
1040}
1041
1042.menu-btn.open .menu-btn__burger::before {
1043  width: 36px;
1044  transform: rotate(45deg) translate(36px, -36px);
1045}
1046
1047.menu-btn.open .menu-btn__burger::after {
1048  width: 36px;
1049  transform: rotate(-45deg) translate(36px, 36px);
1050}
1051
1052.nav-bar-link.link-highlighted {
1053  background: #6BB551;
1054  color: white;
1055  padding: 10px 25px;
1056}
1057
1058.nav-bar-link.link-highlighted:hover {
1059  color: black!important;
1060  background-color: #9CD737;
1061  transform: scale(1.05);
1062}
1063
1064/* scroll */
1065
1066.hide-navbar {
1067  top: -120px !important;
1068}</style><nav class="py-3 d-flex align-items-center justify-content-between position-sticky spacing w-100">
1069
1070	<div class="d-flex align-items-center">
1071		<a href="/"><img id="nav-bar-logo" src="https://mars-images.imgix.net/logo%20(1)%202.png%20800x200?auto=compress" alt="devhouse"/></a>
1072		<a href="/works"
1073			class="mr-5 text-decoration-none position-relative nav-bar-link nav-bar-link-underlined">Works</a><a href="/about"
1074			class="mr-5 text-decoration-none position-relative nav-bar-link nav-bar-link-underlined">About us</a><a href="/blogpost/our-handbook"
1075			class="mr-5 text-decoration-none position-relative nav-bar-link nav-bar-link-underlined">Our handbook</a>
1076	</div>
1077
1078	<div class="d-flex align-items-center">
1079		<a class="mr-5 text-decoration-none font-weight-bold position-relative nav-bar-link link-highlighted" 
1080			onclick="Modal.open('/api/QuoteRequest', {width: '750px', height: '100%', roundCorners: true, noCloseOnOverlay: true, title: 'Quote request'})">+ Get a quote</a>
1081		<div class="menu-btn position-relative d-flex align-items-center justify-content-center">
1082			<div class="menu-btn__burger rounded"></div>
1083		</div>
1084	</div>
1085
1086</nav>
1086<script v-pre type="module">const data = JSON.parse(decodeURIComponent("%7B%22_blockName%22%3A%22NavBar%22%2C%22Id%22%3A%22objb560d7fb37184c97aae79ef2422c90fa%22%2C%22navBarContent%22%3A%7B%22logo%22%3A%22https%3A%2F%2Fmars-images.imgix.net%2Flogo%2520(1)%25203.png%2520800x200%3Fauto%3Dcompress%22%2C%22darkLogo%22%3A%22https%3A%2F%2Fmars-images.imgix.net%2Flogo%2520(1)%25202.png%2520800x200%3Fauto%3Dcompress%22%2C%22leftMenu%22%3A%5B%7B%22linkTitle%22%3A%22Works%22%2C%22url%22%3A%22%2Fworks%22%7D%2C%7B%22linkTitle%22%3A%22About%20us%22%2C%22url%22%3A%22%2Fabout%22%7D%2C%7B%22linkTitle%22%3A%22Our%20handbook%22%2C%22url%22%3A%22%2Fblogpost%2Four-handbook%22%7D%5D%2C%22rightMenu%22%3A%5B%7B%22linkTitle%22%3A%22%2B%20Get%20a%20quote%22%2C%22url%22%3A%22%2Fget-a-quote%22%7D%5D%7D%2C%22lightLogo%22%3Afalse%2C%22children%22%3Anull%7D"));// header menu
1087const menuBtn = document.querySelector('.menu-btn');
1088const navBarButtons = document.querySelectorAll('nav .nav-bar-link');
1089const logo = document.querySelector('nav').querySelector('img');
1090const navLinks = document.querySelector('.nav-links');
1091let menuOpen = false;
1092
1093menuBtn.addEventListener('click', () => {
1094  if (!menuOpen) {
1095    menuBtn.classList.add('open');
1096    navLinks.classList.add('open');
1097    menuOpen = true;
1098    navBarButtons.forEach(item => {
1099      item.style.opacity = 0;
1100      item.style.visibility = 'hidden';
1101    })
1102
1103    setTimeout(() => {
1104      logo.src = data.navBarContent.logo;
1105    }, 200);
1106
1107    disableScroll();
1108  } else {
1109    menuBtn.classList.remove('open');
1110    navLinks.classList.remove('open');
1111    menuOpen = false;
1112    navBarButtons.forEach(item => {
1113      item.style.opacity = 1;
1114      item.style.visibility = 'visible';
1115    });
1116
1117    setTimeout(() => {
1118      logo.src = data.lightLogo ? data.navBarContent.logo : data.navBarContent.darkLogo;
1119    }, 200)
1120    enableScroll();
1121  }
1122})
1123
1124function disableScroll() {
1125  let scrollTop = window.pageYOffset || document.documentElement.scrollTop;
1126  let scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;
1127
1128  window.onscroll = function () {
1129    window.scrollTo(scrollLeft, scrollTop);
1130  };
1131}
1132
1133function enableScroll() {
1134  window.onscroll = function () { };
1135}
1136
1137// career anchor
1138const careerButton = document.querySelector('.careerAnchor');
1139
1140careerButton.addEventListener('click', () => {
1141  const jobsBlock = document.querySelector('#JobsBlock');
1142  if (jobsBlock) {
1143    menuBtn.classList.remove('open');
1144    navLinks.classList.remove('open');
1145    menuOpen = false;
1146    navBarButtons.forEach(item => {
1147      item.style.opacity = 1;
1148      item.style.visibility = 'visible';
1149    });
1150    setTimeout(() => {
1151      logo.src = data.lightLogo ? data.navBarContent.logo : data.navBarContent.darkLogo;
1152    }, 200);
1153    enableScroll();
1154    jobsBlock.scrollIntoView({ behavior: 'smooth', block: 'center' });
1155  } else {
1156    window.location.href = "/about#JobsBlock";
1157  }
1158})
1159
1160// navbar animation
1161let lastScrollTop = 0;
1162function onScroll() {
1163  const st = window.pageYOffset || document.documentElement.scrollTop;
1164  const header = document.querySelector('header');
1165  const logo = document.querySelector('#nav-bar-logo');
1166  if (st > lastScrollTop) {
1167    header.classList.add('hide-navbar');
1168  } else {
1169    header.classList.remove('hide-navbar');
1170  }
1171
1172  if (document.querySelector('[data-dark-header]')) {
1173    if (window.scrollY >= window.innerHeight) {
1174      header.classList.add('navbar-background', 'noisy-bg');
1175    } else {
1176      header.classList.remove('navbar-background', 'noisy-bg');
1177    }
1178  }
1179  lastScrollTop = st <= 0 ? 0 : st; // For Mobile or negative scrolling
1180}
1181
1182document.addEventListener('scroll', onScroll);
1183onScroll();</script>
1183</header><main id="content" role="main"><div id="DevhouseMasterPage" class="" data-master-content><div id="obj6ce58c7760ed4ef09ae80b791176fcff"><style>/* navbar styling */
1184
1185.menu-btn__burger,
1186.menu-btn__burger::before,
1187.menu-btn__burger::after {
1188  background: #000;
1189}
1190
1191.menu-btn.open .menu-btn__burger::before,
1192.menu-btn.open .menu-btn__burger::after {
1193  background-color: #fff;
1194}
1195
1196main {
1197  margin: -72px auto 0 auto;
1198}
1199
1200/* elements styles */
1201
1202#obj6ce58c7760ed4ef09ae80b791176fcff img {
1203  width: 82px;
1204  margin-bottom: 20px;
1205}
1206
1207#obj6ce58c7760ed4ef09ae80b791176fcff h2 {
1208  font-size: var(--font-size-7);
1209  font-weight: 800;
1210  margin-bottom: 30px;
1211}
1212
1213@media only screen and (max-width: 512px) {
1214  #obj6ce58c7760ed4ef09ae80b791176fcff h2 {
1215    font-size: var(--font-size-6);
1216    margin-bottom: 20px;
1217  }
1218}
1219
1220#obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__text-wrapper {
1221  padding-top: 100px;
1222  padding-bottom: 80px;
1223  padding-left: 100px;
1224}
1225
1226@media only screen and (max-width: 1440px) {
1227  #obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__text-wrapper {
1228    padding-left: 0;
1229    padding-right: 0;
1230  }
1231}
1232
1233@media only screen and (max-width: 512px) {
1234  #obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__text-wrapper {
1235    padding-top: 40px;
1236  }
1237}
1238
1239#obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__text-wrapper p {
1240  margin-bottom: 20px;
1241  color: var(--secondary);
1242  font-size: var(--font-size-1);
1243  max-width: 400px;
1244}
1245
1246@media only screen and (max-width: 1440px) {
1247  #obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__text-wrapper p {
1248    width: 75%;
1249    max-width: unset;
1250  }
1251}
1252
1253@media only screen and (max-width: 768px) {
1254  #obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__text-wrapper p {
1255    width: 100%;
1256  }
1257}
1258
1259#obj6ce58c7760ed4ef09ae80b791176fcff .devhouse-works__years h5 {
1260  font-size: var(--font-size-5)
1261}
1262
1263#obj6ce58c7760ed4ef09ae80b791176fcff .devhouse-works__years p {
1264  color: var(--primary);
1265  width: 100%;
1266}
1267
1268@media only screen and (max-width: 1440px) {
1269  #obj6ce58c7760ed4ef09ae80b791176fcff .devhouse-works__years p {
1270    width: 100%;
1271  }
1272}
1273
1274@media only screen and (max-width: 512px) {
1275  #obj6ce58c7760ed4ef09ae80b791176fcff .devhouse-works__years {
1276    justify-content: flex-start;
1277  }
1278
1279  #obj6ce58c7760ed4ef09ae80b791176fcff .devhouse-works__years div:nth-child(n + 3) {
1280    display: none;
1281  }
1282
1283  #obj6ce58c7760ed4ef09ae80b791176fcff .devhouse-works__years p {
1284    width: 100% !important;
1285  }
1286}
1287
1288#obj6ce58c7760ed4ef09ae80b791176fcff a span {
1289  font-size: var(--font-size-2);
1290  font-weight: 700;
1291}
1292
1293#obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery__item-button:hover .icon-arrow-right {
1294  transform: scaleX(1.2);
1295}
1296
1297@media only screen and (max-width: 768px) {
1298  #obj6ce58c7760ed4ef09ae80b791176fcff .titleAndLogoContainer {
1299    margin-bottom: 40px;
1300  }
1301
1302  #obj6ce58c7760ed4ef09ae80b791176fcff .titleAndLogoContainer img,
1303  #obj6ce58c7760ed4ef09ae80b791176fcff .titleAndLogoContainer h2 {
1304    margin-bottom: 0 !important;
1305  }
1306}
1307
1308@media only screen and (max-width: 512px) {
1309  #obj6ce58c7760ed4ef09ae80b791176fcff .titleAndLogoContainer {
1310    margin-bottom: 20px;
1311  }
1312}
1313
1314#obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__image-wrapper {
1315  width: 45%;
1316  min-width: 45%;
1317}
1318
1319@media only screen and (max-width: 1024px) {
1320  #obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__image-wrapper {
1321    width: 100%;
1322    height: 600px;
1323    padding-left: 40px;
1324    padding-right: 40px;
1325  }
1326}
1327
1328#obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__image-wrapper .image-wrapper {
1329  width: 100%;
1330  height: 100%;
1331  overflow: hidden;
1332  object-fit: cover;
1333  object-position: center;
1334}
1335
1336#obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__image-wrapper .image-wrapper img {
1337  display: none;
1338}
1339
1340#obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__image-wrapper .image-wrapper video {
1341  height: 100%;
1342  width: 100%;
1343  object-fit: cover;
1344}
1345
1346@media only screen and (max-width: 512px) {
1347  #obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__image-wrapper {
1348    height: 290px;
1349    margin-bottom: 30px;
1350    padding-left: 10px;
1351    padding-right: 10px;
1352  }
1353
1354  #obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__image-wrapper .image-wrapper img,
1355  #obj6ce58c7760ed4ef09ae80b791176fcff .position-sticky img {
1356    height: 100%;
1357    display: block;
1358    object-fit: cover;
1359    object-position: center;
1360  }
1361
1362  #obj6ce58c7760ed4ef09ae80b791176fcff .works-gallery-item__image-wrapper .image-wrapper video {
1363    display: none;
1364  }
1365}</style><div id="objb1fdbdd76ed14422bed7ddeb7b5a586c" class="nav-links w-100 position-fixed d-flex flex-column justify-content-around pt-5"><style>.nav-links {
1366  height: 100vh;
1367  top: 0;
1368  background-color: var(--primary);
1369
1370  clip-path: circle(0 at 100% 0%);
1371  -webkit-clip-path: circle(0 at 100% 0%);
1372  transition: all 1s ease-out;
1373  z-index: 98;
1374  pointer-events: none;
1375  display: none;
1376}
1377
1378.nav-links.open {
1379  clip-path: circle(150% at 100% 0%);
1380  -webkit-clip-path: circle(150% at 100% 0%);
1381  pointer-events: all;
1382  display: flex;
1383}
1384
1385@media only screen and (max-width: 512px) {
1386  .nav-links {
1387    clip-path: unset;
1388    transition: all 0.3s ease-in;
1389    opacity: 0;
1390  }
1391
1392  .nav-links.open {
1393    opacity: 1;
1394  }
1395}
1396
1397.nav-links ul {
1398  column-count: 2;
1399  -webkit-column-count: 2;
1400  -moz-column-count: 2;
1401  column-gap: 100px;
1402  -webkit-column-gap: 100px;
1403  -moz-column-gap: 100px;
1404}
1405
1406@media only screen and (max-width: 1440px) {
1407  .nav-links ul {
1408    margin-top: 64px !important;
1409  }
1410}
1411
1412@media only screen and (max-width: 768px) {
1413  .nav-links ul {
1414    column-count: 1;
1415    -webkit-column-count: 1;
1416    -moz-column-count: 1;
1417  }
1418}
1419
1420@media only screen and (max-width: 512px) {
1421  .nav-links ul {
1422    margin-top: 0 !important;
1423  }
1424}
1425
1426.nav-links ul li {
1427  margin-bottom: 80px;
1428}
1429
1430@media only screen and (max-width: 768px) {
1431  .nav-links ul li {
1432    margin-bottom: 56px;
1433  }
1434
1435  .nav-links ul li:last-child {
1436    margin-bottom: 0;
1437  }
1438}
1439
1440@media only screen and (max-width: 512px) {
1441  .nav-links ul li {
1442    margin-bottom: 16px;
1443  }
1444}
1445
1446@media only screen and (max-width: 370px) {
1447  .nav-links ul li {
1448    margin-bottom: 21px;
1449  }
1450}
1451
1452.nav-links ul li a {
1453  color: #DADADA;
1454  font-size: var(--font-size-9);
1455  font-weight: 800;
1456  cursor: pointer;
1457}
1458
1459@media only screen and (max-width: 1280px) {
1460  .nav-links ul li a {
1461    font-size: var(--font-size-8);
1462  }
1463}
1464
1465@media only screen and (max-width: 768px) {
1466  .nav-links ul li a {
1467    font-size: var(--font-size-3);
1468  }
1469}
1470
1471#objb1fdbdd76ed14422bed7ddeb7b5a586c img {
1472  width: 32px;
1473}
1474
1475#objb1fdbdd76ed14422bed7ddeb7b5a586c h3 a {
1476  font-size: var(--font-size-6);
1477  color: var(--devhouse-green);
1478}
1479
1480@media only screen and (max-width: 768px) {
1481  #objb1fdbdd76ed14422bed7ddeb7b5a586c h3 a {
1482    font-size: var(--font-size-6);
1483    color: var(--devhouse-green);
1484  }
1485}
1486
1487@media only screen and (max-width: 370px) {
1488  #objb1fdbdd76ed14422bed7ddeb7b5a586c h3 a {
1489    font-size: var(--font-size-5);
1490  }
1491}
1492
1493@media only screen and (max-width: 768px) {
1494  .header-menu__social-media-wrapper {
1495    flex-direction: column;
1496    align-items: unset !important;
1497  }
1498
1499  .header-menu__social-media-wrapper .d-flex{
1500    margin-bottom: 32px;
1501  }
1502}
1503
1504@media only screen and (max-width: 512px) {
1505  .header-menu__social-media-wrapper {
1506    margin-bottom: 32px;
1507  }
1508}
1509
1510.text-devhouse-green {
1511  color: #6BB551 !important;
1512}
1513
1514.careerAnchor {
1515  cursor: pointer;
1516}</style><ul class="mt-5 spacing">
1517	<li><a class="text-uppercase text-decoration-none undefined"
1518	href=/works >Works</a></li><li><a class="text-uppercase text-decoration-none undefined"
1519	href=/blog >Blog</a></li><li><a class="text-uppercase text-decoration-none text-devhouse-green"
1520	href=/ >Get a quote</a></li><li><a class="text-uppercase text-decoration-none undefined"
1521	href=/about >About us</a></li><li><a class="text-uppercase text-decoration-none undefined"
1522	href=/blogpost/our-handbook >Our handbook</a></li><li><a class="text-uppercase text-decoration-none undefined"
1523	href=/contacts >Contacts</a></li>
1524</ul>
1525<div class="header-menu__social-media-wrapper d-flex justify-content-between align-items-center spacing">
1526	<div class="d-flex">
1527		<a class="mr-5" href="https://www.instagram.com/devhouse_/"><img class="h-auto" src="https://mars-images.imgix.net/instagram.png 80x80?auto=compress&w=80&auto=format,enhance" alt="social media icon" /></a><a class="mr-5" href="https://www.facebook.com/devhouse.pro"><img class="h-auto" src="https://mars-images.imgix.net/facebook.png 80x80?auto=compress&w=80&auto=format,enhance" alt="social media icon" /></a>
1528	</div>
1529	<div>
1530		<h3><a class="text-decoration-none" href="mailto:[email protected]">[email protected]</a></h3>
1531	</div>
1532</div></div><section id="BlocksParent"><style>.blocks-wrapper {
1533  display: grid;
1534  grid-template: repeat(2, 1fr) / 55% 45%;
1535  background-color: #fff;
1536}
1537
1538@media only screen and (max-width: 1024px) {
1539  .blocks-wrapper {
1540    grid-template: repeat(3, auto) / 100%;
1541  }
1542}
1543
1544.parallax-image__wrapper {
1545  grid-row: 1 / 3;
1546  grid-column: 2;
1547  overflow: clip;
1548  background-color: undefined;
1549}
1550
1551@media only screen and (max-width: 1024px) {
1552  .parallax-image__wrapper {
1553    grid-row: 2;
1554    grid-column: 1;
1555    margin-left: 40px;
1556    margin-right: 40px;
1557  }
1558}
1559
1560@media only screen and (max-width: 512px) {
1561  .parallax-image__wrapper {
1562    margin-left: 10px;
1563    margin-right: 10px;
1564    height: 290px;
1565  }
1566}
1567
1568.parallax-image__wrapper .position-sticky {
1569  top: 0;
1570}
1571
1572@media only screen and (max-width: 512px) {
1573  #BlocksParent .position-sticky {
1574    height: 290px;
1575  }
1576}
1577
1578#BlocksParent video {
1579  min-height: 100vh;
1580  transform: scale(1.2);
1581  object-fit: cover;
1582  object-position: center;
1583}
1584
1585@media only screen and (max-width: 1024px) {
1586  #BlocksParent video {
1587    width: 100%;
1588    min-height: 600px;
1589    height: 600px;
1590  }
1591}
1592
1593@media only screen and (max-width: 512px) {
1594  #BlocksParent video {
1595    display: none;
1596  }
1597}
1598
1599.parallax-image__wrapper img {
1600  display: none;
1601}
1602
1603@media only screen and (max-width: 512px) {
1604  .parallax-image__wrapper img {
1605    width: 100%;
1606    display: block;
1607  }
1608}</style><div class="blocks-wrapper"><div id="BlocksParent" class="works-header__text-wrapper d-flex flex-column justify-content-between w-100 spacing"><style>.works-header__text-wrapper {
1609  padding-top: 172px;
1610  padding-bottom: 80px;
1611  padding-left: 100px;
1612  height: 100vh;
1613}
1614
1615@media only screen and (max-width: 768px) {
1616  .works-header__text-wrapper {
1617    padding-left: 40px;
1618    height: 50vh;
1619  }
1620}
1621
1622@media only screen and (max-width: 512px) {
1623  .works-header__text-wrapper {
1624    padding-top: 160px;
1625    padding-bottom: 60px;
1626    padding-left: 10px;
1627  }
1628}
1629
1630#BlocksParent h1 {
1631  top: 100px;
1632  font-size: var(--font-size-11);
1633  font-weight: 800;
1634}
1635
1636@media only screen and (max-width: 1440px) {
1637  #BlocksParent h1 {
1638    font-size: 100px;
1639  }
1640}
1641
1642@media only screen and (max-width: 1280px) {
1643  #BlocksParent h1 {
1644    font-size: 80px;
1645  }
1646}
1647
1648@media only screen and (max-width: 512px) {
1649  #BlocksParent h1 {
1650    font-size: var(--font-size-8);
1651  }
1652}
1653
1654#BlocksParent aside {
1655  font-size: var(--font-size-3);
1656}
1657
1658@media only screen and (max-width: 512px) {
1659  #BlocksParent aside {
1660    width: 100% !important;
1661    font-size: var(--font-size-2);
1662  }
1663}</style><h1 class="text-uppercase">Works</h1>
1664<aside class="w-75">
1664We love bold ideas. We design & develop products for people that dare to do things differently. We focus on creating value in these areas</aside></div><div id="obj93695fd9b54a400c808a8a1d4eb43902" class="d-flex"><style>@media only screen and (max-width: 768px) {
1665  #obj93695fd9b54a400c808a8a1d4eb43902 .titleAndLogoContainer {
1666    flex-direction: row-reverse;
1667  }
1668}</style><div class="works-gallery-item__text-wrapper d-flex flex-column justify-content-center spacing strict-spacing"><div class="titleAndLogoContainer">
1669	<img src="https://mars-images.imgix.net/cielogo.png?auto=compress" alt="Project logo"/>
1670	<h2><a href="https://www.cakeiteasy.no/ " target="_blank"
1671		class="text-decoration-none text-uppercase">
1672		Cake it easy
1673	</a></h2>
1674</div>
1675<p class="works-gallery__short-desc">Best e-commerce platform for bakeries in Norway. Together with Cake it easy we created a simple to install web solution. Any bakery can install it in seconds. </p>
1676<p>Cake it easy started as a marketplace solution, while today we orient on building the best platform for bakeries to sell everything from bread to cakes.</p>
1677<div class="d-flex devhouse-works__years my-3">
1678	<div class="mr-5">
1679		<h5 class="font-weight-bold">7+</h5>
1680		<p class="w-100">years in progress</p>
1681	</div><div class="mr-5">
1682		<h5 class="font-weight-bold">200k+</h5>
1683		<p class="w-100">cakes sold</p>
1684	</div><div class="mr-5">
1685		<h5 class="font-weight-bold">1</h5>
1686		<p class="w-100">project to 10</p>
1687	</div>
1688</div>
1689<div class="d-flex flex-wrap devhouse_works__technologies mb-5">
1690	<div class="mr-3">
1691		<small class="text-muted">Python (Django)</small>
1692	</div><div class="mr-3">
1693		<small class="text-muted">Angular</small>
1694	</div><div class="mr-3">
1695		<small class="text-muted">PostgreSQL</small>
1696	</div><div class="mr-3">
1697		<small class="text-muted">AWS</small>
1698	</div><div class="mr-3">
1699		<small class="text-muted">GitHub</small>
1700	</div><div class="mr-3">
1701		<small class="text-muted">Jenkins</small>
1702	</div>
1703</div>
1704<a
1705			  href="https://www.cakeiteasy.no/ "
1706				target="_blank"
1707				class="text-devhouse-green font-weight-bold text-decoration-none text-uppercase"><span>Check project</span>
1708	<i class="icon-arrow-right ml-3"></i>
1709</a></div></div><div class="parallax-image__wrapper"><div class="position-sticky"><video autoplay="true" loop="true" muted="true" class="noisy-bg"><source src="https://mars-images.imgix.net/1628670692312?auto=compress" type="video/mp4"></source></video><img class="w-100" src="https://mars-images.imgix.net/1629028889838?auto=compress&w=450&q=75&auto=format" alt="Project's image"></img></div></div></div>
1709<script v-pre type="module">const data = JSON.parse(decodeURIComponent("%7B%22_blockName%22%3A%22BlocksParent%22%2C%22firstWork%22%3A%7B%22_id%22%3A%2260decddbf877b200ec068252%22%2C%22title%22%3A%22Cake%20it%20easy%22%2C%22shortDesc%22%3A%22Best%20e-commerce%20platform%20for%20bakeries%20in%20Norway.%20Together%20with%20Cake%20it%20easy%20we%20created%20a%20simple%20to%20install%20web%20solution.%20Any%20bakery%20can%20install%20it%20in%20seconds.%20%22%2C%22fullDesc%22%3A%22Cake%20it%20easy%20started%20as%20a%20marketplace%20solution%2C%20while%20today%20we%20orient%20on%20building%20the%20best%20platform%20for%20bakeries%20to%20sell%20everything%20from%20bread%20to%20cakes.%22%2C%22banner%22%3A%22https%3A%2F%2Fmars-images.imgix.net%2F1629028889838%3Fauto%3Dcompress%22%2C%22createdAt%22%3A%222021-07-02T08%3A27%3A07.875Z%22%2C%22updatedAt%22%3A%222021-08-26T18%3A38%3A51.511Z%22%2C%22logo%22%3A%22https%3A%2F%2Fmars-images.imgix.net%2Fcielogo.png%3Fauto%3Dcompress%22%2C%22url%22%3A%22https%3A%2F%2Fwww.cakeiteasy.no%2F%20%22%2C%22backgroundColor%22%3Anull%2C%22video%22%3A%22https%3A%2F%2Fmars-images.imgix.net%2F1628670692312%3Fauto%3Dcompress%22%2C%22feedback%22%3A%7B%22name%22%3A%22Marius%20Sevaldsen%22%2C%22positionAndCompany%22%3A%22Founder%20%26%20CEO%2C%20Cake%20it%20easy%22%2C%22photo%22%3A%22https%3A%2F%2Fmars-images.imgix.net%2F1629833302191%3Fauto%3Dcompress%22%2C%22feedback%22%3A%22I%20have%20been%20working%20with%20Devhouse%20for%205%20years%20now%20and%20they%20are%20the%20best%20developers%20I%20have%20worked%20with.%20They%20are%20creative%2C%20skilled%20at%20what%20they%20do%20and%20puts%20honor%20into%20their%20work.%20A%20good%20developer%20builds%20what%20the%20client%20tells%20him%20to%20build.%20A%20great%20developer%20suggests%20how%20to%20do%20it%20in%20a%20better%20way.%20Devhouse%20falls%20in%20the%20last%20category.%20And%20as%20a%20bonus%20-%20Igor%20and%20the%20guys%20is%20a%20pleasure%20to%20work%20with.%20So%20to%20sum%20it%20up%20-%20stay%20away%20from%20these%20guys.%20They%20are%20ours!%22%7D%2C%22tech%22%3A%5B%7B%22title%22%3A%22Python%20(Django)%22%7D%2C%7B%22title%22%3A%22Angular%22%7D%2C%7B%22title%22%3A%22PostgreSQL%22%7D%2C%7B%22title%22%3A%22AWS%22%7D%2C%7B%22title%22%3A%22GitHub%22%7D%2C%7B%22title%22%3A%22Jenkins%22%7D%2C%7B%22title%22%3A%22Auto-tests%20(Selenium%2C%20Protractor)%22%7D%2C%7B%22title%22%3A%22Asana%22%7D%2C%7B%22title%22%3A%22Jira%22%7D%5D%2C%22slug%22%3Anull%2C%22floatingNumbers%22%3A%5B%7B%22number%22%3A%227%2B%22%2C%22caption%22%3A%22years%20in%20progress%22%7D%2C%7B%22number%22%3A%22200k%2B%22%2C%22caption%22%3A%22cakes%20sold%22%7D%2C%7B%22number%22%3A%221%22%2C%22caption%22%3A%22project%20to%2010%22%7D%5D%2C%22duration%22%3Anull%2C%22mobilePreviews%22%3A%5B%5D%2C%22tabletPreviews%22%3A%5B%5D%2C%22challenges%22%3A%5B%5D%2C%22casePage%22%3Afalse%2C%22videoUrl%22%3A%22https%3A%2F%2Fres.cloudinary.com%2Fwww-devhouse-pro%2Fvideo%2Fupload%2Fc_scale%2Cw_600%2Fv1629837818%2Fdevhouse-landing%2FCake_video_agx6w7.mp4%22%2C%22priority%22%3A1%2C%22formattedBusinessSince%22%3A0%2C%22formattedDevelopmentSince%22%3A0%2C%22Id%22%3A%22obj4086ddff3fd64135b88a66d3e0c94d42%22%7D%2C%22Id%22%3A%22BlocksParent%22%2C%22asideNote%22%3A%22We%20love%20bold%20ideas.%20We%20design%20%26%20develop%20products%20for%20people%20that%20dare%20to%20do%20things%20differently.%20We%20focus%20on%20creating%20value%20in%20these%20areas%22%2C%22title%22%3A%22Works%22%2C%22children%22%3Anull%7D"));const container = document.querySelector('#BlocksParent');
1710const video = container.querySelector('.position-sticky');
1711const videoTop = parseInt(window.getComputedStyle(video).top);
1712
1713if (window.matchMedia("(min-width: 1024px)").matches) {
1714  document.addEventListener('scroll', () => {
1715    let value = window.scrollY;
1716    let y = 1 + (window.scrollY || window.pageYOffset);
1717    y = y < 1 ? 1 : y; // for Safari
1718
1719    video.style.top = videoTop - value * 0.10 + 'px'
1720  })
1721}</script>
1721</section><div id="obj7466adf19ab64b05b0d9233917e9c056" class="d-flex justify-content-between"><style>#obj7466adf19ab64b05b0d9233917e9c056 {
1722  width: 100%;
1723}
1724
1725@media only screen and (max-width: 1024px) {
1726  #obj7466adf19ab64b05b0d9233917e9c056 {
1727    flex-direction: column-reverse;
1728  }
1729}</style><div class="works-gallery-item__text-wrapper d-flex flex-column justify-content-center spacing strict-spacing"><div class="titleAndLogoContainer">
1730	<img src="https://mars-images.imgix.net/bblogo.png?auto=compress" alt="Project logo"/>
1731	<h2><a href="https://www.bizbot.com/ " target="_blank"
1732		class="text-decoration-none text-uppercase">
1733		BizBot
1734	</a></h2>
1735</div>
1736<p class="works-gallery__short-desc">BizBot is a great platform for entrepreneurs and investors, accountants, startups and incubators. It connects and makes management way easier.</p>
1737<p>We have been working on BizBot for many years with a great interest. It is a challenging project in terms of development, and this makes us more curious when choosing the right solutions, technologies and while making project related decisions.</p>
1738<div class="d-flex devhouse-works__years my-3">
1739	<div class="mr-5">
1740		<h5 class="font-weight-bold">3+ years</h5>
1741		<p class="w-100">of cooperation</p>
1742	</div><div class="mr-5">
1743		<h5 class="font-weight-bold">178 companies</h5>
1744		<p class="w-100">using the platform</p>
1745	</div><div class="mr-5">
1746		<h5 class="font-weight-bold">3616 potential</h5>
1747		<p class="w-100">platform using companies</p>
1748	</div>
1749</div>
1750<div class="d-flex flex-wrap devhouse_works__technologies mb-5">
1751	<div class="mr-3">
1752		<small class="text-muted">Node.js</small>
1753	</div><div class="mr-3">
1754		<small class="text-muted">Vue.js</small>
1755	</div><div class="mr-3">
1756		<small class="text-muted">MongoDB</small>
1757	</div><div class="mr-3">
1758		<small class="text-muted">AWS S3</small>
1759	</div><div class="mr-3">
1760		<small class="text-muted">Reports API</small>
1761	</div><div class="mr-3">
1762		<small class="text-muted">SendGrid</small>
1763	</div>
1764</div>
1765<a
1766			  href="https://www.bizbot.com/ "
1767				target="_blank"
1768				class="text-devhouse-green font-weight-bold text-decoration-none text-uppercase"><span>Check project</span>
1769	<i class="icon-arrow-right ml-3"></i>
1770</a></div><div class="works-gallery-item__image-wrapper">
1771	<div class="image-wrapper position-relative">
1772		<video autoplay loop muted preload="none"
1773			poster="https://mars-images.imgix.net/bbbanner.png?auto=compress&q=75&auto=format">
1774			<source src=https://res.cloudinary.com/www-devhouse-pro/video/upload/c_scale,w_600/v1629837803/devhouse-landing/Bizbot_video_fxdi8k.mp4 type="video/mp4" />
1775		</video>
1776		<img class="w-100" src="https://mars-images.imgix.net/bbbanner.png?auto=compress&w=450&q=75&auto=format" />
1777	</div>
1778</div></div><div id="objbe701f2b905047a2b92034928d43756f" class="d-flex justify-content-between"><style>#objbe701f2b905047a2b92034928d43756f {
1779  width: 100%;
1780}
1781
1782@media only screen and (max-width: 1024px) {
1783  #objbe701f2b905047a2b92034928d43756f {
1784    flex-direction: column-reverse;
1785  }
1786}</style><div class="works-gallery-item__text-wrapper d-flex flex-column justify-content-center spacing strict-spacing"><div class="titleAndLogoContainer">
1787	<img src="https://mars-images.imgix.net/1629288687973?auto=compress" alt="Project logo"/>
1788	<h2><a href="https://www.altovita.com/" target="_blank"
1789		class="text-decoration-none text-uppercase">
1790		Altovita
1791	</a></h2>
1792</div>
1793<p class="works-gallery__short-desc">Altovita” is a UK, London based startup founded by Vivi and Karolina in 2016. It was full of ambitions and now it looks like we've found the niche and are doing great. We work in many directions at the same moment of time: from supply acquisition to marketing and customer support. It’s not the same small company it was. Devhouse is proud to be a part of this.</p>
1794<p>We started working with Altovita a few years ago. At that time it was a different project. Our CEO Igor joined the project as CTO and helped to move it from WordPress based project oriented into a private travelling/booking engine into quite a complex solution with many integrations and new kinds of customers: Business Travellers/Rellocators.</p>
1795<div class="d-flex devhouse-works__years my-3">
1796	<div class="mr-5">
1797		<h5 class="font-weight-bold">Over 5</h5>
1798		<p class="w-100">projects in progress</p>
1799	</div><div class="mr-5">
1800		<h5 class="font-weight-bold">3 pivots</h5>
1801		<p class="w-100">over the time</p>
1802	</div><div class="mr-5">
1803		<h5 class="font-weight-bold">1-8</h5>
1804		<p class="w-100">team growth </p>
1805	</div>
1806</div>
1807<div class="d-flex flex-wrap devhouse_works__technologies mb-5">
1808	<div class="mr-3">
1809		<small class="text-muted">PHP (Symfony)</small>
1810	</div><div class="mr-3">
1811		<small class="text-muted">React</small>
1812	</div><div class="mr-3">
1813		<small class="text-muted"> MySQL</small>
1814	</div><div class="mr-3">
1815		<small class="text-muted">AWS</small>
1816	</div><div class="mr-3">
1817		<small class="text-muted">Selenium</small>
1818	</div><div class="mr-3">
1819		<small class="text-muted"> Jenkins</small>
1820	</div>
1821</div>
1822<a
1823			  href="https://www.altovita.com/"
1824				target="_blank"
1825				class="text-devhouse-green font-weight-bold text-decoration-none text-uppercase"><span>Check project</span>
1826	<i class="icon-arrow-right ml-3"></i>
1827</a></div><div class="works-gallery-item__image-wrapper">
1828	<div class="image-wrapper position-relative">
1829		<video autoplay loop muted preload="none"
1830			poster="https://mars-images.imgix.net/1629375525172?auto=compress&q=75&auto=format">
1831			<source src=https://res.cloudinary.com/www-devhouse-pro/video/upload/c_scale,w_600/v1629837805/devhouse-landing/Altovita_video_pamwtu.mp4 type="video/mp4" />
1832		</video>
1833		<img class="w-100" src="https://mars-images.imgix.net/1629375525172?auto=compress&w=450&q=75&auto=format" />
1834	</div>
1835</div></div><div id="obj54aec6a325b142598edac1e45ecd8c1b" class="d-flex justify-content-between"><style>#obj54aec6a325b142598edac1e45ecd8c1b {
1836  width: 100%;
1837}
1838
1839@media only screen and (max-width: 1024px) {
1840  #obj54aec6a325b142598edac1e45ecd8c1b {
1841    flex-direction: column-reverse;
1842  }
1843}</style><div class="works-gallery-item__text-wrapper d-flex flex-column justify-content-center spacing strict-spacing"><div class="titleAndLogoContainer">
1844	<img src="https://mars-images.imgix.net/1628966800477?auto=compress" alt="Project logo"/>
1845	<h2><a href="https://www.filmgrail.com/" target="_blank"
1846		class="text-decoration-none text-uppercase">
1847		Filmgrail
1848	</a></h2>
1849</div>
1850<p class="works-gallery__short-desc">We started partnership with Filmgrail many years ago and it’s awesome partner to work with.</p>
1851<p>We have already built 10+ projects together.</p>
1852<div class="d-flex devhouse-works__years my-3">
1853	
1854</div>
1855<div class="d-flex flex-wrap devhouse_works__technologies mb-5">
1856	<div class="mr-3">
1857		<small class="text-muted">Node.js</small>
1858	</div><div class="mr-3">
1859		<small class="text-muted">Vue.js</small>
1860	</div><div class="mr-3">
1861		<small class="text-muted">MongoDB</small>
1862	</div><div class="mr-3">
1863		<small class="text-muted">AWS</small>
1864	</div><div class="mr-3">
1865		<small class="text-muted">Microsoft Azure</small>
1866	</div><div class="mr-3">
1867		<small class="text-muted">Asana</small>
1868	</div>
1869</div>
1870<a
1871			  href="https://www.filmgrail.com/"
1872				target="_blank"
1873				class="text-devhouse-green font-weight-bold text-decoration-none text-uppercase"><span>Check project</span>
1874	<i class="icon-arrow-right ml-3"></i>
1875</a></div><div class="works-gallery-item__image-wrapper">
1876	<div class="image-wrapper position-relative">
1877		<video autoplay loop muted preload="none"
1878			poster="https://mars-images.imgix.net/1629372740331?auto=compress&q=75&auto=format">
1879			<source src=https://res.cloudinary.com/www-devhouse-pro/video/upload/c_scale,w_600/v1629837804/devhouse-landing/Filmgrail_video_yybhwt.mp4 type="video/mp4" />
1880		</video>
1881		<img class="w-100" src="https://mars-images.imgix.net/1629372740331?auto=compress&w=450&q=75&auto=format" />
1882	</div>
1883</div></div><div id="obj665c6e335eed46729e064039f56e4197" class="d-flex justify-content-between"><style>#obj665c6e335eed46729e064039f56e4197 {
1884  width: 100%;
1885}
1886
1887@media only screen and (max-width: 1024px) {
1888  #obj665c6e335eed46729e064039f56e4197 {
1889    flex-direction: column-reverse;
1890  }
1891}</style><div class="works-gallery-item__text-wrapper d-flex flex-column justify-content-center spacing strict-spacing"><div class="titleAndLogoContainer">
1892	<img src="https://mars-images.imgix.net/1628966267979?auto=compress" alt="Project logo"/>
1893	<h2><a href="https://www.smarttakst.no/ " target="_blank"
1894		class="text-decoration-none text-uppercase">
1895		Smartakst
1896	</a></h2>
1897</div>
1898<p class="works-gallery__short-desc">Smarttakst is quite an innovative approach to handle reports.</p>
1899<p>Instead of doing a lot of paperwork, we went differently: we helped Krister and the team to build iOS, Android apps which could make life of property inspectors. The project is not publicly released yet and is primarily used by ambassadors who already generated 700+ reports and are happy about the solution.</p>
1900<div class="d-flex devhouse-works__years my-3">
1901	<div class="mr-5">
1902		<h5 class="font-weight-bold">775</h5>
1903		<p class="w-100">reported done</p>
1904	</div><div class="mr-5">
1905		<h5 class="font-weight-bold">140+ </h5>
1906		<p class="w-100">users on beta</p>
1907	</div>
1908</div>
1909<div class="d-flex flex-wrap devhouse_works__technologies mb-5">
1910	<div class="mr-3">
1911		<small class="text-muted">Node.js</small>
1912	</div><div class="mr-3">
1913		<small class="text-muted">NestJS</small>
1914	</div><div class="mr-3">
1915		<small class="text-muted">React Native</small>
1916	</div><div class="mr-3">
1917		<small class="text-muted">TypeScript</small>
1918	</div><div class="mr-3">
1919		<small class="text-muted">MongoDB (Mongoose)</small>
1920	</div><div class="mr-3">
1921		<small class="text-muted">Microsoft Azure</small>
1922	</div>
1923</div>
1924<a
1925			  href="https://www.smarttakst.no/ "
1926				target="_blank"
1927				class="text-devhouse-green font-weight-bold text-decoration-none text-uppercase"><span>Check project</span>
1928	<i class="icon-arrow-right ml-3"></i>
1929</a></div><div class="works-gallery-item__image-wrapper">
1930	<div class="image-wrapper position-relative">
1931		<video autoplay loop muted preload="none"
1932			poster="https://mars-images.imgix.net/1629375433697?auto=compress&q=75&auto=format">
1933			<source src=https://res.cloudinary.com/www-devhouse-pro/video/upload/c_scale,w_600/v1629837803/devhouse-landing/Smart_video_npbfz5.mp4 type="video/mp4" />
1934		</video>
1935		<img class="w-100" src="https://mars-images.imgix.net/1629375433697?auto=compress&w=450&q=75&auto=format" />
1936	</div>
1937</div></div><div id="obj0d8164e7cd344ed3a09094443ba8de51" class="d-flex justify-content-between"><style>#obj0d8164e7cd344ed3a09094443ba8de51 {
1938  width: 100%;
1939}
1940
1941@media only screen and (max-width: 1024px) {
1942  #obj0d8164e7cd344ed3a09094443ba8de51 {
1943    flex-direction: column-reverse;
1944  }
1945}</style><div class="works-gallery-item__text-wrapper d-flex flex-column justify-content-center spacing strict-spacing"><div class="titleAndLogoContainer">
1946	<img src="https://mars-images.imgix.net/1628960280614?auto=compress" alt="Project logo"/>
1947	<h2><a href="https://www.enter.art/ " target="_blank"
1948		class="text-decoration-none text-uppercase">
1949		enter.art
1950	</a></h2>
1951</div>
1952<p class="works-gallery__short-desc">
1952enter.art is a great place for the artists to meet, become widely known and sell their artworks. “Enter” is expanding its spheres providing more opportunities to more creative people.</p>
1953<p>During the short period of time this project became bigger and now it includes various platforms.
1954
1955Our business partner: Filmgrail</p>
1956<div class="d-flex devhouse-works__years my-3">
1957	<div class="mr-5">
1958		<h5 class="font-weight-bold">1000+</h5>
1959		<p class="w-100">artworks</p>
1960	</div><div class="mr-5">
1961		<h5 class="font-weight-bold">250+</h5>
1962		<p class="w-100">artists</p>
1963	</div><div class="mr-5">
1964		<h5 class="font-weight-bold">From 1</h5>
1965		<p class="w-100">project to 4</p>
1966	</div>
1967</div>
1968<div class="d-flex flex-wrap devhouse_works__technologies mb-5">
1969	<div class="mr-3">
1970		<small class="text-muted">Node.js</small>
1971	</div><div class="mr-3">
1972		<small class="text-muted">Vue.js</small>
1973	</div><div class="mr-3">
1974		<small class="text-muted">MongoDB</small>
1975	</div><div class="mr-3">
1976		<small class="text-muted">AWS</small>
1977	</div><div class="mr-3">
1978		<small class="text-muted">Blockchain</small>
1979	</div><div class="mr-3">
1980		<small class="text-muted">Solidity</small>
1981	</div>
1982</div>
1983<a
1984			  href="https://www.enter.art/ "
1985				target="_blank"
1986				class="text-devhouse-green font-weight-bold text-decoration-none text-uppercase"><span>Check project</span>
1987	<i class="icon-arrow-right ml-3"></i>
1988</a></div><div class="works-gallery-item__image-wrapper">
1989	<div class="image-wrapper position-relative">
1990		<video autoplay loop muted preload="none"
1991			poster="https://mars-images.imgix.net/1629371983708?auto=compress&q=75&auto=format">
1992			<source src=https://res.cloudinary.com/www-devhouse-pro/video/upload/c_scale,w_600/v1629837809/devhouse-landing/Enter_art_video_c3rl7a.mp4 type="video/mp4" />
1993		</video>
1994		<img class="w-100" src="https://mars-images.imgix.net/1629371983708?auto=compress&w=450&q=75&auto=format" />
1995	</div>
1996</div></div><div id="obj3a5cd46130884f4cad106f87f99ceec6" class="d-flex justify-content-between"><style>#obj3a5cd46130884f4cad106f87f99ceec6 {
1997  width: 100%;
1998}
1999
2000@media only screen and (max-width: 1024px) {
2001  #obj3a5cd46130884f4cad106f87f99ceec6 {
2002    flex-direction: column-reverse;
2003  }
2004}</style><div class="works-gallery-item__text-wrapper d-flex flex-column justify-content-center spacing strict-spacing"><div class="titleAndLogoContainer">
2005	<img src="https://mars-images.imgix.net/1628963388888?auto=compress" alt="Project logo"/>
2006	<h2><a href="https://www.cultpix.com/" target="_blank"
2007		class="text-decoration-none text-uppercase">
2008		Cultpix
2009	</a></h2>
2010</div>
2011<p class="works-gallery__short-desc">Cultpix is а new global film streaming service for vintage cult films</p>
2012<p>We started working with Cultpix team in the middle of summer, 2020. We planned to make the site for around 80 movies. Now almost 500 movies have been uploaded to the site. Now it’s one of the biggest streaming services for vintage films in Norway with a huge potential.</p>
2013<div class="d-flex devhouse-works__years my-3">
2014	<div class="mr-5">
2015		<h5 class="font-weight-bold">500+ movies</h5>
2016		<p class="w-100">uploaded on the site</p>
2017	</div><div class="mr-5">
2018		<h5 class="font-weight-bold">1000+</h5>
2019		<p class="w-100">active users</p>
2020	</div>
2021</div>
2022<div class="d-flex flex-wrap devhouse_works__technologies mb-5">
2023	<div class="mr-3">
2024		<small class="text-muted">Node.js</small>
2025	</div><div class="mr-3">
2026		<small class="text-muted">Vue.js</small>
2027	</div><div class="mr-3">
2028		<small class="text-muted">JavaScript</small>
2029	</div><div class="mr-3">
2030		<small class="text-muted">MongoDB</small>
2031	</div><div class="mr-3">
2032		<small class="text-muted">Bootstrap</small>
2033	</div><div class="mr-3">
2034		<small class="text-muted">Stripe</small>
2035	</div>
2036</div>
2037<a
2038			  href="https://www.cultpix.com/"
2039				target="_blank"
2040				class="text-devhouse-green font-weight-bold text-decoration-none text-uppercase"><span>Check project</span>
2041	<i class="icon-arrow-right ml-3"></i>
2042</a></div><div class="works-gallery-item__image-wrapper">
2043	<div class="image-wrapper position-relative">
2044		<video autoplay loop muted preload="none"
2045			poster="https://mars-images.imgix.net/1629374599609?auto=compress&q=75&auto=format">
2046			<source src=https://res.cloudinary.com/www-devhouse-pro/video/upload/c_scale,w_600/v1629837808/devhouse-landing/Cultpix_video_w0u56d.mp4 type="video/mp4" />
2047		</video>
2048		<img class="w-100" src="https://mars-images.imgix.net/1629374599609?auto=compress&w=450&q=75&auto=format" />
2049	</div>
2050</div></div><div id="obj25720a7546d84c16a1fd93d16bb17991" class="d-flex justify-content-between"><style>#obj25720a7546d84c16a1fd93d16bb17991 {
2051  width: 100%;
2052}
2053
2054@media only screen and (max-width: 1024px) {
2055  #obj25720a7546d84c16a1fd93d16bb17991 {
2056    flex-direction: column-reverse;
2057  }
2058}</style><div class="works-gallery-item__text-wrapper d-flex flex-column justify-content-center spacing str
2058ict-spacing"><div class="titleAndLogoContainer">
2059	<img src="https://mars-images.imgix.net/1628963190317?auto=compress" alt="Project logo"/>
2060	<h2><a href="https://www.sasu.no" target="_blank"
2061		class="text-decoration-none text-uppercase">
2062		SASU
2063	</a></h2>
2064</div>
2065<p class="works-gallery__short-desc">This is a marketplace for services in Norway, Oslo. SASU provides fitness and beauty services at customer’s places. </p>
2066<p>We started working on SASU MVP in the beginning of 2021.
2067Now we are working on the support part. 
2068The service is available only in Oslo, but we have laid the foundation for consistent development in other cities of Norway.
2069It was a great challenging project in terms of building logic and development.</p>
2070<div class="d-flex devhouse-works__years my-3">
2071	<div class="mr-5">
2072		<h5 class="font-weight-bold">5 team members</h5>
2073		<p class="w-100">worked on the site</p>
2074	</div><div class="mr-5">
2075		<h5 class="font-weight-bold">1 full function MVP</h5>
2076		<p class="w-100">with great potential</p>
2077	</div><div class="mr-5">
2078		<h5 class="font-weight-bold">17+</h5>
2079		<p class="w-100">types of services provided</p>
2080	</div>
2081</div>
2082<div class="d-flex flex-wrap devhouse_works__technologies mb-5">
2083	<div class="mr-3">
2084		<small class="text-muted">Node.js</small>
2085	</div><div class="mr-3">
2086		<small class="text-muted">Vue.js</small>
2087	</div><div class="mr-3">
2088		<small class="text-muted">JavaScript</small>
2089	</div><div class="mr-3">
2090		<small class="text-muted">MongoDB</small>
2091	</div><div class="mr-3">
2092		<small class="text-muted">AWS</small>
2093	</div><div class="mr-3">
2094		<small class="text-muted">Bootstrap</small>
2095	</div>
2096</div>
2097<a
2098			  href="https://www.sasu.no"
2099				target="_blank"
2100				class="text-devhouse-green font-weight-bold text-decoration-none text-uppercase"><span>Check project</span>
2101	<i class="icon-arrow-right ml-3"></i>
2102</a></div><div class="works-gallery-item__image-wrapper">
2103	<div class="image-wrapper position-relative">
2104		<video autoplay loop muted preload="none"
2105			poster="https://mars-images.imgix.net/1629372138669?auto=compress&q=75&auto=format">
2106			<source src=https://res.cloudinary.com/www-devhouse-pro/video/upload/c_scale,w_600/v1629837810/devhouse-landing/Sasu_video_um7awa.mp4 type="video/mp4" />
2107		</video>
2108		<img class="w-100" src="https://mars-images.imgix.net/1629372138669?auto=compress&w=450&q=75&auto=format" />
2109	</div>
2110</div></div><div id="obj28a53f645c9b4aa8b77f7736b981c4e5" class="d-flex justify-content-between"><style>#obj28a53f645c9b4aa8b77f7736b981c4e5 {
2111  width: 100%;
2112}
2113
2114@media only screen and (max-width: 1024px) {
2115  #obj28a53f645c9b4aa8b77f7736b981c4e5 {
2116    flex-direction: column-reverse;
2117  }
2118}</style><div class="works-gallery-item__text-wrapper d-flex flex-column justify-content-center spacing strict-spacing"><div class="titleAndLogoContainer">
2119	<img src="https://mars-images.imgix.net/1628966375558?auto=compress" alt="Project logo"/>
2120	<h2><a href="https://www.capa.no" target="_blank"
2121		class="text-decoration-none text-uppercase">
2122		Capa
2123	</a></h2>
2124</div>
2125<p class="works-gallery__short-desc">CAPA is the oldest and most competent media & entertainment company  in cinema advertising, Norway.</p>
2126<p>The site provides several services in the biggest cinema chains in Norway:
2127Canvas advertising,
2128Events,
2129Digital services, 
2130Conferences.</p>
2131<div class="d-flex devhouse-works__years my-3">
2132	
2133</div>
2134<div class="d-flex flex-wrap devhouse_works__technologies mb-5">
2135	<div class="mr-3">
2136		<small class="text-muted">Node.js</small>
2137	</div><div class="mr-3">
2138		<small class="text-muted">Vue.js</small>
2139	</div><div class="mr-3">
2140		<small class="text-muted">JavaScript</small>
2141	</div><div class="mr-3">
2142		<small class="text-muted">MongoDB</small>
2143	</div><div class="mr-3">
2144		<small class="text-muted">Bootstrap</small>
2145	</div><div class="mr-3">
2146		<small class="text-muted">AWS</small>
2147	</div>
2148</div>
2149<a
2150			  href="https://www.capa.no"
2151				target="_blank"
2152				class="text-devhouse-green font-weight-bold text-decoration-none text-uppercase"><span>Check project</span>
2153	<i class="icon-arrow-right ml-3"></i>
2154</a></div><div class="works-gallery-item__image-wrapper">
2155	<div class="image-wrapper position-relative">
2156		<video autoplay loop muted preload="none"
2157			poster="https://mars-images.imgix.net/1629372303463?auto=compress&q=75&auto=format">
2158			<source src=https://res.cloudinary.com/www-devhouse-pro/video/upload/c_scale,w_600/v1629837805/devhouse-landing/Capa_video_iliuwm.mp4 type="video/mp4" />
2159		</video>
2160		<img class="w-100" src="https://mars-images.imgix.net/1629372303463?auto=compress&w=450&q=75&auto=format" />
2161	</div>
2162</div></div><div id="obj1fd5e6b6ab9d4412b4c1a311fb81af74" class="d-flex justify-content-between"><style>#obj1fd5e6b6ab9d4412b4c1a311fb81af74 {
2163  width: 100%;
2164}
2165
2166@media only screen and (max-width: 1024px) {
2167  #obj1fd5e6b6ab9d4412b4c1a311fb81af74 {
2168    flex-direction: column-reverse;
2169  }
2170}</style><div class="works-gallery-item__text-wrapper d-flex flex-column justify-content-center spacing strict-spacing"><div class="titleAndLogoContainer">
2171	<img src="https://mars-images.imgix.net/1628966627714?auto=compress" alt="Project logo"/>
2172	<h2><a href="https://eventeyeapp.com/no" target="_blank"
2173		class="text-decoration-none text-uppercase">
2174		Eventeye
2175	</a></h2>
2176</div>
2177<p class="works-gallery__short-desc">If you don't have a way to notify your participant about changes or quickly share an agenda, it could be a pain, but it's not if you have EventEye as a partner.</p>
2178<p>We helped to build a robust system that consists of mobile-app and Angular powered dashboard to manage the content.</p>
2179<div class="d-flex devhouse-works__years my-3">
2180	
2181</div>
2182<div class="d-flex flex-wrap devhouse_works__technologies mb-5">
2183	<div class="mr-3">
2184		<small class="text-muted">C#</small>
2185	</div><div class="mr-3">
2186		<small class="text-muted">JavaScript</small>
2187	</div><div class="mr-3">
2188		<small class="text-muted">Angular</small>
2189	</div><div class="mr-3">
2190		<small class="text-muted">ASP.NET Web API</small>
2191	</div>
2192</div>
2193<a
2194			  href="https://eventeyeapp.com/no"
2195				target="_blank"
2196				class="text-devhouse-green font-weight-bold text-decoration-none text-uppercase"><span>Check project</span>
2197	<i class="icon-arrow-right ml-3"></i>
2198</a></div><div class="works-gallery-item__image-wrapper">
2199	<div class="image-wrapper position-relative">
2200		<video autoplay loop muted preload="none"
2201			poster="https://mars-images.imgix.net/1629373674857?auto=compress&q=75&auto=format">
2202			<source src= type="video/mp4" />
2203		</video>
2204		<img class="w-100" src="https://mars-images.imgix.net/1629373674857?auto=compress&w=450&q=75&auto=format" />
2205	</div>
2206</div></div><div id="FloatingImage"><div class="dynamic-image-container"></div><style>#FloatingImage {
2207  width: 45%;
2208  height: 100vh;
2209  position: sticky;
2210  top: 0;
2211  z-index: 3;
2212  float: right;
2213}
2214
2215/* if image */
2216
2217.dynamic-image-container {
2218  width: 100%;
2219  height: 100%;
2220  background: no-repeat center/cover url("https://mars-images.imgix.net/DSC_2748.jpg?auto=compress&w=870&q=100&auto-format");
2221}
2222
2223/* if video */
2224
2225#FloatingImage video {
2226  width: 100%;
2227  height: 100%;
2228}
2229
2230@media only screen and (max-width: 1224px) {
2231  #FloatingImage {
2232    width: 100%;
2233    position: static;
2234    float: unset;
2235  }
2236}
2237
2238@media only screen and (max-width: 512px) {
2239  #FloatingImage {
2240    height: 25vh;
2241  }
2242
2243  .dynamic-image-container {
2244    background: no-repeat center/cover url("https://mars-images.imgix.net/DSC_2748.jpg?auto=compress&w=512&q=100&auto-format");
2245    background-position: 100% 30%;
2246  }
2247}</style></div><section id="CallToActionBlock" class="spacing d-flex align-items-center pt-5"><style>/* container */
2248#CallToActionBlock {
2249  padding-top: 200px;
2250  background-color: #fff;
2251}
2252
2253@media only screen and (max-width: 768px) {
2254  #CallToActionBlock {
2255    height: unset;
2256  }
2257}
2258
2259#CallToActionBlock .spacing {
2260  padding-right: unset;
2261}
2262
2263/* button */
2264#CallToActionBlock button {
2265  margin-bottom: 192px;
2266  padding: 18px 64px;
2267  font-size: var(--font-size-2);
2268  background-color: var(--devhouse-green);
2269  cursor: pointer;
2270  transition: 0.2s ease-in;
2271}
2272
2273@media only screen and (max-width: 512px) {
2274  #CallToActionBlock button {
2275    width: 100%;
2276    margin-bottom: 40px;
2277  }
2278}
2279
2280#CallToActionBlock button:hover {
2281  color: black!important;
2282  background-color: #9CD737;
2283  transform: scale(1.05);
2284}
2285
2286/* typography */
2287#CallToActionBlock .call-to-action__text h2 {
2288  font-size: var(--font-size-11);
2289  font-weight: 800;
2290}
2291
2292.call-to-action__text h2 span {
2293  color: transparent;
2294  -webkit-text-stroke-width: 1px;
2295  -webkit-text-stroke-color: #000;
2296}
2297
2298.call-to-action__text h6 {
2299  margin-bottom: 80px;
2300  font-size: var(--font-size-7);
2301  font-weight: 600;
2302}
2303
2304@media only screen and (max-width: 1418px) {
2305  #CallToActionBlock .call-to-action__text h2 {
2306    font-size: 100px;
2307  }
2308
2309  .call-to-action__text h6 {
2310    font-size: var(--font-size-6);
2311  }
2312}
2313
2314@media only screen and (max-width: 1236px) {
2315  #CallToActionBlock .call-to-action__text h2 {
2316    font-size: var(--font-size-11);
2317  }
2318
2319  .call-to-action__text h6 {
2320    font-size: var(--font-size-7);
2321  }
2322}
2323
2324@media only screen and (max-width: 564px) {
2325  #CallToActionBlock .call-to-action__text h2 {
2326    font-size: var(--font-size-9);
2327  }
2328
2329  .call-to-action__text h6 {
2330    width: 100% !important;
2331    font-size: var(--font-size-6);
2332  }
2333}</style><div class="d-flex justify-content-between align-items-center">
2334
2335	<div class="call-to-action__text">
2336		<h2 class="text-uppercase">Have <br />
2337			<span>an</span> idea?</h2>
2338		<h6 class="w-75">Our team will help you bring it to life</h6>
2339		<button class="border-0 font-weight-bold text-light text-uppercase" 
2340		onclick="Modal.open('/api/QuoteRequest', {width: '750px', height: '100%', roundCorners: true, noCloseOnOverlay: true, title: 'Quote request'})">Share it</button>
2341	</div>
2342
2343</div></section><footer id="obj4c55184224b742d48ae3eee6a545f278" class="noisy-bg"><style>#obj4c55184224b742d48ae3eee6a545f278 {
2344  min-height: 416px;
2345  padding-top: 88px;
2346  padding-bottom: 33px;
2347}
2348
2349@media only screen and (max-width: 320px) {
2350  #obj4c55184224b742d48ae3eee6a545f278 {
2351    min-height: 416px;
2352    padding-top: 32px;
2353  }
2354}
2355
2356#obj4c55184224b742d48ae3eee6a545f278 h3 {
2357  margin-bottom: 88px;
2358}
2359
2360@media only screen and (max-width: 512px) {
2361  #obj4c55184224b742d48ae3eee6a545f278 h3 {
2362    margin-bottom: 33px;
2363  }
2364}
2365
2366#obj4c55184224b742d48ae3eee6a545f278 h3 a {
2367  font-size: var(--font-size-7);
2368  color: var(--devhouse-green);
2369}
2370
2371@media only screen and (max-width: 1280px) {
2372  #obj4c55184224b742d48ae3eee6a545f278 h3 a {
2373    font-size: var(--font-size-7);
2374  }
2375}
2376
2377@media only screen and (max-width: 512px) {
2378  #obj4c55184224b742d48ae3eee6a545f278 h3 a {
2379    font-size: var(--font-size-5);
2380  }
2381}
2382
2383.footer__locations {
2384  font-size: var(--font-size-5);
2385  margin-bottom: 53px;
2386}
2387
2388@media only screen and (max-width: 512px) {
2389  #obj4c55184224b742d48ae3eee6a545f278 .footer__locations {
2390    flex-direction: column;
2391    margin-bottom: 49px;
2392  }
2393}
2394
2395.footer__links {
2396  font-size: var(--font-size-1);
2397  margin-bottom: 68px;
2398}
2399
2400@media only screen and (max-width: 512px) {
2401  #obj4c55184224b742d48ae3eee6a545f278 .footer__links {
2402    column-count: 2;
2403    -webkit-column-count: 2;
2404    -moz-column-count: 2;
2405    column-gap: 10px;
2406    -webkit-column-gap: 10px;
2407    -moz-column-gap: 10px;
2408  }
2409
2410  #obj4c55184224b742d48ae3eee6a545f278 .footer__links li {
2411    display: list-item !important;
2412    margin-bottom: 16px;
2413    font-size: var(--font-size-1);
2414  }
2415}
2416
2417.footer__socialMedia {
2418  margin-bottom: 68px;
2419}
2420
2421#obj4c55184224b742d48ae3eee6a545f278 img {
2422  width: 24px;
2423}
2424
2425.footer__copyright {
2426  font-size: var(--font-size-2);
2427}</style><div class="spacing">
2428	<h3><a class="text-decoration-none" href="mailto:[email protected]">[email protected]</a></h3>
2429	<div class="footer__locations text-light d-flex">
2430		
2431		<p class="mr-5 mb-0">Remote/Distributed</p>
2432		
2433		<p class="mr-5 mb-0">Oslo, Norway</p>
2434		
2435		<p class="mr-5 mb-0">Istanbul, Turkey</p>
2436		
2437	</div>
2438	<ul class="footer__links mb-5">
2439		
2440		<li class="d-inline"><a class="text-light font-weight-light text-decoration-none mr-3 mb-3" href="/about">About Us</a></li>
2441		
2442		<li class="d-inline"><a class="text-light font-weight-light text-decoration-none mr-3 mb-3" href="/works">Works</a></li>
2443		
2444		<li class="d-inline"><a class="text-light font-weight-light text-decoration-none mr-3 mb-3" href="/contacts">Contacts</a></li>
2445		
2446		<li class="d-inline"><a class="text-light font-weight-light text-decoration-none mr-3 mb-3" href="/blog">Blog</a></li>
2447		
2448		<li class="d-inline"><a class="text-light font-weight-light text-decoration-none mr-3 mb-3" href="/blogpost/our-handbook">Handbook</a></li>
2449		
2450	</ul>
2451	<ul class="footer__socialMedia mb-5">
2452		
2453		<li class="d-inline"><a class="mr-3 mb-5" href="https://www.instagram.com/devhouse_/"><img class="h-auto" src="https://mars-images.imgix.net/instagram.png 80x80?auto=compress&w=80&q=100&auto=format,enhance" alt="social media icon"/></a></li>
2454		
2455		<li class="d-inline"><a class="mr-3 mb-5" href="https://www.facebook.com/devhouse.pro"><img class="h-auto" src="https://mars-images.imgix.net/facebook.png 80x80?auto=compress&w=80&q=100&auto=format,enhance" alt="social media icon"/></a></li>
2456		
2457	</ul>
2458	<p class="footer__copyright text-light my-0">&copy; 2026 All rights very well reserved</p>
2459</div></footer></div></div></main><style>.mars-overlay {
2460  position: absolute;
2461  left: 0;
2462  top: 0;
2463  right: 0;
2464  bottom: 0;
2465  width: 100%;
2466  height: 100%;
2467  background: rgba(0,0,0,0);
2468  z-index: 99999;
2469  box-sizing: border-box;
2470  overflow: hidden;
2471  transition: background .25s ease-out;
2472  opacity: 0;
2473  display: none;
2474}
2475
2476.mars-overlay::-webkit-scrollbar {
2477  width: 0px;
2478  background: transparent;
2479}
2480
2481.mars-overlay.open {
2482  background: rgba(0,0,0,.45);
2483  opacity: 1;
2484  display: flex;
2485}
2486
2487.mars-overlay-spinner {
2488  border: .2em solid var(--color-primary);
2489  border-right-color: transparent;
2490}</style><div id="xoverlay" class="justify-content-center align-items-center mars-overlay">
2491	<div class="spinner-border mars-overlay-spinner"></div>
2492</div>
2492<script v-pre type="module">const data = JSON.parse(decodeURIComponent("%7B%22_blockName%22%3A%22Overlay%22%2C%22Id%22%3A%22obj1166f09bc3464c9aab5b7d8b9890e802%22%2C%22children%22%3Anull%7D"));if (!window.Overlay) {
2493  const mars = new MarsBlock('xoverlay', data, {
2494    root: document.getElementById('xoverlay'),
2495    show: function () {
2496      this.root.classList.add('open');
2497    },
2498    hide: function () {
2499      this.root.classList.remove('open');
2500    },
2501  });
2502
2503  window.Overlay = window.Overlay || mars;
2504}</script>
2504<script async type="text/javascript" id="cookieinfo"
2505  deffer
2506  async
2507	src="/mars/proxy?url=https://cdn.marscloud.dev/assets/img/cookies.min.js"
2508	data-message="We use cookies to give you the best experience of our site. Accept by continuing to use the site or clicking 'OK'."
2509	data-cookie="CookieInfoScript"
2510	data-linkmsg="Read more here"
2511	data-moreinfo="/termsandconditions"
2512	data-divlink="#fff"
2513	data-link="var(--devhouse-green)"
2514	data-divlinkbg="var(--devhouse-green)"
2515	data-close-text="OK">
2516</script>
2516<div id="pageLoadSpinner" hidden="true" style=""><div class="loader" style="overflow-x: hidden;margin-bottom: -3px;">
2517	<div class="bar"></div>
2518</div>
2519<style>
2520	#pageLoadSpinner .bar {position: fixed}
2521</style><style>@keyframes loader-animation {
2522  0% { left: -100%; }
2523  49% { left: 100%; }
2524  50% { left: 100%; }
2525  100% { left: -100%; }
2526}
2527
2528#pageLoadSpinner .loader .bar {
2529  top: 0;
2530  left: 0;
2531  height: 3px;
2532  width: 100%;
2533  z-index: 999999;
2534  background-color: red;
2535  animation-name: loader-animation;
2536  animation-duration: 3s;
2537  animation-iteration-count: infinite;
2538  animation-timing-function: ease-in-out;
2539}</style>
2539<script v-pre type="module">const data = JSON.parse(decodeURIComponent("%7B%22_blockName%22%3A%22PageLoader%22%2C%22Id%22%3A%22pageLoadSpinner%22%2C%22position%22%3A%22relative%22%2C%22children%22%3Anull%7D"));window[data.Id].hidden = true;</script>
2539</div></body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.