{"id":150036,"date":"2026-02-28T17:02:30","date_gmt":"2026-02-28T17:02:30","guid":{"rendered":"https:\/\/devsdata.com\/case-studies\/hiking-app-for-outdoor-enthusiasts\/"},"modified":"2026-09-18T08:59:16","modified_gmt":"2026-09-18T08:59:16","slug":"hiking-app-for-outdoor-enthusiasts","status":"publish","type":"case_study","link":"https:\/\/devsdata.com\/he\/case-studies\/hiking-app-for-outdoor-enthusiasts\/","title":{"rendered":"Hiking App Development for Outdoor Enthusiasts"},"content":{"rendered":"<section>\n<h1>Hiking App for Outdoor Enthusiasts<\/h1>\n\n    <style>`\n        .post-info {\n            display: flex;\n            flex-direction: row;\n            font-family: Montserrat;\n            font-style: normal;\n            font-weight: 500;\n            font-size: 16px;\n            line-height: 150%;\n            letter-spacing: 0.02em;\n            color: #6D7082;\n            \/*padding-top:32px;*\/\n        }\n\n        .info-container .post-info {\n            display: flex;\n            flex-direction: column;\n            justify-content: space-between;\n        }\n\n        .post-info-main {\n            width: 100%;\n            display: flex;\n            flex-wrap: wrap;\n            row-gap: 5px;\n            column-gap: 20px;\n            grid-template-rows: repeat(3, auto);\n            grid-template-columns: 60px max-content auto;\n            margin-bottom:12px;\n        }\n\n        .with-reviewer {\n            flex-wrap: wrap;\n            row-gap: 5px;\n        }\n\n        .author-name {\n            margin-bottom:4px;\n            grid-row-start: 2;\n            text-decoration: underline;\n            color:black !important;\n        }\n\n        .rank-math-breadcrumb {\n            margin-top:20px;\n            position: relative;\n            z-index: 1;\n        }\n\n        .rank-math-breadcrumb p {\n            margin: 0;\n            white-space: nowrap; \n            overflow: hidden;\n            text-overflow: ellipsis;\n            gap: 8px;\n            display: flex;\n        }\n\n        .rank-math-breadcrumb a {\n            color: #6d7082;\n        }\n\n        .rank-math-breadcrumb a:hover {\n            text-decoration: underline;\n            color: #0332c9;\n        }\n\n        .author-avatar {\n            display: flex;\n            justify-content: center;\n            margin-right: 15px;\n            width: fit-content;\n            grid-row-start: span 2;\n            grid-row-end: 4;\n        }\n\n        .author-avatar picture {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n        }\n\n        .author-avatar.clicked {\n            transform: scale(1.1);\n        }\n\n        .post-info .author-avatar img {\n            min-width:44px;\n            height: 44px;\n            width: auto;\n            object-fit: cover;\n            aspect-ratio: 1\/1;\n            filter: grayscale(1);\n            border-radius: 100%;\n            position: relative;\n            top: 2px;\n        }\n\n        .post-info .author_socials {\n            display: flex;\n            flex-direction: row;\n            align-items: center;\n            grid-row-start: 3;\n            grid-column: span 2;\n            gap: 15px;\n            list-style-type: none;\n            padding: 0;\n            margin: 0;\n        }\n\n        .post-info .author_socials li a {\n            display: flex;\n            align-item: center;\n            text-decoration: none;\n        }\n\n        .author_socials a svg {\n            width: 16px;\n            height: 16px;\n            transition: 0.3s;\n            color: #000;\n        }\n      \n        .author_socials li:hover svg {\n            color: #0332c9;\n        }\n\n        .right-info a {\n            width: fit-content;\n            color: unset;\n        }\n\n        .right-info a:hover {\n            text-decoration: underline;\n        }\n\n        .post-info .clock {\n            position: relative;\n            padding-right: 5px;\n            top: 2px;\n        }\n\n        .post-info .arrow {\n            position: relative;\n            margin-left: 10px;\n            margin-right: 10px;\n            transition: .2s;\n            height: 6px;\n            bottom: 1px;\n        }\n        .post-info .post-info-separator {\n            padding-right: 3px;\n            padding-left: 3px;\n        }\n\n        .reviewer-info {\n            display: flex;\n            flex-direction:column;\n            justify-content: center;\n            align-items: flex-start;\n            grid-row-start: 2;\n            align-self: start;\n            justify-self: end;\n            font-family: \"Montserrat\", arial;\n            color: #000;\n        }\n\n        .reviewer-info.the_first_row {\n            justify-self: start;\n            grid-row-start: 1;\n            grid-column: span 3;\n        }\n\n        .meta-checkmark {\n            width: 20px;\n            height: auto;\n        }\n\n        .reviewer-info a {\n            margin-left: 0;\n            color: #000;\n            text-decoration: underline;\n        }\n        .reviewer-info a:hover {\n            color: #0332c9;\n        }\n        .reviewer-info a:visited {\n            color: #551a8b;\n        }\n        .reviewer-info a:active {\n            color: #0332c9;\n        }\n        .language-dropdown-container {\n            display: inline-block;\n            width: 200px;\n        }\n\n        .language_switcher {\n            display: inline-flex;\n            align-items: center;\n            flex-direction: row;\n            gap: 5px;\n            vertical-align: middle;\n        }\n        \n        .language_switcher .wpml-ls-legacy-dropdown {\n            width: auto;\n            position: relative;\n            vertical-align: middle;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown ul {\n            list-style: none;\n            padding: 0;\n            margin: 0;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language {\n            position: relative;\n            margin-bottom:0;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language > a {\n            padding-left:16px !important;\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            width: 100%;\n            box-sizing: border-box;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu {\n            display: none;\n            position: absolute;\n            z-index: 10;\n            top: 100%;\n            left: 0;\n            width: 100%;\n            margin: 0;\n            background-color: rgb(238, 238, 238);\n            border-radius: 0 0 8px 8px;\n            overflow: hidden;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu li {\n            display: block;\n            width: 100%;\n            margin-bottom:0;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu li:hover {\n            background-color:rgba(204, 204, 211) !important\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-sub-menu a {\n            display: block;\n            width: 100%;\n            padding: 8px 15px 8px 16px;\n            margin-left: 0;\n            box-sizing: border-box;\n            white-space: nowrap;\n            text-align: left;\n        }\n\n        @media (hover: hover) {\n            .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language:hover > .wpml-ls-sub-menu {\n                display: block;\n            }\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language.wpml-dropdown-open > .wpml-ls-sub-menu {\n            display: block;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language.wpml-dropdown-open > a.wpml-ls-item-toggle:after {\n            transform: scale(.7) rotate(180deg);\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown .wpml-ls-current-language.wpml-dropdown-open > .wpml-ls-item-toggle {\n            border-radius: 8px 8px 0 0;\n            background-color: rgba(204, 204, 211);\n        }\n\n        .wpml-ls-legacy-dropdown a:focus {\n            background-color: #FFFFFF;\n        }\n\n        .language_switcher .wpml-ls-legacy-dropdown a:visited {\n            color: #000000 !important;\n        }\n\n        .wpml-ls-legacy-dropdown a.wpml-ls-item-toggle:after {\n            content: \"\";\n            display: inline-block;\n            transform: scale(.7);\n            height: 20px;\n            width: 20px;\n            background: url(\"\/wp-content\/uploads\/2020\/07\/Vector.png\");\n            margin-left: 5px;\n            background-repeat: no-repeat;\n            background-position: center center;\n            background-size: 10px;\n            border: none;\n            position: unset;\n            background-color: #eee;\n            border-radius: 50%;\n            padding: 10px;\n            transition: transform 0.2s ease-in-out;\n            vertical-align: middle;\n            flex-shrink: 0;\n        }\n\n        .language_switcher a {\n            border: none;\n            padding: 10px 15px;\n        }\n\n        .wpml-ls-legacy-dropdown a.wpml-ls-item-toggle {\n            padding: 0 5px 0 2px !important;\n        }\n\n        @media (hover: hover) {\n            .wpml-ls-sub-menu a.wpml-ls-link:hover,\n            .language_switcher .wpml-ls-legacy-dropdown a.wpml-ls-item-toggle:hover {\n                background-color: rgba(204, 204, 211);\n                color: #000000 !important;\n                text-decoration: none;\n            }\n        }\n\n        .wpml-ls-sub-menu {\n            border: none !important;\n            background-color: transparent;\n        }\n\n        .wpml-ls-sub-menu a {\n            background-color: #FFFFFF;\n        }\n\n        .wpml-ls-current-language .wpml-ls-item-toggle {\n            border-radius: 8px;\n        }\n\n        @media (hover: hover) {\n            .wpml-ls-current-language:hover .wpml-ls-sub-menu a {\n                background-color: rgb(238, 238, 238) !important;\n            }\n\n            .wpml-ls-current-language .wpml-ls-sub-menu a:hover,\n            a.wpml-ls-item-toggle:hover:after {\n                background-color: rgba(204, 204, 211) !important;\n            }\n\n            .wpml-ls-current-language:hover a.wpml-ls-item-toggle:after {\n                transform: scale(.7) rotate(180deg);\n            }\n\n            .wpml-ls-current-language:hover .language_switcher .wpml-ls-legacy-dropdown a {\n                background-color: rgba(109, 112, 130, 0.1);\n            }\n\n            .wpml-ls-current-language:hover .wpml-ls-item-toggle{\n                border-radius: 8px 8px 0 0;\n            }\n\n            .wpml-ls-current-language:hover .wpml-ls-item:last-child .wpml-ls-link{\n                border-radius: 0 0 8px 8px;\n            }\n        }\n\n        .wpml-ls-current-language.wpml-dropdown-open .wpml-ls-sub-menu a {\n            background-color: rgb(238, 238, 238) !important;\n        }\n\n        .wpml-ls-current-language.wpml-dropdown-open .wpml-ls-item:last-child .wpml-ls-link{\n            border-radius: 0 0 8px 8px;\n        }\n\n        ul.language-list {\n            \/*min-height: 71px;*\/\n            margin: 0;\n            overflow: hidden;\n            position: absolute;\n            display: inline-block;\n            list-style: none;\n            vertical-align: top;\n            background-color: #FFFFFF;\n            padding: 0;\n            z-index: 2;\n        }\n\n        ul.language-list.mobile {\n            border-radius: 10px;\n            border: 1px solid rgba(109, 112, 130, 0.1);\n            margin-left: 10px;\n        }\n\n        .language-list.mobile li:hover {\n            background-color: rgba(109, 112, 130, 0.1)\n        }\n\n        .language-list.mobile li:hover a {\n            color: #000000;\n        }\n\n        .dropdown-arrow {\n            display: inline-block;\n            border-radius: 50%;\n            height: 30px;\n            width: 30px;\n        }\n\n        .dropdown-arrow {\n            background-color: rgba(109, 112, 130, 0.1);\n        }\n\n        .dropdown-arrow:hover {\n            background-color: rgba(109, 112, 130, 0.3);\n        }\n\n        .dropdown-arrow.mobile,\n        .dropdown-arrow.mobile:hover {\n            background-color: unset;\n        }\n\n        .language-list li {\n            padding-left: 10px;\n            cursor: pointer;\n            display: none;\n        }\n\n        .language-list li a {\n            color: #6D7082;\n            text-decoration: none;\n        }\n\n        .language-list li:first-child {\n            display: block;\n        }\n\n        .active li {\n            display: block;\n        }\n\n        .rotated {\n            transform: rotate(180deg);\n            bottom: 2px !important;\n        }\n        .bookmark {\n            align-self: center;\n            cursor:pointer;\n            display:none;\n        }\n        \n        .article h1 + p,\n        .article h1 + p + p {\n            margin: 0;\n            margin-bottom: 0 !important;\n        }\n\n        .info-container{\n            \/*min-height:150px;*\/\n            direction: ltr;\n            display: flex;\n            flex-direction: column;\n            justify-content: space-between;\n            padding-top: 20px;\n        }\n        .tags{\n            font-family: \"Montserrat\", sans-serif;\n            display: flex;\n            flex-direction: row;\n            justify-content: flex-start;\n            flex-wrap: wrap;\n            width: 100%;\n            overflow: hidden;\n            font-size: 14px;\n            border-radius: unset;\n            margin-bottom:20px;\n        }\n        .tags a {\n            font-style: normal;\n            line-height: 1.75em;\n            border: 0.5px solid #e2e5e9;\n            margin-right: 7px;\n            margin-top: 7px;\n            transition: 0.2s;\n            transition-property: background;\n            border-radius: 5px;\n            padding: 0.2em 0.8em;\n            color: black;\n        }\n        .tags a:hover {\n            background-color: #c1c7d0;\n        }\n\n        .tags a:visited {\n            color: #000;\n        }\n        .tags a:active {\n            color: #000;\n        }\n        .default-a:focus {\n            background-color: unset;\n        }\n\n        .default-a:hover{\n            text-decoration: underline;\n        }\n        .separator {\n        color:black !important;\n        font-weight:600;\n        }\n        .last {\n        color:black !important;\n        font-weight:600;\n        }\n        @media screen and (max-width:1034px) {\n        .author_links {\n        margin-right:auto;\n        }\n        .reviewer-info {\n        width: 100%;\n        }\n        }\n        @media screen and (max-width:767px) {\n        .language_switcher {\n        display: flex;\n        margin-top: 5px;\n        }\n        }\n        @media screen and (max-width:490px) {\n        .review-lowres {\n        display:flex !important;\n        }\n        .review-highres {\n        display:none !important;\n        }\n        .author_links {\n        margin-right:36px !important;\n        } \n        }\n    <\/style>\n    <div><nav aria-label=\"breadcrumbs\" class=\"rank-math-breadcrumb\"><p><span class=\"last\">Home<\/span><\/p><\/nav><\/div>\n    \n    <div class=\"info-container\">\n    <div class=\"post-info with-reviewer\">\n        <div class=\"post-info-main\">\n            <div class=\"author-avatar\">\n                <picture>\n                        <source\n                            srcset=\"https:\/\/devsdata.com\/wp-content\/uploads\/2024\/12\/elen-muradian-min.webp\" type=\"image\/webp\"> \n                        <source \n                            srcset=\"https:\/\/devsdata.com\/wp-content\/uploads\/2024\/12\/elen-muradian-min.jpg\" type=\"image\/jpeg\">\n                        <img decoding=\"async\" \n                            class=\"avatar lazyload\"\n                            width=\"64\" \n                            height=\"64\"\n                            src=\"https:\/\/devsdata.com\/wp-content\/uploads\/2024\/12\/elen-muradian-min.jpg\"\n                            alt=\"avatar\"\n                            loading=\"lazy\"\n                            title=\"Elen Muradian\"\n                        >\n                <\/picture>\n            <\/div>\n            <div style=\"display:flex; flex-direction:column;margin-right:auto;\" class=\"author_links\">\n            <a href=\"\/author\/elen-muradian\/\" class=\"author-name\">Elen Muradian<\/a>\n            <ul class=\"author_socials\">\n            <li>\n                <a href=\"https:\/\/www.linkedin.com\/in\/elene-muradian-a57559244\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" aria-label=\"Elen Muradian on Linkedin\">\n                    <svg version=\"1.0\" fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\" aria-hidden=\"true\">\n                            <g id=\"linkedin5_layer\">\n                                <path d=\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\" data-hs-event-238572417=\"1\"><\/path>\n                            <\/g>\n                        <\/svg>\n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"https:\/\/twitter.com\/elenmrdian?s=21&#038;t=AwFIbg9ghHf56q6Z6iQ9NQ\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" aria-label=\"Elen Muradian on Twitter\">\n                    <svg viewBox=\"0 0 512 512\" class=\"scriptlesssocialsharing__icon twitter\" fill=\"currentColor\" height=\"1em\" width=\"1em\" aria-hidden=\"true\" focusable=\"false\" role=\"img\">\n                            <path d=\"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\"><\/path>\n                        <\/svg>\n                <\/a>\n            <\/li><\/ul>\n            <\/div>\n            <div class=\"reviewer-info\"> \n                                                                            <span style=\"color:#6D7082;\" class=\"\">\n                Last updated on \n                28 \u05d1\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8 2026 \n                <span class=\"post-info-separator\">| <\/span> \n                12 min read\n                \n            <\/span>\n                            <\/div>\n        \n        <\/div>\n    <\/div>\n    <div class=\"bookmark\">\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2020\/08\/bookmark-add-2-1.svg\" alt=\"bookmark\" title=\"\">\n    <\/div>\n    <div class=\"tags\"><\/div>\n    <\/div>\n    <script type=\"module\" defer>\n      document.addEventListener(\"DOMContentLoaded\", function () {\n    \/\/ Get the current path from the URL\n    const path = window.location.pathname;\n\n    \/\/ Check if it starts with \/case-studies\n        if (path.startsWith(\"\/case-studies\")) {\n        const tagsElement = document.querySelector(\".tags\");\n        if (tagsElement) {\n        tagsElement.style.marginBottom = \"0\";\n        }\n        }\n        });\n        Array.from(document.getElementsByClassName(\"separator\")).forEach(el => {\n            el.textContent = \" > \";\n        });\n\n            var wpmlToggle = document.querySelector(\".language_switcher .wpml-ls-item-toggle\");\n            if (wpmlToggle) {\n                wpmlToggle.addEventListener(\"click\", function(e) {\n                    e.preventDefault();\n                    e.stopPropagation();\n                    var currentLang = this.closest(\".wpml-ls-current-language\");\n                    if (currentLang) {\n                        currentLang.classList.toggle(\"wpml-dropdown-open\");\n                    }\n                });\n                document.addEventListener(\"click\", function(e) {\n                    var openDropdown = document.querySelector(\".wpml-ls-current-language.wpml-dropdown-open\");\n                    if (openDropdown && !openDropdown.contains(e.target)) {\n                        openDropdown.classList.remove(\"wpml-dropdown-open\");\n                    }\n                });\n            }\n\n            var languageList = document.querySelector(\"#language-list\");\n            var dropdownArrow = document.querySelector(\".dropdown-arrow\");\n\n            if(languageList){\n                languageList.addEventListener(\"click\", () => {\n                    languageList.classList.toggle(\"active\");\n                    document.querySelector(\"#arrow\").classList.toggle(\"rotated\");\n                })\n            }\n                \n            function handleViewportChange() {\n                if(languageList) {\n                    if (window.innerWidth < 1280) {\n                        if(!languageList.classList.contains(\"mobile\")) {\n                            languageList.classList.add(\"mobile\");\n                            dropdownArrow.classList.add(\"mobile\");\n                        }\n                    } else {\n                        if(languageList.classList.contains(\"mobile\")) {\n                            languageList.classList.remove(\"mobile\");\n                            dropdownArrow.classList.remove(\"mobile\");\n                        }\n                    }\n                };\n            };\n\n            \/\/ If there is a small\/no space between reviewer and author name, reviewer moves to the first row\n            function update_post_info_layout() {\n                const author_name_element = document.querySelector(\".author-name\");\n                const reviewer_element = document.querySelector(\".reviewer-info\");\n                const post_info_container = document.querySelector(\".post-info\");\n\n                if(reviewer_element) {\n                    let distance_next_to_author, reviewer_fits_next_to_author; \n                    if(post_info_container && author_name_element) {\n                        distance_next_to_author = post_info_container.getBoundingClientRect().right - author_name_element.getBoundingClientRect().right;\n                        reviewer_fits_next_to_author = distance_next_to_author - reviewer_element.clientWidth >= 15;\n                    }\n\n                    if(!reviewer_fits_next_to_author) {\n                        reviewer_element.classList.add(\"the_first_row\");\n                    } else if (reviewer_fits_next_to_author && reviewer_element.classList.contains(\"the_first_row\")) {\n                        reviewer_element.classList.remove(\"the_first_row\");\n                    }\n                }\n            }\n\n            handleViewportChange();\n            update_post_info_layout();\n             \n            window.addEventListener(\"resize\", () => {\n                handleViewportChange();\n                update_post_info_layout();\n            });\n    <\/script>\n<p><span class=\"img-container\">\n<picture><source srcset=\"\/wp-content\/uploads\/2024\/07\/hiking_app.webp\" type=\"image\/webp\"><\/source><source srcset=\"\/wp-content\/uploads\/2024\/07\/hiking_app.png\"><\/source><img loading=\"lazy\" decoding=\"async\" class=\"lazyload\" src=\"\/wp-content\/uploads\/2024\/07\/hiking_app.png\" width=\"640\" height=\"408\" alt=\"case study image\" title=\"\"><\/picture>\n<\/span><\/p>\n<div class=\"download-button-container\"><a class=\"case-study-download-button\" href=\"\/wp-content\/themes\/intentionally-blank\/assets\/case_studies\/travel_app\/travel_app.pdf\" target=\"_blank\" rel=\"noopener\">Download as PDF<\/a><\/div>\n<\/section>\n<section>\n<ul>\n<li>Outdoor explorers in Norway needed a single app to navigate trails and discover nearby attractions.<\/li>\n<li>This case study outlines the app\u2019s purpose, the community-driven attractions database, and the functionality behind its strong user ratings.<\/li>\n<\/ul>\n<h2>Introduction<\/h2>\n<p>DevsData LLC partnered with a Norway-based startup to build a mobile navigation app tailored for hikers, cyclists, and outdoor enthusiasts exploring the country\u2019s landscapes. Over a five-month collaboration, we developed the MVP and first production version entirely from scratch using a modern cross-platform mobile tech stack. The result was a highly rated community-driven platform downloaded by more than <span class=\"formatted-number\">13000<\/span> users within the first six months after launch.<\/p>\n<p>\n        <span class=\"img-container\">\n            <picture class=\"open-picture\" style=\"filter: grayscale(0)\">\n                <source srcset=\"\/wp-content\/uploads\/2026\/09\/hiking3ups.jpg\" type=\"image\/jpg\">\n                <img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/hiking3ups.jpg\" width=\"640\" height=\"357\" alt=\" image\" title=\"\">\n            <\/picture>\n        <\/span>\n    <br \/>\n<\/section>\n<section>\n<h2>Client profile<\/h2>\n<p>The client was a Norway-based outdoor-technology startup established in 2021, founded by a small team of engineers and entrepreneurs with backgrounds in geospatial data, mobile product design, and tourism services. The company set out to modernize how outdoor information is accessed and shared across Scandinavia, aiming to bring more structure, accuracy, and accessibility to a fragmented ecosystem of trail datasets, local guides, and regional tourism resources. Typical use cases included identifying safe routes during changing weather, discovering lesser-known trails, or coordinating equipment rentals and guided tours in one place.<\/p>\n<p>Operating with a lean team and a product-first mindset, the startup built early momentum by partnering with local outdoor associations, regional tourism boards, and equipment rental providers. This gave the company access to valuable datasets and helped validate the demand for digital tools that could support Norway\u2019s highly active hiking and adventure-travel community. The founders positioned the company as a technological bridge between outdoor service providers, local businesses, and a growing community of nature enthusiasts.<\/p>\n<p>After securing initial traction and investor interest, the company was later acquired and merged into a larger Scandinavian outdoor-services group, with the transaction details covered under an NDA. The application stack centered on a React Native client speaking to Firestore for live data, Stripe for payment flows, and weather feeds sourced from MET Norway. Through the acquisition, that infrastructure and the know-how behind it have been folded into a larger digital push around regional tourism and outdoor safety.<\/p>\n<h3>Highlights:<\/h3>\n<ul>\n<li>Norway-based outdoor-technology startup founded in 2021.<\/li>\n<li>Lean product-oriented team with partnerships across the Scandinavian outdoor ecosystem.<\/li>\n<li>Successfully acquired by a larger industry player (details under NDA).<\/li>\n<\/ul>\n<\/section>\n<section>\n<h2>Challenge<\/h2>\n<p>Building a mobile product for hikers in Norway presented a unique mix of technical, geographical, and operational complexities, with data sitting at the heart of the difficulty. The founders wanted to create a reliable tool for outdoor navigation in a country where terrain varies dramatically. Coastal trails, dense forests, and high-altitude mountain routes each demand different mapping data, elevation models, and routing logic to ensure accuracy and safety. Compounding this, connectivity fluctuates or disappears entirely across remote regions, which meant the platform had to combine accurate live map data with reliable offline availability and a fluid experience under inconsistent network coverage.<\/p>\n<p>The community-driven model layered a second set of data challenges onto the build. The startup envisioned a platform where users could add new trails, review locations, form groups, and exchange messages. Those features depend on a robust backend, scalable infrastructure, and secure data synchronization across thousands of devices. Maintaining map accuracy while ingesting user contributions raised harder questions still: how to validate incoming geometry against existing datasets, how to deduplicate points of interest at scale, how to moderate condition reports without slowing the contribution loop, and how to render dynamic data on the map without degrading performance.<\/p>\n<p>Commercial readiness completed the picture. The client needed a solution that would operate as a paying product from day one, which meant integrating geolocation-aware ads, enabling in-app purchases, supporting real-time chat, and preparing for rapid growth despite the early-stage nature of the company. With a limited internal engineering team and an aggressive timeline for releasing the MVP, the startup required an external partner capable of owning full-cycle development, handling both technical and product-level decisions, and delivering a market-ready app that could scale to thousands of users.<\/p>\n<p class=\"quote\">The client needed a navigation platform that worked reliably in remote Norwegian terrain while supporting real-time community input and commercial scalability.<\/p>\n<\/section>\n<section>\n<h2>Our approach<\/h2>\n<p>To bring the client\u2019s vision to life, we adopted a full-cycle, collaborative approach that covered business analysis, technical planning, and rapid iterative development. Since the startup needed a complete MVP built from scratch, we opened the engagement with a structured discovery phase. Stakeholder interviews with the founders captured business requirements ranging from commercial drivers and partnership commitments to acquisition-readiness expectations. Requirement-gathering sessions then translated those inputs into a prioritized scope document, a feature backlog, and a roadmap for the first production release.<\/p>\n<p>Drawing on prior experience building complex mobile ecosystems, including a Silicon Valley marketplace <a href=\"https:\/\/devsdata.com\/case-studies\/cleaning-service-app-for-ride-sharing-vehicle\/\" target=\"_blank\">app for ride-share drivers<\/a>, we understood how to combine geolocation, in-app payments, user authentication, and real-time communication into a cohesive experience. This background helped us design a modular architecture where maps, content, chat, and authentication could evolve independently without compromising performance.<\/p>\n<p>A core part of our approach was structuring the product for long-term stability and flexibility. We focused on:<\/p>\n<ul>\n<li>Data structure and content modeling for trails, POIs, and user-generated updates.<\/li>\n<li>Navigation workflows suited to Norway\u2019s varied terrain, including offline-first logic.<\/li>\n<li>Community features, including chat, comments, and group creation.<\/li>\n<li>Integration planning, covering weather data, monetization, and geolocation-based ads.<\/li>\n<\/ul>\n<p>Finally, we emphasized transparency and alignment with the founders. Each milestone was delivered as an incremental build, enabling real-device testing, early validation of assumptions, and continuous refinement before full-scale implementation.<br \/>\n<\/section>\n<section>\n<h2>Execution and delivery<\/h2>\n<p>To execute the project efficiently and meet the client\u2019s ambitious timeline, DevsData LLC assembled a compact, cross-functional team of four specialists. A dedicated project manager oversaw communication, sprint planning, and expectation alignment with the founders. A senior React Native engineer focused on mobile development and performance architecture, while a backend\/cloud engineer handled data storage, real-time synchronization, authentication, and infrastructure decisions. A UX\/UI designer completed the team, shaping user flows suited for fast decisions outdoors and ensuring a cohesive visual experience across maps, groups, and trip-planning features.<\/p>\n\n        <span class=\"img-container\">\n            <picture class=\"open-picture\" style=\"filter: grayscale(0)\">\n                <source srcset=\"\/wp-content\/uploads\/2026\/09\/hiking1.webp\" type=\"image\/webp\">\n                <source srcset=\"\/wp-content\/uploads\/2026\/09\/hiking1.jpg\" type=\"image\/jpg\">\n                <img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/hiking1.webp\" width=\"640\" height=\"357\" alt=\" image\" title=\"\">\n            <\/picture>\n        <\/span>\n    \n<p>From day one, the collaboration was structured around clear deliverables and continuous feedback loops. Weekly milestone reviews allowed the client to test features directly on their devices, validate UX early, and make product decisions based on real usage rather than assumptions. Because the client needed an MVP that was both technically sound and commercially viable, we prioritized core functionality: navigation, weather data, community contributions, and geolocation-driven recommendations, while designing the codebase to support future growth and investor scrutiny.<\/p>\n<p>We also managed product considerations beyond pure development: preparing the app for app-store submissions, optimizing the onboarding flow against feedback from hikers who tested early builds in real outdoor conditions, and ensuring that integrations such as chat, payments, and weather alerts fit seamlessly into the overall experience. Consistent documentation and transparent planning helped the founders maintain strategic clarity throughout the entire five-month development cycle.<\/p>\n<h3>Tech stack overview<\/h3>\n<p>Below is the technology stack that powered the MVP and first production release, structured to support real-time data, outdoor navigation, social interaction, and monetization.<\/p>\n<div class=\"table-container\">\n<table style=\"width:100%\">\n<thead>\n<tr>\n<th>Area<\/th>\n<th>Technologies used<\/th>\n<th>Purpose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><b>Mobile Development<\/b><\/td>\n<td>React Native, TypeScript<\/td>\n<td>Cross-platform app development with a scalable, maintainable codebase<\/td>\n<\/tr>\n<tr>\n<td><b>State and Logic Management<\/b><\/td>\n<td>Redux, Redux-Saga<\/td>\n<td>Predictable state flow, improved reliability, easier debugging<\/td>\n<\/tr>\n<tr>\n<td><b>Backend and Infrastructure<\/b><\/td>\n<td>Firebase, Firestore, Firebase Auth<\/td>\n<td>Real-time data sync, cloud storage, user authentication<\/td>\n<\/tr>\n<tr>\n<td><b>Maps and Navigation<\/b><\/td>\n<td>Mapbox, OpenStreetMap<\/td>\n<td>High-quality vector maps, customizable navigation layers<\/td>\n<\/tr>\n<tr>\n<td><b>Communication<\/b><\/td>\n<td>SendBird<\/td>\n<td>Real-time chat, group messaging, trip-planning coordination<\/td>\n<\/tr>\n<tr>\n<td><b>Payments and Monetization<\/b><\/td>\n<td>Stripe<\/td>\n<td>In-app purchases, paid listings, and advertising payments<\/td>\n<\/tr>\n<tr>\n<td><b>Weather and Alerts<\/b><\/td>\n<td>MET Norway API<\/td>\n<td>Real-time meteorological warnings and forecasts<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>The stack above did not emerge from a checklist. DevsData LLC advised the founders on each major component, presenting trade-off analyses for the mobile framework, the backend platform, and the mapping provider, then guiding the final selection in light of Norwegian terrain rendering, future hiring plans, and commercial timelines. Our advisory remit extended to code-quality standards, CI configuration, and pre-sale technical due diligence, which is how the combination of technologies sustained a high-performance mobile experience while keeping the system flexible enough for the startup\u2019s rapid iteration cycle and future acquisition.<br \/>\n<\/section>\n<section>\n<h2>Outcome<\/h2>\n<p>The finished application established itself as a dependable companion for outdoor enthusiasts across Norway. Its smooth performance, clear interface, and dependable map layer made route discovery and trip planning noticeably easier for users exploring both familiar and remote locations. Real-time weather updates and offline functionality contributed to safer and more confident decision-making during outdoor activities.<\/p>\n<p>Community features evolved into a core strength of the platform. User contributions steadily enriched the database with new trails, viewpoints, and local insights, creating a living network of shared knowledge. Within the first year, users added over <span class=\"formatted-number\">4000<\/span> trail segments, <span class=\"formatted-number\">1200<\/span> points of interest, and tens of thousands of micro-updates such as condition reports and photos, demonstrating both the scalability of the data model and the community\u2019s sustained engagement. Group coordination tools and built-in messaging fostered collaboration among hikers, cyclists, and climbers, helping the app gain a loyal, active user base.<\/p>\n<p>On the business side, the platform demonstrated strong viability early on. Local businesses benefited from geolocation-based exposure, while paid placements introduced a predictable revenue stream. Behind those results stood the full scope of services DevsData LLC delivered: business analysis and stakeholder requirement gathering at the discovery stage, UX research and interface design, mobile development in React Native, backend and cloud engineering on Firebase, third-party integration for chat and payments, app-store release handling, and post-launch advisory through the acquisition process. That breadth of delivery, paired with steady user growth and a well-structured technical foundation, strengthened the company\u2019s strategic position and supported its eventual acquisition by a larger Scandinavian outdoor-services provider.<\/p>\n\n        <span class=\"img-container\">\n            <picture class=\"open-picture\" style=\"filter: grayscale(0)\">\n                <source srcset=\"\/wp-content\/uploads\/2026\/09\/hiking2.webp\" type=\"image\/webp\">\n                <source srcset=\"\/wp-content\/uploads\/2026\/09\/hiking2.jpg\" type=\"image\/jpg\">\n                <img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/09\/hiking2.webp\" width=\"640\" height=\"357\" alt=\" image\" title=\"\">\n            <\/picture>\n        <\/span>\n    \n<h3>Highlights<\/h3>\n<ul>\n<li>Steady user adoption supported by intuitive navigation and reliable offline functionality.<\/li>\n<li>Growing community participation fueled a continuously expanding, high-quality content base.<\/li>\n<li>Commercial features and robust technical stability contributed to the startup\u2019s successful acquisition.<\/li>\n<\/ul>\n<\/section>\n<section>\n<h2>What\u2019s next<\/h2>\n<p>Following the acquisition, the product is being expanded within the parent company\u2019s broader ecosystem of outdoor and travel services. The next development phase focuses on strengthening long-distance route planning, improving offline map capabilities, and refining tools that help users navigate remote terrain more confidently. There are also plans to introduce advanced personalization features, allowing recommendations to adapt to each user\u2019s activity style, skill level, and preferred regions.<\/p>\n<p>From an operational standpoint, the consolidated team is exploring deeper integrations with the buyer\u2019s existing digital products. This includes linking user accounts across platforms, unifying loyalty or membership benefits, and connecting the app to a wider inventory of regional services offered by the parent company. Additional development will continue under NDA, but the roadmap emphasizes expanded coverage, richer environmental data, and new collaboration tools aimed at enhancing group travel and outdoor community building at scale.<\/p>\n<p>As the platform evolves, the technical foundation built during the MVP phase ensures that new modules can be added without disrupting performance, positioning the product for sustainable, long-term growth in the Nordic outdoor-tech landscape.<\/p>\n<p>Ready to build your own location-aware, community-driven mobile product? Leverage our experience in developing high-performance navigation apps, real-time communication features, and scalable cloud architectures.<\/p>\n<p>Contact us at <a href=\"mailto:general@devsdata.com\" target=\"_blank\" rel=\"noopener\">general@devsdata.com<\/a> or visit <a href=\"\/\" target=\"_blank\" rel=\"noopener\">www.devsdata.com<\/a> to discuss how we can help bring your concept to life.<br \/>\n<\/section>\n<div class=\"download-button-container\"><a class=\"case-study-download-button\" href=\"\/wp-content\/themes\/intentionally-blank\/assets\/case_studies\/travel_app\/travel_app.pdf\" target=\"_blank\" rel=\"noopener\">Download as PDF<\/a><\/div>\n\n        <section class=\"author_section_container\">\n            \n            <p class=\"contact_on_twitter\">\n                Any questions or comments? Let me know on \n                <a href=\"https:\/\/twitter.com\/elenmrdian\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Twitter\/X<\/a>.\n            <\/p> \n        \n            <div class=\"schedule-consultation\">\n                <div class=\"block-contact\">\n                    <p>Discover how IT recruitment and staffing can address your talent needs. Explore trending regions \n        like Poland, Portugal, Mexico, Brazil and more. <\/p>\n                <\/div>\n                <div class=\"contact-us-show schedule-consultation-button\">\n                    \ud83d\uddd3\ufe0f\n                    <span>Schedule a consultation<\/span>\n                <\/div>\n            <\/div>\n            <div class=\"author_section\">\n                <div class=\"author_photo_container\">\n                    <picture>\n                        <source srcset=\"https:\/\/devsdata.com\/wp-content\/uploads\/2024\/12\/elen-muradian-min.webp\" type=\"image\/webp\"> \n                        <source srcset=\"https:\/\/devsdata.com\/wp-content\/uploads\/2024\/12\/elen-muradian-min.jpg\" type=\"image\/jpeg\">\n                        <img decoding=\"async\" class=\"avatar lazyload\" width=\"64\" height=\"64\" src=\"https:\/\/devsdata.com\/wp-content\/uploads\/2024\/12\/elen-muradian-min.jpg\" alt=\"avatar\" loading=\"lazy\" title=\"Elen Muradian\" >\n                    <\/picture>\n                    <a class=\"read_full_bio\" href=\"\/author\/elen-muradian\/\" aria-label=\"Read more from Elen Muradian\">Read full bio<\/a>\n                <\/div>\n                <div class=\"author_info_container\">\n                    <div class=\"author_info\" data-role=\"Author\">\n                        <h4 id=\"author_title\">\n                            <a href=\"\/author\/elen-muradian\/\" aria-label=\"Read more from Elen Muradian\">Elen Muradian<\/a>\n                            <span class=\"position\">Copywriter and Marketer<\/span>\n                        <\/h4>\n                    <\/div>\n                <\/div>\n                <div class=\"author_about\">\n                    <span>As a versatile and accomplished writer in digital media publishing, Elen is skilled in crafting engaging content across various subjects, styles, and media.\r\nIn her previous experience, Elen worked closely with editorial teams and visual artists to bring content to life. She always seeks opportunities for personal and professional growth and is eager to contribute to the writing field.<\/span>\n                    <div class=\"links\">\n                        <ul class=\"author_socials\">\n            <li>\n                <a href=\"https:\/\/www.linkedin.com\/in\/elene-muradian-a57559244\/\" aria-label=\"Check out Elen Muradian on LinkedIn\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">\n                    <svg version=\"1.0\" fill=\"currentColor\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\" aria-hidden=\"true\">\n                        <g id=\"linkedin5_layer\">\n                            <path d=\"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\" data-hs-event-238572417=\"1\"><\/path>\n                        <\/g>\n                    <\/svg>\n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"https:\/\/twitter.com\/elenmrdian?s=21&#038;t=AwFIbg9ghHf56q6Z6iQ9NQ\" aria-label=\"Check out Elen Muradian on Twitter\" target=\"_blank\" rel=\"nofollow noreferrer noopener\">\n                    <svg viewBox=\"0 0 512 512\" class=\"scriptlesssocialsharing__icon twitter\" fill=\"currentColor\" height=\"1em\" width=\"1em\" aria-hidden=\"true\" focusable=\"false\" role=\"img\">\n                        <path d=\"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z\"><\/path>\n                    <\/svg>\n                <\/a>\n            <\/li>\n            <li>\n                <a href=\"mailto:elene.muradian@devsdata.com\" aria-label=\"Email Elen Muradian\">\n                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M64 112c-8.8 0-16 7.2-16 16v22.1l172.5 141.6c20.7 17 50.4 17 71.1 0L464 150.1V128c0-8.8-7.2-16-16-16zM48 212.2V384c0 8.8 7.2 16 16 16h384c8.8 0 16-7.2 16-16V212.2L322 328.8c-38.4 31.5-93.7 31.5-132 0zM0 128c0-35.3 28.7-64 64-64h384c35.3 0 64 28.7 64 64v256c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64z\"\/><\/svg>\n                <\/a>\n            <\/li><\/ul>\n                        <a class=\"recruitment_link\" href=\"\/recruitment\/\" target=\"_blank\" rel=\"noopener noreferrer\">\n                            Read more about our IT staffing services\n                            <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"https:\/\/www.w3.org\/2000\/svg\">\n                                <path d=\"M5 12H19\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                                <path d=\"M12 5L19 12L12 19\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                            <\/svg>\n                        <\/a>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"tags-author \">\n                \n            <\/div>\n        <\/section>\n    \n","protected":false},"author":39,"featured_media":27560,"template":"","class_list":["post-150036","case_study","type-case_study","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/devsdata.com\/he\/wp-json\/wp\/v2\/case_study\/150036","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devsdata.com\/he\/wp-json\/wp\/v2\/case_study"}],"about":[{"href":"https:\/\/devsdata.com\/he\/wp-json\/wp\/v2\/types\/case_study"}],"author":[{"embeddable":true,"href":"https:\/\/devsdata.com\/he\/wp-json\/wp\/v2\/users\/39"}],"wp:attachment":[{"href":"https:\/\/devsdata.com\/he\/wp-json\/wp\/v2\/media?parent=150036"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}