{"id":196916,"date":"2026-05-15T04:30:58","date_gmt":"2026-05-15T08:30:58","guid":{"rendered":"https:\/\/innowise.com\/?post_type=case&#038;p=196916"},"modified":"2026-05-15T04:31:01","modified_gmt":"2026-05-15T08:31:01","slug":"hosting-and-vps-customer-portal-development","status":"publish","type":"case","link":"https:\/\/innowise.com\/sv\/case\/hosting-and-vps-customer-portal-development\/","title":{"rendered":"Utveckling av Octopus kundportal f\u00f6r Serverplan"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"196916\" class=\"elementor elementor-196916\">\n\t\t\t\t<div class=\"elementor-element elementor-element-969550b e-flex e-con-boxed e-con e-parent\" data-id=\"969550b\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-9408021 e-con-full e-flex e-con e-child\" data-id=\"9408021\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-345a901 elementor-widget elementor-widget-image\" data-id=\"345a901\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"102\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/Log\u043e-for-review.svg\" class=\"attachment-large size-large wp-image-196941\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-25bb822 elementor-widget__width-initial elementor-widget-tablet__width-initial elementor-widget elementor-widget-heading\" data-id=\"25bb822\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Customer portal for managing hosting, VPS, and cloud services<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-699e258 last-child-mb-0 elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"699e258\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Innowise helped Serverplan build a self-service customer portal for managing hosting products, orders, transactions, subscriptions, and account settings via the existing Core API and middleware.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3f27c76 e-con-full e-grid e-con e-child\" data-id=\"3f27c76\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-645087f e-con-full e-flex e-con e-child\" data-id=\"645087f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-956f74c last-child-mb-0 elementor-widget elementor-widget-text-editor\" data-id=\"956f74c\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Unified hub for hosting &amp; account management<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c52ec9d e-con-full e-flex e-con e-child\" data-id=\"c52ec9d\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9cb715e last-child-mb-0 elementor-widget elementor-widget-text-editor\" data-id=\"9cb715e\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Smoother workflows via Core API &amp; middleware integration<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-63615fe elementor-mobile-align-justify elementor-widget-mobile__width-inherit btn-min-320 elementor-widget elementor-widget-button\" data-id=\"63615fe\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#contact-form\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Schedule a consultation<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f891463 e-con-full e-flex e-con e-child\" data-id=\"f891463\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2e39233 elementor-widget elementor-widget-html\" data-id=\"2e39233\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n.hero-info-card {\n    display: flex;\n    flex-direction: column;\n    color: #2e2e2e;\n    background-color: #FFFFFF;\n    width: 400px;\n}\n\n.hero-info-card__content {\n    display: flex;\n    flex-direction: column;\n    row-gap: 20px;\n    padding: 30px;\n    border-width: 0px 1px 1px 1px;\n    border-style: solid;\n    border-color: #999999;\n    \n    flex-grow: 1;\n}\n\n.hero-info-card__content-row {\n    display: grid;\n    grid-template-columns: 102px 1fr;\n    column-gap: 40px;\n}\n\n\nimg.hero-info-card__img {\n    display: flex;\n    object-fit: cover;\n    width: 100%;\n    height: auto;\n}\n\n.hero-info-card__param {\n    font-family: Karla;\n    font-weight: 600;\n    font-size: 16px;\n    line-height: 150%;\n\n    text-transform: uppercase;\n}\n\n.hero-info-card__value {\n    font-family: Karla;\n    font-weight: 400;\n    font-size: 16px;\n    line-height: 150%;\n}\n\n@media screen and (max-width:1279px) {\n    .hero-info-card {\n        display: grid;\n        grid-template-columns: 390px 1fr;\n\n        place-items: stretch;\n\n        width: 100%;\n    }\n    \n    .hero-info-card__content {\n        padding: 30px 175px 30px 30px;\n\n        border-width: 1px 0px 1px 0px;\n    }\n\n}\n\n\n@media screen and (max-width:840px) {\n    .hero-info-card__content {\n        padding: 30px;\n    }\n}\n\n\n@media screen and (max-width:780px) {\n    .hero-info-card {\n        grid-template-columns: 1fr 1fr;\n    }\n}\n\n\n\n\n@media screen and (max-width:767px) {\n    .hero-info-card {\n        display: flex;\n        flex-direction: column;\n\n        width: 100%;\n    }\n    \n    img.hero-info-card__img {\n        max-height: 300px;\n    }\n\n    \n    .hero-info-card__content {\n        padding: 20px 15px;\n\n        row-gap: 15px;\n\n        border-width: 0px 0px 1px 0px;\n    }\n    \n    .hero-info-card__param {\n        font-size: 14px;\n    }\n\n    .hero-info-card__value {\n        font-size: 14px;\n    }\n}\n<\/style>\n\n<div class=\"hero-info-card\">\n    <img decoding=\"async\" class=\"hero-info-card__img\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/serverplan-octopus-customer-account-access.jpg\" alt=\"Customer profile and account authentication in a self-service hosting management portal\" \/>\n    <div class=\"hero-info-card__content\">\n        <div class=\"hero-info-card__content-row\">\n            <span class=\"hero-info-card__param\">Industry<\/span>\n            <span class=\"hero-info-card__value\">Information technology<\/span>\n        <\/div>\n\n        <div class=\"hero-info-card__content-row\">\n            <span class=\"hero-info-card__param\">Employees<\/span>\n            <span class=\"hero-info-card__value\">50+<\/span>\n        <\/div>\n\n        <div class=\"hero-info-card__content-row\">\n            <span class=\"hero-info-card__param\">Region<\/span>\n            <span class=\"hero-info-card__value\">Italy<\/span>\n        <\/div>\n\n        <div class=\"hero-info-card__content-row\">\n            <span class=\"hero-info-card__param\">Services<\/span>\n            <span class=\"hero-info-card__value\">Web development, back-end development, integration<\/span>\n        <\/div>\n        \n        <div class=\"hero-info-card__content-row\">\n            <span class=\"hero-info-card__param\">Client since<\/span>\n            <span class=\"hero-info-card__value\">2024<\/span>\n        <\/div>\n    <\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f111582 article-description e-con-full e-flex e-con e-parent\" data-id=\"f111582\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-46eb7dd author-article e-con-full e-flex e-con e-child\" data-id=\"46eb7dd\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-ff4cdb1 e-con-full e-flex e-con e-child\" data-id=\"ff4cdb1\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-2c9d407 e-con-full e-flex e-con e-child\" data-id=\"2c9d407\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-78b1930 elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"78b1930\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Client overview<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-28c970f elementor-widget elementor-widget-shortcode\" data-id=\"28c970f\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">[summarize_button_ai]<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-27e20ed elementor-widget__width-inherit elementor-widget-tablet__width-inherit last-child-mb-0 elementor-widget elementor-widget-text-editor\" data-id=\"27e20ed\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Serverplan is an Italian hosting and cloud services provider. It offers shared hosting, VPS, dedicated servers, cloud solutions, and domain-related services for businesses that need reliable infrastructure and ongoing technical support. The company has been operating since 2002 and is based in Cassino, Italy.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ec08c53 e-con-full e-flex e-con e-child\" data-id=\"ec08c53\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-50cb88a elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"50cb88a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Challenge<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dffdd8c elementor-widget elementor-widget-html\" data-id=\"dffdd8c\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n.challenge-tabs {\r\n    display: flex;\r\n    flex-direction: column;\r\n\r\n    width: 100%;\r\n}\r\n\r\n.challenge-tab-container {\r\n    display: grid;\r\n    grid-template-columns: 1fr 1fr;\r\n\r\n    width: 100%;\r\n\r\n    place-items: stretch;\r\n}\r\n\r\n\r\n.challenge-tab-container button.challenge-tab-btn {\r\n    display: flex;\r\n\r\n    font-family: Sora;\r\n    font-weight: 400;\r\n    font-size: 24px;\r\n    line-height: 135%;\r\n\r\n    text-align: start;\r\n\r\n    cursor: pointer;\r\n\r\n    background-color: transparent;\r\n    color: #717171;\r\n    border: none;\r\n    border-bottom: 1px solid #999999;\r\n\r\n    padding: 0 40px 30px;\r\n    \r\n    border-radius: 0;\r\n    \r\n    \r\n    white-space: normal;\r\n    \r\n    transition: initial;\r\n}\r\n\r\n.challenge-tab-container button.challenge-tab-btn.challenge-tab-btn--active {\r\n    color: #2E2E2E;\r\n    border-bottom: 2px solid #C63031;\r\n\r\n    cursor: default;\r\n\r\n    padding: 0 40px 30px;\r\n}\r\n\r\n.challenge-tab-content {\r\n    display: none;\r\n\r\n    flex-direction: column;\r\n    gap: 18px;\r\n\r\n    padding: 40px 40px 0 0;\r\n\r\n    font-family: Karla;\r\n    font-weight: 400;\r\n    font-size: 22px;\r\n    line-height: 150%;\r\n    \r\n    list-style: none;\r\n}\r\n\r\n.challenge-tab-content.challenge-tab-content--active {\r\n    display: flex;\r\n    padding: 40px 40px 0 40px;\r\n}\r\n\r\n.challenge-tab-content>* {\r\n    margin: 0;\r\n}\r\n\r\n@media screen and (max-width:1024px) {\r\n    .challenge-tab-content.challenge-tab-content--active {\r\n    padding: 40px 40px 0 20px;\r\n    }\r\n}\r\n\r\n@media screen and (max-width:780px) {\r\n    .challenge-tab-content {\r\n        padding: 30px 30px 0 30px;\r\n    }\r\n\r\n    .challenge-tab-container button.challenge-tab-btn {\r\n        padding: 0 20px 15px;\r\n    }\r\n\r\n    .challenge-tab-container button.challenge-tab-btn.challenge-tab-btn--active {\r\n        padding: 0 20px 14px;\r\n    }\r\n    .challenge-tab-content.challenge-tab-content--active {\r\n    margin-left: 0px;\r\n    }\r\n}\r\n\r\n@media screen and (max-width:767px) {\r\n    .challenge-tab-content {\r\n        padding: 20px 0 20px;\r\n\r\n        font-size: 16px;\r\n    }\r\n    \r\n    .challenge-tab-container button.challenge-tab-btn {\r\n        padding: 0 15px 15px;\r\n\r\n        font-size: 16px;\r\n    }\r\n\r\n    .challenge-tab-container button.challenge-tab-btn.challenge-tab-btn--active {\r\n        padding: 0 15px 14px;\r\n        color: #2E2E2E;\r\n    }\r\n}\r\n<\/style>\r\n\r\n<div class=\"challenge-tabs\">\r\n    <div class=\"challenge-tab-container\">\r\n        <button class=\"challenge-tab-btn challenge-tab-btn--active\">Business challenges<\/button>\r\n        <button class=\"challenge-tab-btn\">Technical challenges<\/button>\r\n    <\/div>\r\n    <div class=\"challenge-tab-content-container\">\r\n        <ul class=\"challenge-tab-content challenge-tab-content--active\">\r\n            <li>Serverplan needed a new customer portal that would let users manage all their hosting services in one place. The portal had to support everyday tasks like managing products, placing and tracking orders, checking transactions, viewing invoices, handling subscriptions, choosing payment methods, and updating account settings.<\/li>\r\n            <li>The goal was also to make the portal easier to use for customers who manage different types of services, such as hosting, domains, VPS, and dedicated servers. The portal needed to support these tasks so users could manage their services more easily and find billing and service information quickly.<\/li>\r\n            <li>Another challenge was fitting a lot of functionality into one portal without making the user experience feel split up. The new customer area had to bring together product management, orders, billing, subscriptions, and account settings while still feeling straightforward for people using it day to day.<\/li>\r\n        <\/ul>\r\n        \r\n        <ul class=\"challenge-tab-content\">\r\n            <li>On the technical side, the portal needed to use the same Core API as the Order Wizard Serverplan\u2019s flow for ordering hosting-related services. This meant the frontend could not use the backend data directly. The team had to add a middleware layer to prepare the data for the user interface.<\/li>\r\n            <li>The portal also brought together many different sections in one place: service management, orders, transactions, invoices, subscriptions, payment methods, and account settings, including 2FA and activity logs. Each of these areas had its own logic, so the team had to make sure they worked together without breaking the overall structure of the portal.<\/li>\r\n            <li>The product itself was built as a set of separate functional modules. As development moved forward, the team had to keep the user experience and data flow consistent across all of them so the portal would feel like one cohesive system.<\/li>\r\n        <\/ul>\r\n    <\/div>\r\n<\/div>\r\n\r\n<script>\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n    const tabButtons = [...document.querySelectorAll(\".challenge-tabs .challenge-tab-btn\")];\r\n    const tabContents = [...document.querySelectorAll(\".challenge-tabs .challenge-tab-content\")];\r\n\r\n    const tabButtonActiveClass = \"challenge-tab-btn--active\"\r\n    const tabContentActiveClass = \"challenge-tab-content--active\"\r\n\r\n    const activateItem = (index) => {\r\n        tabButtons.forEach((item, itemIndex) => {\r\n            if (itemIndex === index) {\r\n                item.classList.add(tabButtonActiveClass);\r\n            } else {\r\n                item.classList.remove(tabButtonActiveClass);\r\n            }\r\n        });\r\n        \r\n        tabContents.forEach(\r\n            (itemDesc, itemDescIndex) => {\r\n                if (itemDescIndex === index) {\r\n                    itemDesc.classList.add(tabContentActiveClass);\r\n                } else {\r\n                    itemDesc.classList.remove(tabContentActiveClass);\r\n                }\r\n            }\r\n        );\r\n    }\r\n\r\n    tabButtons.forEach((item, index)=>{\r\n        item.addEventListener(\"click\", () => activateItem(index))\r\n    })\r\n})\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-98ac7d6 e-con-full e-flex e-con e-child\" data-id=\"98ac7d6\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-7034a4f e-con-full e-flex e-con e-child\" data-id=\"7034a4f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5960d7a elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"5960d7a\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Solution we delivered<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a4ce714 e-con-full e-flex e-con e-child\" data-id=\"a4ce714\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1d57101 elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"1d57101\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Solution design<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-34c95d3 e-con-full e-flex e-con e-child\" data-id=\"34c95d3\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-868bddb elementor-widget__width-inherit elementor-widget-tablet__width-inherit last-child-mb-0 elementor-widget elementor-widget-text-editor\" data-id=\"868bddb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">Our team took care of the frontend part of Octopus and connected it to the backend to build a new customer area for Serverplan users.<\/span><\/p><p><span style=\"font-weight: 400;\">The portal used the same Core API as the Order Wizard project. Simply put, the backend already contained the logic and data needed for the platform, but that data could not go straight into the interface in a user-friendly way. That is why the solution also included a middleware layer that reshaped the API data for the frontend.<\/span><\/p><p><span style=\"font-weight: 400;\">The portal itself was planned as a set of modules covering the main things users needed to do: open the dashboard, configure products, manage projects and orders, review transaction history, access invoices, work with prepaid credit and subscriptions, choose payment methods, and update account settings. This setup followed the existing domain structure and gave the customer area a logical shape as the project evolved.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3f9c59b elementor-widget elementor-widget-image\" data-id=\"3f9c59b\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/serverplan-octopus-portal.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"serverplan-octopus-portal\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6MTk2OTQ2LCJ1cmwiOiJodHRwczpcL1wvaW5ub3dpc2UuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI2XC8wNVwvc2VydmVycGxhbi1vY3RvcHVzLXBvcnRhbC5wbmcifQ%3D%3D\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1000\" height=\"570\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/serverplan-octopus-portal.png\" class=\"attachment-full size-full wp-image-196946\" alt=\"Customer portal interface for managing hosting services, servers, and account settings in a unified dashboard\" srcset=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/serverplan-octopus-portal.png 1000w, https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/serverplan-octopus-portal-300x171.png 300w, https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/serverplan-octopus-portal-768x438.png 768w, https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/serverplan-octopus-portal-18x10.png 18w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3073efc e-con-full e-flex e-con e-child\" data-id=\"3073efc\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-69698ae elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"69698ae\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Key functionality delivered<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2f4fb3f e-con-full e-flex e-con e-child\" data-id=\"2f4fb3f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-eb65cfb elementor-widget__width-inherit elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"eb65cfb\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Dashboard and customer area<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7019266 elementor-widget__width-inherit elementor-widget-tablet__width-inherit last-child-mb-0 elementor-widget elementor-widget-text-editor\" data-id=\"7019266\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The Octopus dashboard brought the main account and service details into one place. Users could open one screen and quickly check activated orders, orders still in setup, due dates, payments, and invoices. Our team built the frontend for this part of the portal and connected it to the backend so these flows could work inside the new customer area. For Serverplan\u2019s users, that meant less time spent looking for routine account and service information.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d95ed75 e-con-full e-flex e-con e-child\" data-id=\"d95ed75\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-92a1ae4 elementor-widget__width-inherit elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"92a1ae4\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Product and order management<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-36c0710 elementor-widget__width-inherit elementor-widget-tablet__width-inherit last-child-mb-0 elementor-widget elementor-widget-text-editor\" data-id=\"36c0710\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>This part of the portal pulled product configuration and order management into one place, covering domains, shared hosting, reseller hosting, Powermail, PEC, dedicated servers, and VPS. It also included specific tools for managing packages and order lists by product type, along with project management features for creating custom scopes and grouping related objects. So instead of bouncing between disconnected sections and trying to keep track of everything manually, users could handle different products and related actions in the same customer area with a lot less hassle.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c0f7cb3 e-con-full e-flex e-con e-child\" data-id=\"c0f7cb3\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-df56c29 elementor-widget__width-inherit elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"df56c29\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Billing, transactions, and prepaid credit<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3263b3d elementor-widget__width-inherit elementor-widget-tablet__width-inherit last-child-mb-0 elementor-widget elementor-widget-text-editor\" data-id=\"3263b3d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Octopus also featured transaction history, access to issued invoices, and prepaid credit management with top-ups, transaction history, usage limits, and notifications. These features formed the billing side of the new customer area and gave users a clearer view of their financial operations without extra back-and-forth. For Serverplan, this added a more complete account experience around payments and day-to-day billing tasks.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e2750f1 e-con-full e-flex e-con e-child\" data-id=\"e2750f1\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e3ef032 elementor-widget__width-inherit elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"e3ef032\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Subscriptions and payment methods<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9862bc5 elementor-widget__width-inherit elementor-widget-tablet__width-inherit last-child-mb-0 elementor-widget elementor-widget-text-editor\" data-id=\"9862bc5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The portal also covered subscription management for automatic renewal of orders with modification and cancellation options. Users could manage electronic payment methods too, such as credit cards and PayPal. So rather than splitting recurring service actions from payment-related tasks, Serverplan could bring them together inside the same customer area and make those flows easier to handle.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-49688c4 e-con-full e-flex e-con e-child\" data-id=\"49688c4\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-30d6304 elementor-widget__width-inherit elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"30d6304\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Account settings and access control<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6fd3f28 elementor-widget__width-inherit elementor-widget-tablet__width-inherit last-child-mb-0 elementor-widget elementor-widget-text-editor\" data-id=\"6fd3f28\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The account section brought together personal details, billing contacts, access settings, 2FA, and an activity log, so users could manage the core account setup from one place. As part of the wider portal work, Innowise helped bring these account flows into the same customer area as service-related actions, which made the portal more cohesive in day-to-day use.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c2bcf10 e-con-full e-flex e-con e-child\" data-id=\"c2bcf10\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a14ce73 elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"a14ce73\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Delivery approach<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b252005 e-con-full e-flex e-con e-child\" data-id=\"b252005\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6074a99 elementor-widget__width-inherit elementor-widget-tablet__width-inherit last-child-mb-0 elementor-widget elementor-widget-text-editor\" data-id=\"6074a99\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">Innowise managed the project using Agile, which suited a portal build like this, where requirements can shift as new sections take shape. Instead of trying to map out every detail from day one, the team moved in iterations and worked through the scope step by step.<\/span><\/p><p><span style=\"font-weight: 400;\">To make that manageable, the portal was divided into modules based on the existing domain structure. This gave the team a clearer way to work on different parts of the customer area in parallel while keeping the overall system organized.<\/span><\/p><p><span style=\"font-weight: 400;\">The delivery then moved through development and testing phases, with milestones in place to track progress and keep the rollout aligned with the broader portal timeline. So the process stayed flexible where it needed to be, but still structured enough to keep the work moving steadily.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-db88e4a elementor-widget elementor-widget-html\" data-id=\"db88e4a\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n.quote-container {\n    display: flex;\n    align-items: start;\n\n    gap: 20px;\n\n    width: 100%;\n\n    padding: 50px 50px 50px 30px;\n\n    color: #2e2e2e;\n\n    border: 1px solid transparent;\n    border-image: linear-gradient(93.93deg, #60B5FF 3.21%, #EB757C 96.79%) 1;  \n}\n\n\nimg.quote-icon {\n    display: flex;\n    width: 24px;\n    height: auto;\n\n    aspect-ratio: 1\/1;\n\n    flex-shrink: 0;\n}\n\n.quote-content {\n    display: flex;\n    flex-direction: column;\n\n    gap: 40px;\n}\n\np.quote-text {\n    font-family: Karla;\n    font-weight: 400;\n    font-size: 22px;\n    line-height: 150%;\n\n    margin: 0;\n}\n\n.quote-author__container {\n    display: flex;\n    gap: 20px;\n\n    align-items: center;\n}\n\nimg.quote-author__img {\n    display: flex;\n    width: 100px;\n    height: auto;\n\n    aspect-ratio: 1\/1;\n\n    flex-shrink: 0;\n}\n\n.quote-author__info {\n    display: flex;\n    flex-direction: column;\n    gap: 4px;\n\n    flex-basis: 320px;\n    flex-grow: 0;\n}\n\n.quote-author__name {\n    font-family: Sora;\n    font-weight: 600;\n    font-size: 20px;\n    line-height: 135%;\n\n    margin: 0;\n}\n\n.quote-author__role {\n    font-family: Karla;\n    font-weight: 400;\n    font-size: 18px;\n    line-height: 150%;\n\n    margin: 0;\n}\n\n@media screen and (max-width:767px) {\n    \n    .quote-container {\n        flex-direction: column;\n        gap: 10px;\n\n        padding: 20px;\n    }\n\n    img.quote-icon {\n        width: 16px;\n    }\n\n    .quote-content {\n        gap: 20px;\n    }\n\n    p.quote-text {\n        font-size: 16px;\n    }\n\n    img.quote-author__img {\n        width: 60px;\n    }\n\n    .quote-author__name {\n        font-size: 16px;\n    }\n\n    .quote-author__role {\n        font-size: 14px;\n    }\n}\n<\/style>\n\n<div class=\"quote-container\">\n    <img decoding=\"async\"  class=\"quote-icon\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2025\/10\/Frame-2131329670.svg\" alt=\"Quote icon\" \/>\n    <div class=\"quote-content\">\n        <p class=\"quote-text\">\n            The tricky part was that the backend already had its own structure, and it didn\u2019t map cleanly to what users expect to see in a customer portal. We had to shape that data through the middleware and reflect it in the frontend in a way that made everyday actions like managing services or checking invoices straightforward.\n        <\/p>\n        <div class=\"quote-author__container\">\n            <img decoding=\"async\" class=\"quote-author__img\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/Dmitry-Coolgun.png\" alt=\"Dmitry Coolgun\" \/>\n            <div class=\"quote-author__info\">\n                <a class=\"quote-author__name\">Dmitry Coolgun<\/a>\n                <span class=\"quote-author__role\">Delivery Manager<\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-457adad e-con-full e-flex e-con e-child\" data-id=\"457adad\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cd771a3 elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget__width-inherit elementor-widget elementor-widget-heading\" data-id=\"cd771a3\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Technologies<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-960ddb3 elementor-widget elementor-widget-html\" data-id=\"960ddb3\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n  .tech-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, 1fr);\r\n    column-gap: 60px;\r\n    row-gap: 40px;\r\n  }\r\n\r\n  .tech-grid-item {\r\n    display: grid;\r\n    grid-template-rows: subgrid;\r\n    \/*grid-row: span 2;*\/\r\n    \/*gap: 20px;*\/\r\n  }\r\n\r\n  .tech-grid-item__title-wrapper {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 20px;\r\n    padding-bottom: 10px;\r\n    border-bottom: 1px solid transparent;\r\n    border-image: linear-gradient(93.93deg, #60b5ff 3.21%, #eb757c 96.79%) 1\r\n      round;\r\n\r\n    \/* for ::after arrow positioning *\/\r\n    position: relative;\r\n    padding-right: 50px; \/* reserve space for arrow *\/\r\n  }\r\n\r\n  a .tech-grid-item__title-wrapper::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    right: 0;\r\n    top: 40%;\r\n    transform: translateY(-50%);\r\n    width: 70px;\r\n    height: 70px;\r\n    background-image: url(\"https:\/\/innowise.com\/wp-content\/uploads\/2024\/12\/Frame-1597885919.svg\");\r\n    background-position-x: right;\r\n    background-repeat: no-repeat;\r\n    background-size: cover;\r\n    opacity: 0;\r\n    transition:\r\n      background 0.35s,\r\n      opacity 0.35s;\r\n  }\r\n\r\n  a:hover .tech-grid-item__title-wrapper::after {\r\n    background-position-x: left;\r\n    opacity: 1;\r\n  }\r\n\r\n  .tech-grid-item__icon {\r\n    display: flex;\r\n    flex-shrink: 0;\r\n  }\r\n\r\n  .tech-grid-item__icon img {\r\n    width: 50px;\r\n    height: 50px;\r\n    object-fit: contain;\r\n    filter: grayscale(100%);\r\n    transition: filter 0.35s;\r\n  }\r\n\r\n  \/* colour on hover \u2014 works for both <a> and plain <div> *\/\r\n  .tech-grid-item__title-wrapper:hover .tech-grid-item__icon img {\r\n    filter: unset;\r\n  }\r\n\r\n  h4.tech-grid-item__title {\r\n    font-family: \"Karla\", sans-serif;\r\n    font-weight: 500;\r\n    font-size: 20px;\r\n    line-height: 24px;\r\n    margin: 0;\r\n    color: #2e2e2e;\r\n    transition: color 0.35s;\r\n  }\r\n\r\n  a:hover h4.tech-grid-item__title {\r\n    color: #c63031;\r\n  }\r\n\r\n  \/* remove default link styles *\/\r\n  a.tech-grid-item {\r\n    text-decoration: none;\r\n  }\r\n\r\n  @media (max-width: 1024px) {\r\n    .tech-grid {\r\n      grid-template-columns: repeat(2, 1fr);\r\n      column-gap: 60px;\r\n      row-gap: 30px;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    .tech-grid {\r\n      grid-template-columns: 1fr;\r\n      gap: 30px;\r\n    }\r\n\r\n    .tech-grid-item {\r\n      gap: 10px;\r\n    }\r\n\r\n    .tech-grid-item__title-wrapper {\r\n      padding-bottom: 10px;\r\n      padding-right: 40px;\r\n      gap: 8px;\r\n    }\r\n\r\n    .tech-grid-item__icon img {\r\n      width: 28px;\r\n      height: 28px;\r\n    }\r\n\r\n    h4.tech-grid-item__title {\r\n      font-size: 14px;\r\n      line-height: 120%;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"tech-grid\">\r\n  <a href=\"\/technologies\/vuejs-development\/\" class=\"tech-grid-item\">\r\n    <div class=\"tech-grid-item__title-wrapper\">\r\n      <div class=\"tech-grid-item__icon\">\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/Vue.js.svg\"\r\n          alt=\"Vue 3\"\r\n        \/>\r\n      <\/div>\r\n      <h4 class=\"tech-grid-item__title\">Vue 3<\/h4>\r\n    <\/div>\r\n  <\/a>\r\n\r\n  <div class=\"tech-grid-item\">\r\n    <div class=\"tech-grid-item__title-wrapper\">\r\n      <div class=\"tech-grid-item__icon\">\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/Mezzi.svg\"\r\n          alt=\"Mezzi\"\r\n        \/>\r\n      <\/div>\r\n      <h4 class=\"tech-grid-item__title\">Mezzi<\/h4>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <a href=\"\/technologies\/php-development\/\" class=\"tech-grid-item\">\r\n    <div class=\"tech-grid-item__title-wrapper\">\r\n      <div class=\"tech-grid-item__icon\">\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/PHP.svg\"\r\n          alt=\"PHP\"\r\n        \/>\r\n      <\/div>\r\n      <h4 class=\"tech-grid-item__title\">PHP<\/h4>\r\n    <\/div>\r\n  <\/a>\r\n\r\n  <a href=\"\/technologies\/javascript-development\/\" class=\"tech-grid-item\">\r\n    <div class=\"tech-grid-item__title-wrapper\">\r\n      <div class=\"tech-grid-item__icon\">\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/JavaScript.svg\"\r\n          alt=\"JavaScript\"\r\n        \/>\r\n      <\/div>\r\n      <h4 class=\"tech-grid-item__title\">JavaScript<\/h4>\r\n    <\/div>\r\n  <\/a>\r\n\r\n  <div class=\"tech-grid-item\">\r\n    <div class=\"tech-grid-item__title-wrapper\">\r\n      <div class=\"tech-grid-item__icon\">\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/HTML.svg\"\r\n          alt=\"HTML\"\r\n        \/>\r\n      <\/div>\r\n      <h4 class=\"tech-grid-item__title\">HTML<\/h4>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"tech-grid-item\">\r\n    <div class=\"tech-grid-item__title-wrapper\">\r\n      <div class=\"tech-grid-item__icon\">\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/CSS.svg\"\r\n          alt=\"CSS\/SCSS\"\r\n        \/>\r\n      <\/div>\r\n      <h4 class=\"tech-grid-item__title\">CSS\/SCSS<\/h4>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"tech-grid-item\">\r\n    <div class=\"tech-grid-item__title-wrapper\">\r\n      <div class=\"tech-grid-item__icon\">\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/05\/Bootstrap.svg\"\r\n          alt=\"Bootstrap\"\r\n        \/>\r\n      <\/div>\r\n      <h4 class=\"tech-grid-item__title\">Bootstrap<\/h4>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8398c04 e-con-full e-flex e-con e-child\" data-id=\"8398c04\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-fc18027 e-con-full e-flex e-con e-child\" data-id=\"fc18027\" data-element_type=\"container\" id=\"test5\">\n\t\t\t\t<div class=\"elementor-element elementor-element-02b2e61 elementor-widget elementor-widget-html\" data-id=\"02b2e61\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"team-grid\">\r\n  <div class=\"team-title-wrapper\">\r\n    <h2 class=\"team-title\">Team<\/h2>\r\n  <\/div>\r\n  <!-- <div class=\"team-grid-item--placeholder\"><\/div> -->\r\n  <div class=\"team-grid-item\">\r\n    <div class=\"team-grid-item__count\">\r\n      <img decoding=\"async\"\r\n        src=\"https:\/\/innowise.com\/wp-content\/uploads\/2025\/10\/Icon.svg\"\r\n        alt=\"Icon\"\r\n      \/>\r\n      <span>1<\/span>\r\n    <\/div>\r\n    <span class=\"team-grid-item__type\">Project Manager<\/span>\r\n  <\/div>\r\n  <div class=\"team-grid-item\">\r\n    <div class=\"team-grid-item__count\">\r\n      <img decoding=\"async\"\r\n        src=\"https:\/\/innowise.com\/wp-content\/uploads\/2025\/10\/Icon.svg\"\r\n        alt=\"Icon\"\r\n      \/>\r\n      <span>3<\/span>\r\n    <\/div>\r\n    <span class=\"team-grid-item__type\">PHP Developers<\/span>\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n  .team-grid {\r\n    display: grid;\r\n    width: 100%;\r\n    grid-template-columns: repeat(3, 1fr);\r\n    gap: 20px;\r\n    place-items: stretch;\r\n    color: #2e2e2e;\r\n  }\r\n\r\n  .team-title-wrapper,\r\n  .team-grid-item {\r\n    display: flex;\r\n    gap: 5px;\r\n  }\r\n\r\n  .team-grid-item {\r\n    padding: 40px 30px;\r\n  }\r\n\r\n  .team-title-wrapper {\r\n    padding: 40px 30px;\r\n    padding-left: 0;\r\n  }\r\n\r\n  .team-title-wrapper {\r\n    flex-direction: row;\r\n    align-items: center;\r\n  }\r\n\r\n  .team-grid-item {\r\n    flex-direction: column;\r\n    align-items: start;\r\n    background-color: #f5f5f7;\r\n  }\r\n\r\n  h2.team-title {\r\n    font-family: Sora;\r\n    font-weight: 400;\r\n    font-size: 36px;\r\n    line-height: 46px;\r\n    margin: 0;\r\n  }\r\n\r\n  .team-grid-item__count {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 5px;\r\n  }\r\n\r\n  .team-grid-item__count > span {\r\n    font-family: Sora;\r\n    font-weight: 600;\r\n    font-size: 18px;\r\n    line-height: 130%;\r\n    text-align: center;\r\n    position: relative;\r\n    top: 1px;\r\n    color: #c63031;\r\n  }\r\n\r\n  .team-grid-item__count > img {\r\n    display: flex;\r\n\r\n    width: 20px;\r\n    height: auto;\r\n    aspect-ratio: 1\/1;\r\n    flex-shrink: 0;\r\n  }\r\n\r\n  .team-grid-item__type {\r\n    font-family: Karla;\r\n    font-weight: 400;\r\n    font-size: 18px;\r\n    line-height: 150%;\r\n  }\r\n\r\n  @media screen and (max-width: 780px) {\r\n    .team-grid-item {\r\n      padding: 30px;\r\n    }\r\n\r\n    .team-title-wrapper {\r\n      padding: 30px;\r\n      padding-left: 0;\r\n    }\r\n  }\r\n\r\n  @media screen and (max-width: 767px) {\r\n    h2.team-title {\r\n      font-size: 24px;\r\n      line-height: 36px;\r\n      margin: 0;\r\n    }\r\n\r\n    .team-grid {\r\n      grid-template-columns: repeat(2, 1fr);\r\n      gap: 10px;\r\n    }\r\n\r\n    .team-grid-item {\r\n      padding: 20px;\r\n    }\r\n\r\n    .team-title-wrapper {\r\n      padding: 0px;\r\n      grid-column: span 2;\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .team-grid-item--placeholder {\r\n      display: none;\r\n    }\r\n\r\n    .team-grid-item__count > img {\r\n      width: 16px;\r\n    }\r\n    .team-grid-item__count > span {\r\n      font-size: 14px;\r\n      top: 0;\r\n    }\r\n\r\n    .team-grid-item__type {\r\n      font-size: 14px;\r\n    }\r\n  }\r\n<\/style>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-65bb502 elementor-widget elementor-widget-image\" data-id=\"65bb502\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1000\" height=\"400\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/02\/innowise-team.png\" class=\"attachment-full size-full wp-image-194902\" alt=\"Innowise team\" srcset=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/02\/innowise-team.png 1000w, https:\/\/innowise.com\/wp-content\/uploads\/2026\/02\/innowise-team-300x120.png 300w, https:\/\/innowise.com\/wp-content\/uploads\/2026\/02\/innowise-team-768x307.png 768w, https:\/\/innowise.com\/wp-content\/uploads\/2026\/02\/innowise-team-18x7.png 18w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fb32db0 e-con-full e-flex e-con e-child\" data-id=\"fb32db0\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-399ea33 elementor-widget elementor-widget-html\" data-id=\"399ea33\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\nh2.results__title {\n    font-family: Sora;\n    font-weight: 400;\n    font-size: 36px;\n    line-height: 46px;\n\n    margin: 0;\n}\n\n.results__title-wrapper {\n    display: flex;\n    gap: 30px;\n\n    align-items: center;\n    justify-content: space-between;\n\n    width: 100%;\n\n    border-bottom: 1px solid transparent;\n    border-image: linear-gradient(93.93deg, #60B5FF 3.21%, #EB757C 96.79%) 1 round; \n}\n\n.results__duration-wrapper {\n    display: flex;\n    background-color: #F5F5F7;\n}\n\n.results__duration-wrapper > * {\n    padding: 30px 40px;\n}\n\n.results__duration-param {\n    font-family: Sora;\n    font-weight: 600;\n    font-size: 20px;\n    line-height: 135%;\n\n    text-align: center;\n}\n\n.results__duration-value {\n    font-family: Karla;\n    font-weight: 400;\n    font-size: 22px;\n    line-height: 110%;\n\n    text-align: center;\n}\n\n@media screen and (max-width:767px) {\n    \n    h2.results__title {\n        font-size: 24px;\n        line-height: 36px;\n    }\n\n    .results__title-wrapper {\n        flex-direction: column;\n        align-items: start;\n    }\n\n    .results__duration-wrapper {\n        display: grid;\n        grid-template-columns: 1fr 1fr;\n        width: 100%;\n    }\n\n    .results__duration-wrapper > * {\n        padding: 15px;\n    }\n\n    .results__duration-param {\n        font-size: 16px;\n        line-height: 120%;\n    }\n\n    .results__duration-value {\n        font-size: 16px;\n        line-height: 20px;\n    }\n\n}\n<\/style>\n\n\n<div class=\"results__title-wrapper\">\n    <h2 class=\"results__title\">Results<\/h2>\n    <div class=\"results__duration-wrapper\">\n        <div class=\"results__duration-param\">Project duration<\/div>\n        <div class=\"results__duration-value\">February 2024 \u2013 December 2024<\/div>\n    <\/div>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d077df9 e-con-full e-flex e-con e-child\" data-id=\"d077df9\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-72d75e1 elementor-widget__width-inherit elementor-widget-tablet__width-inherit last-child-mb-0 elementor-widget elementor-widget-text-editor\" data-id=\"72d75e1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">This solution closed both sides of the challenge at once. Serverplan now has one portal for service, billing, and account tasks, where users can check orders, review invoices, manage subscriptions, update payment methods, and handle account settings without moving between separate sections. That makes everyday service management feel more direct and less scattered.\u00a0<\/span><\/p><p><span style=\"font-weight: 400;\">Under the hood, the portal still works with Serverplan\u2019s existing backend through the Core API and middleware layer, so the new customer experience fits into the company\u2019s current technical setup rather than replacing it.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f871fbd table-content-container e-con-full e-flex e-con e-child\" data-id=\"f871fbd\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-241354e e-con-full stickyTable e-flex e-con e-child\" data-id=\"241354e\" data-element_type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-d4b37c1 author-block e-con-full e-flex e-con e-child\" data-id=\"d4b37c1\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c310d46 ddcv elementor-widget elementor-widget-html\" data-id=\"c310d46\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n  .article-description > .e-con-inner {\r\n    align-items: baseline !important;\r\n  }\r\n\r\n  .stickyTable {\r\n    position: sticky;\r\n    top: 72px;\r\n    bottom: auto;\r\n  }\r\n<\/style>\r\n\r\n<!--NOTE Change data-id in wrapper styles for hide this block on the mobile device screen-->\r\n<div class=\"toc-wrapper\">\r\n  <h4 class=\"toc-title\">Table of contents<\/h4>\r\n  <div class=\"toc toc-2\"><\/div>\r\n<\/div>\r\n\r\n<script>\r\n  document.addEventListener(\"DOMContentLoaded\", () => {\r\n    \/*-------------------------------\r\n    SETTINGS\r\n  --------------------------------*\/\r\n    const LINKS = {\r\n      \"Unleashing the power of .NET 8\": \"gggggg\",\r\n      \"Revamping legacy systems: unlocking business potential through software modernization\":\r\n        \"hello\",\r\n      \"Solution we delivered\": \"Solution\",\r\n    };\r\n\r\n    const OFFSET = 70; \/\/ \u043e\u0442\u0441\u0442\u0443\u043f \u043f\u0440\u0438 \u0441\u043a\u0440\u043e\u043b\u043b\u0435 \u043a \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0443\r\n\r\n    let headerElements = [];\r\n    let tocLinks = [];\r\n\r\n    \/*-------------------------------\r\n    CREATE TOC LIST\r\n  --------------------------------*\/\r\n    function createToc() {\r\n      const tocContainer = document.querySelector(\".toc.toc-2\");\r\n      const list = document.createElement(\"ul\");\r\n\r\n      headerElements = [\r\n        ...document.querySelectorAll(\".article-description h2\"),\r\n      ];\r\n\r\n      \/\/ \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u043b\u0438\u0448\u043d\u0438\u0435 h2 \u2014 \u043a\u0430\u043a \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435\r\n      const excluded = [\r\n        document.querySelector(\".related_content_blog_container h2\"),\r\n      ];\r\n      \/\/   headerElements = headerElements.filter((h) => !excluded.includes(h));\r\n\r\n      headerElements.forEach((header) => {\r\n        const textOriginal =\r\n          header.dataset.title?.trim() || header.textContent.trim();\r\n        const id =\r\n          header.id ||\r\n          textOriginal\r\n            .toLowerCase()\r\n            .replace(\/[^\\w ]+\/g, \"\")\r\n            .replace(\/ +\/g, \"-\");\r\n        header.id = id;\r\n\r\n        const li = document.createElement(\"li\");\r\n        const a = document.createElement(\"a\");\r\n\r\n        a.href = \"#\" + id;\r\n        a.textContent = LINKS[textOriginal] || textOriginal;\r\n\r\n        a.addEventListener(\"click\", (e) => {\r\n          e.preventDefault();\r\n          const y =\r\n            header.getBoundingClientRect().top + window.scrollY - OFFSET;\r\n          window.scrollTo({ top: y, behavior: \"smooth\" });\r\n        });\r\n\r\n        li.appendChild(a);\r\n        list.appendChild(li);\r\n      });\r\n\r\n      tocContainer.appendChild(list);\r\n      tocLinks = Array.from(list.querySelectorAll(\"li\"));\r\n    }\r\n\r\n    \/*-------------------------------\r\n    INTERSECTION OBSERVER\r\n    \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a\r\n  --------------------------------*\/\r\n    function createObserver() {\r\n      const observerOptions = {\r\n        root: null,\r\n        rootMargin: \"0px 0px -60% 0px\",\r\n        threshold: 0, \/\/ \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0438 \u0432 \u0437\u043e\u043d\u0435 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438\r\n      };\r\n\r\n      const callback = (entries) => {\r\n        entries.forEach((entry) => {\r\n          if (entry.isIntersecting) {\r\n            const id = entry.target.id;\r\n\r\n            tocLinks.forEach((li) =>\r\n              li.classList.remove(\"active\", \"pre-active\"),\r\n            );\r\n\r\n            const index = headerElements.findIndex((h) => h.id === id);\r\n\r\n            tocLinks.forEach((li, i) => {\r\n              if (i === index) li.classList.add(\"active\");\r\n              if (i < index) li.classList.add(\"pre-active\");\r\n            });\r\n          }\r\n        });\r\n      };\r\n\r\n      const observer = new IntersectionObserver(callback, observerOptions);\r\n      headerElements.forEach((h) => observer.observe(h));\r\n    }\r\n\r\n    \/*-------------------------------\r\n    LOAD IMAGES (\u0442\u0438\u043f\u043e lazy load fix)\r\n  --------------------------------*\/\r\n    function loadAllImages() {\r\n      document.querySelectorAll(\"img\").forEach((img) => {\r\n        const src = img.dataset.src || img.src;\r\n        img.src = src;\r\n      });\r\n    }\r\n\r\n    \/*-------------------------------\r\n    INIT\r\n  --------------------------------*\/\r\n    setTimeout(() => {\r\n      loadAllImages();\r\n      createToc();\r\n      createObserver();\r\n    }, 300);\r\n  });\r\n<\/script>\r\n\r\n<style>\r\n  .table-content-container .elementor-widget-wrap {\r\n    margin: 0 !important;\r\n    padding: 0 !important;\r\n  }\r\n\r\n  @media (max-width: 1279px) {\r\n    .table-content-container {\r\n      display: none !important;\r\n    }\r\n  }\r\n\r\n  .toc-wrapper {\r\n    display: flex;\r\n    flex-direction: column;\r\n    row-gap: 30px;\r\n    font-family: \"Karla\";\r\n    box-sizing: border-box;\r\n    \/*height: 100%;*\/\r\n\r\n    flex: 1;\r\n  }\r\n  .ddcv {\r\n    flex-basis: 100%;\r\n    flex-grow: 1;\r\n    flex-shrink: 1;\r\n    overflow-y: auto;\r\n  }\r\n\r\n  .toc-wrapper {\r\n    overflow-y: auto;\r\n    flex-shrink: 1;\r\n    flex-basis: 100%;\r\n    flex-grow: 1;\r\n  }\r\n\r\n  .toc-wrapper::-webkit-scrollbar,\r\n  .ddcv::-webkit-scrollbar {\r\n    position: absolute !important;\r\n    width: 4px !important;\r\n    background-color: #f5f5f7 !important;\r\n  }\r\n\r\n  .toc-wrapper::-webkit-scrollbar-thumb,\r\n  .ddcv::-webkit-scrollbar-thumb {\r\n    position: absolute !important;\r\n    background-color: #999999 !important;\r\n    border-radius: 4px !important;\r\n  }\r\n\r\n  \/*.toc-wrapper .toc {\r\n    scrollbar-width: 4px !important;\r\n    scrollbar-color: auto !important;\r\n}*\/\r\n\r\n  h4.toc-title {\r\n    margin: 0;\r\n    font-family: Karla;\r\n    font-size: 22px;\r\n    line-height: 28px;\r\n    font-weight: 700;\r\n  }\r\n\r\n  @media screen and (max-width: 1279px) {\r\n    .ddcv {\r\n      margin-top: 0px;\r\n      position: absolute;\r\n      top: 0px;\r\n      left: 50%;\r\n      transform: translate(50%, 0);\r\n    }\r\n  }\r\n\r\n  @media screen and (max-width: 767px) {\r\n    .ddcv {\r\n      display: none;\r\n    }\r\n  }\r\n\r\n  .toc ul {\r\n    list-style: none;\r\n    font-family: \"Karla\";\r\n    font-size: 16px;\r\n    line-height: 22px;\r\n    padding: 0px;\r\n    border-left: 1px solid #717171;\r\n  }\r\n\r\n  .toc li {\r\n    margin-left: -1px;\r\n    margin-top: 0;\r\n    padding: 16px 16px 16px 20px;\r\n    font-size: 18px;\r\n    line-height: 22px;\r\n    color: #717171;\r\n    border-left: 2px solid transparent;\r\n  }\r\n\r\n  .toc ul li a {\r\n    display: block;\r\n    width: 100%;\r\n    color: inherit;\r\n    text-decoration: none !important;\r\n  }\r\n\r\n  .toc ul .active {\r\n    color: #2e2e2e;\r\n    border-left: 2px solid #c63031;\r\n  }\r\n\r\n  .toc ul .pre-active {\r\n    border-left: 2px solid #c63031;\r\n  }\r\n<\/style>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5f9dff1 e-con-full e-flex e-con e-child\" data-id=\"5f9dff1\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f054d18 elementor-widget-tablet__width-inherit elementor-widget-mobile__width-inherit elementor-widget elementor-widget-heading\" data-id=\"f054d18\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">PHP expertise for hosting portals<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8e95517 elementor-mobile-align-justify elementor-widget-mobile__width-inherit elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"8e95517\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#contact-form\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Build your solution<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-09bacf4 e-flex e-con-boxed e-con e-parent\" data-id=\"09bacf4\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9e1e5e1 elementor-widget elementor-widget-heading\" data-id=\"9e1e5e1\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Related cases<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6d30b5f e-con-full slider-overflow e-flex e-con e-child\" data-id=\"6d30b5f\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-da9c045 elementor-widget elementor-widget-shortcode\" data-id=\"da9c045\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n        <div class=\"slider-overflow\">\n            <div class=\"swiper-related\">\n                <div class=\"swiper-wrapper\">\n        <div class=\"swiper-slide\">\n            <div class=\"swiper-into-e1\">\n                <div class=\"swiper-slide__inner-container\">\n                    <div class=\"block-div-img-rel\">\n                        <a href=\"https:\/\/innowise.com\/sv\/case\/ios-and-vr-meditation-app-development\/\" aria-label=\"block_194217\">\n                            <img decoding=\"async\" class=\"slide__img-rel\" \n                             src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/03\/iOS-and-VR-meditation-app-suite-for-Grozio-Planeta-UAB-2.png\" alt=\"iOS and VR meditation app suite for Gro\u017eio Planeta UAB.\">\n                        <\/a>\n                    <\/div>\n                    <div class=\"border-slide-rel\">\n                        <div class=\"swip-title-rel-qe mb-10\" style=\"\">\n                            <a href=\"https:\/\/innowise.com\/sv\/case\/ios-and-vr-meditation-app-development\/\" aria-label=\"iOS and VR meditation app suite for Gro\u017eio Planeta UAB\" >iOS and VR meditation app suite for Gro\u017eio Planeta UAB<\/a>\n                        <\/div>\n                        <div class=\"swip-array-rel\">\n                            <a href=\"\/sv\/cases\/aws\/\">AWS<\/a><a href=\"\/sv\/cases\/django\/\">Django<\/a><a href=\"\/sv\/cases\/healthcare\/\">Healthcare<\/a><a href=\"\/sv\/cases\/mobile-development\/\">Mobile development<\/a><a href=\"\/sv\/cases\/php\/\">PHP<\/a><a href=\"\/sv\/cases\/python\/\">Python<\/a>\n                        <\/div>\n                        <div class=\"slide__button-wrapper_mob\">\n                            <span class=\"slide__button-text_mob\">Read more<\/span>\n                            <img decoding=\"async\" class=\"slide__button-img_mob\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2021\/12\/arrow-more.svg\" alt=\"\">\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"slide__button-wrapper\">\n                <a href=\"https:\/\/innowise.com\/sv\/case\/ios-and-vr-meditation-app-development\/\" aria-label=\"Read more about iOS and VR meditation app suite for Gro\u017eio Planeta UAB\">\n                    <div class=\"arrow-btn3-rel\">\n                        <svg class=\"arrow-btn__svg\"\n                             width=\"110\"\n                             height=\"18\"\n                             viewBox=\"0 0 110 18\"\n                             fill=\"none\"\n                             xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <path d=\"M9 1L17 8.99999L9 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M0 9.00018L17 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M99 1L107 8.99999L99 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M90 9.00018L107 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                        <\/svg>\n                    <\/div>\n                <\/a>\n            <\/div>\n        <\/div>\n        <div class=\"swiper-slide\">\n            <div class=\"swiper-into-e1\">\n                <div class=\"swiper-slide__inner-container\">\n                    <div class=\"block-div-img-rel\">\n                        <a href=\"https:\/\/innowise.com\/sv\/case\/custom-website-development-for-airline\/\" aria-label=\"block_193018\">\n                            <img decoding=\"async\" class=\"slide__img-rel\" \n                             src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/02\/airplane-in-the-sky.jpg\" alt=\"Multi-page charter airline website for a startup air carrier.\">\n                    <div class=\"cases-post__thumbnail_opencase_img\">\n                        <div>\n                            <img decoding=\"async\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/03\/Flyyo-logo.svg\" alt=\"\">\n                        <\/div>\n                    <\/div>\n                \n                        <\/a>\n                    <\/div>\n                    <div class=\"border-slide-rel\">\n                        <div class=\"swip-title-rel-qe mb-10\" style=\"\">\n                            <a href=\"https:\/\/innowise.com\/sv\/case\/custom-website-development-for-airline\/\" aria-label=\"Multi-page charter airline website for a startup air carrier\" >Multi-page charter airline website for a startup air carrier<\/a>\n                        <\/div>\n                        <div class=\"swip-array-rel\">\n                            <a href=\"\/sv\/cases\/php\/\">PHP<\/a><a href=\"\/sv\/cases\/transportation\/\">Transportation<\/a><a href=\"\/sv\/cases\/design\/\">UI\/UX design<\/a><a href=\"\/sv\/cases\/webbutveckling\/\">Web development<\/a><a href=\"\/sv\/cases\/website\/\">Website<\/a>\n                        <\/div>\n                        <div class=\"slide__button-wrapper_mob\">\n                            <span class=\"slide__button-text_mob\">Read more<\/span>\n                            <img decoding=\"async\" class=\"slide__button-img_mob\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2021\/12\/arrow-more.svg\" alt=\"\">\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"slide__button-wrapper\">\n                <a href=\"https:\/\/innowise.com\/sv\/case\/custom-website-development-for-airline\/\" aria-label=\"Read more about Multi-page charter airline website for a startup air carrier\">\n                    <div class=\"arrow-btn3-rel\">\n                        <svg class=\"arrow-btn__svg\"\n                             width=\"110\"\n                             height=\"18\"\n                             viewBox=\"0 0 110 18\"\n                             fill=\"none\"\n                             xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <path d=\"M9 1L17 8.99999L9 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M0 9.00018L17 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M99 1L107 8.99999L99 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M90 9.00018L107 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                        <\/svg>\n                    <\/div>\n                <\/a>\n            <\/div>\n        <\/div>\n        <div class=\"swiper-slide\">\n            <div class=\"swiper-into-e1\">\n                <div class=\"swiper-slide__inner-container\">\n                    <div class=\"block-div-img-rel\">\n                        <a href=\"https:\/\/innowise.com\/sv\/case\/fast-website-delivery\/\" aria-label=\"block_192516\">\n                            <img decoding=\"async\" class=\"slide__img-rel\" \n                             src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/02\/image-teaser-3.png\" alt=\"Fast Website Delivery for Family Businesses.\">\n                    <div class=\"cases-post__thumbnail_opencase_img\">\n                        <div>\n                            <img decoding=\"async\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2026\/02\/Logo-symbolname-green-1.svg\" alt=\"\">\n                        <\/div>\n                    <\/div>\n                \n                        <\/a>\n                    <\/div>\n                    <div class=\"border-slide-rel\">\n                        <div class=\"swip-title-rel-qe mb-10\" style=\"\">\n                            <a href=\"https:\/\/innowise.com\/sv\/case\/fast-website-delivery\/\" aria-label=\"Fast Website Delivery for Family Businesses\" >Fast Website Delivery for Family Businesses<\/a>\n                        <\/div>\n                        <div class=\"swip-array-rel\">\n                            <a href=\"\/sv\/cases\/cms\/\">CMS website development<\/a><a href=\"\/sv\/cases\/construction\/\">Construction<\/a><a href=\"\/sv\/cases\/horeca\/\">HoReCa<\/a><a href=\"\/sv\/cases\/js\/\">JavaScript<\/a><a href=\"\/sv\/cases\/php\/\">PHP<\/a><a href=\"\/sv\/cases\/website\/\">Website<\/a><a href=\"\/sv\/cases\/wordpress\/\">WordPress<\/a>\n                        <\/div>\n                        <div class=\"slide__button-wrapper_mob\">\n                            <span class=\"slide__button-text_mob\">Read more<\/span>\n                            <img decoding=\"async\" class=\"slide__button-img_mob\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2021\/12\/arrow-more.svg\" alt=\"\">\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"slide__button-wrapper\">\n                <a href=\"https:\/\/innowise.com\/sv\/case\/fast-website-delivery\/\" aria-label=\"Read more about Fast Website Delivery for Family Businesses\">\n                    <div class=\"arrow-btn3-rel\">\n                        <svg class=\"arrow-btn__svg\"\n                             width=\"110\"\n                             height=\"18\"\n                             viewBox=\"0 0 110 18\"\n                             fill=\"none\"\n                             xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <path d=\"M9 1L17 8.99999L9 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M0 9.00018L17 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M99 1L107 8.99999L99 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M90 9.00018L107 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                        <\/svg>\n                    <\/div>\n                <\/a>\n            <\/div>\n        <\/div>\n        <div class=\"swiper-slide\">\n            <div class=\"swiper-into-e1\">\n                <div class=\"swiper-slide__inner-container\">\n                    <div class=\"block-div-img-rel\">\n                        <a href=\"https:\/\/innowise.com\/sv\/case\/automated-web-app-testing\/\" aria-label=\"block_170832\">\n                            <img decoding=\"async\" class=\"slide__img-rel\" \n                             src=\"https:\/\/innowise.com\/wp-content\/uploads\/2024\/08\/Web-app-test-automation-teaser.png\" alt=\"Web app test automation.\">\n                        <\/a>\n                    <\/div>\n                    <div class=\"border-slide-rel\">\n                        <div class=\"swip-title-rel-qe mb-10\" style=\"\">\n                            <a href=\"https:\/\/innowise.com\/sv\/case\/automated-web-app-testing\/\" aria-label=\"Web app test automation\" >Web app test automation<\/a>\n                        <\/div>\n                        <div class=\"swip-array-rel\">\n                            <a href=\"\/sv\/cases\/telecom\/\">Telecom<\/a><a href=\"\/sv\/cases\/qa\/\">QA<\/a><a href=\"\/sv\/cases\/rest\/\">REST<\/a><a href=\"\/sv\/cases\/java\/\">Java<\/a><a href=\"\/sv\/cases\/web\/\">Web<\/a>\n                        <\/div>\n                        <div class=\"slide__button-wrapper_mob\">\n                            <span class=\"slide__button-text_mob\">Read more<\/span>\n                            <img decoding=\"async\" class=\"slide__button-img_mob\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2021\/12\/arrow-more.svg\" alt=\"\">\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"slide__button-wrapper\">\n                <a href=\"https:\/\/innowise.com\/sv\/case\/automated-web-app-testing\/\" aria-label=\"Read more about Web app test automation\">\n                    <div class=\"arrow-btn3-rel\">\n                        <svg class=\"arrow-btn__svg\"\n                             width=\"110\"\n                             height=\"18\"\n                             viewBox=\"0 0 110 18\"\n                             fill=\"none\"\n                             xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <path d=\"M9 1L17 8.99999L9 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M0 9.00018L17 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M99 1L107 8.99999L99 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M90 9.00018L107 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                        <\/svg>\n                    <\/div>\n                <\/a>\n            <\/div>\n        <\/div>\n        <div class=\"swiper-slide\">\n            <div class=\"swiper-into-e1\">\n                <div class=\"swiper-slide__inner-container\">\n                    <div class=\"block-div-img-rel\">\n                        <a href=\"https:\/\/innowise.com\/sv\/case\/it-solutions-for-travel-industry\/\" aria-label=\"block_160038\">\n                            <img decoding=\"async\" class=\"slide__img-rel\" \n                             src=\"https:\/\/innowise.com\/wp-content\/uploads\/2024\/05\/Revamping-tour-operator-software-small-cover.png\" alt=\"Developing tour operator software.\">\n                        <\/a>\n                    <\/div>\n                    <div class=\"border-slide-rel\">\n                        <div class=\"swip-title-rel-qe mb-10\" style=\"\">\n                            <a href=\"https:\/\/innowise.com\/sv\/case\/it-solutions-for-travel-industry\/\" aria-label=\"Developing tour operator software\" >Developing tour operator software<\/a>\n                        <\/div>\n                        <div class=\"swip-array-rel\">\n                            <a href=\"\/sv\/cases\/backend-utveckling\/\">Back-end development<\/a><a href=\"\/sv\/cases\/dart\/\">Dart<\/a><a href=\"\/sv\/cases\/frontend-utveckling\/\">Front-end development<\/a><a href=\"\/sv\/cases\/laravel\/\">Laravel<\/a><a href=\"\/sv\/cases\/mobile-development\/\">Mobile development<\/a><a href=\"\/sv\/cases\/php\/\">PHP<\/a><a href=\"\/sv\/cases\/travel\/\">Travel<\/a>\n                        <\/div>\n                        <div class=\"slide__button-wrapper_mob\">\n                            <span class=\"slide__button-text_mob\">Read more<\/span>\n                            <img decoding=\"async\" class=\"slide__button-img_mob\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2021\/12\/arrow-more.svg\" alt=\"\">\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"slide__button-wrapper\">\n                <a href=\"https:\/\/innowise.com\/sv\/case\/it-solutions-for-travel-industry\/\" aria-label=\"Read more about Developing tour operator software\">\n                    <div class=\"arrow-btn3-rel\">\n                        <svg class=\"arrow-btn__svg\"\n                             width=\"110\"\n                             height=\"18\"\n                             viewBox=\"0 0 110 18\"\n                             fill=\"none\"\n                             xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <path d=\"M9 1L17 8.99999L9 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M0 9.00018L17 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M99 1L107 8.99999L99 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M90 9.00018L107 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                        <\/svg>\n                    <\/div>\n                <\/a>\n            <\/div>\n        <\/div>\n        <div class=\"swiper-slide\">\n            <div class=\"swiper-into-e1\">\n                <div class=\"swiper-slide__inner-container\">\n                    <div class=\"block-div-img-rel\">\n                        <a href=\"https:\/\/innowise.com\/sv\/case\/data-management-in-banking\/\" aria-label=\"block_159849\">\n                            <img decoding=\"async\" class=\"slide__img-rel\" \n                             src=\"https:\/\/innowise.com\/wp-content\/uploads\/2024\/05\/Data-lake-development-for-the-banking-industry-tizer.jpg\" alt=\"Data management repository for banking.\">\n                        <\/a>\n                    <\/div>\n                    <div class=\"border-slide-rel\">\n                        <div class=\"swip-title-rel-qe mb-10\" style=\"\">\n                            <a href=\"https:\/\/innowise.com\/sv\/case\/data-management-in-banking\/\" aria-label=\"Data management repository for banking\" >Data management repository for banking<\/a>\n                        <\/div>\n                        <div class=\"swip-array-rel\">\n                            <a href=\"\/sv\/cases\/api\/\">API<\/a><a href=\"\/sv\/cases\/banking\/\">Banking<\/a><a href=\"\/sv\/cases\/business-intelligence\/\">Business intelligence<\/a><a href=\"\/sv\/cases\/dataanalys\/\">Data analytics<\/a><a href=\"\/sv\/cases\/datahantering\/\">Data management (DMS)<\/a><a href=\"\/sv\/cases\/discovery\/\">Discovery<\/a><a href=\"\/sv\/cases\/fintech\/\">FinTech<\/a>\n                        <\/div>\n                        <div class=\"slide__button-wrapper_mob\">\n                            <span class=\"slide__button-text_mob\">Read more<\/span>\n                            <img decoding=\"async\" class=\"slide__button-img_mob\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2021\/12\/arrow-more.svg\" alt=\"\">\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"slide__button-wrapper\">\n                <a href=\"https:\/\/innowise.com\/sv\/case\/data-management-in-banking\/\" aria-label=\"Read more about Data management repository for banking\">\n                    <div class=\"arrow-btn3-rel\">\n                        <svg class=\"arrow-btn__svg\"\n                             width=\"110\"\n                             height=\"18\"\n                             viewBox=\"0 0 110 18\"\n                             fill=\"none\"\n                             xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <path d=\"M9 1L17 8.99999L9 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M0 9.00018L17 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M99 1L107 8.99999L99 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M90 9.00018L107 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                        <\/svg>\n                    <\/div>\n                <\/a>\n            <\/div>\n        <\/div>\n        <div class=\"swiper-slide\">\n            <div class=\"swiper-into-e1\">\n                <div class=\"swiper-slide__inner-container\">\n                    <div class=\"block-div-img-rel\">\n                        <a href=\"https:\/\/innowise.com\/sv\/case\/nft-minting-platform-development\/\" aria-label=\"block_159721\">\n                            <img decoding=\"async\" class=\"slide__img-rel\" \n                             src=\"https:\/\/innowise.com\/wp-content\/uploads\/2024\/04\/space-tizer.png\" alt=\"NFT minting website development.\">\n                        <\/a>\n                    <\/div>\n                    <div class=\"border-slide-rel\">\n                        <div class=\"swip-title-rel-qe mb-10\" style=\"\">\n                            <a href=\"https:\/\/innowise.com\/sv\/case\/nft-minting-platform-development\/\" aria-label=\"NFT minting website development\" >NFT minting website development<\/a>\n                        <\/div>\n                        <div class=\"swip-array-rel\">\n                            <a href=\"\/sv\/cases\/blockkedjeutveckling\/\">Blockchain<\/a><a href=\"\/sv\/cases\/marketplace\/\">Marketplace<\/a><a href=\"\/sv\/cases\/nft\/\">NFT<\/a><a href=\"\/sv\/cases\/node-js\/\">Node.js<\/a><a href=\"\/sv\/cases\/qa\/\">QA<\/a><a href=\"\/sv\/cases\/react\/\">React<\/a><a href=\"\/sv\/cases\/web\/\">Web<\/a>\n                        <\/div>\n                        <div class=\"slide__button-wrapper_mob\">\n                            <span class=\"slide__button-text_mob\">Read more<\/span>\n                            <img decoding=\"async\" class=\"slide__button-img_mob\" src=\"https:\/\/innowise.com\/wp-content\/uploads\/2021\/12\/arrow-more.svg\" alt=\"\">\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            <div class=\"slide__button-wrapper\">\n                <a href=\"https:\/\/innowise.com\/sv\/case\/nft-minting-platform-development\/\" aria-label=\"Read more about NFT minting website development\">\n                    <div class=\"arrow-btn3-rel\">\n                        <svg class=\"arrow-btn__svg\"\n                             width=\"110\"\n                             height=\"18\"\n                             viewBox=\"0 0 110 18\"\n                             fill=\"none\"\n                             xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <path d=\"M9 1L17 8.99999L9 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M0 9.00018L17 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M99 1L107 8.99999L99 17\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                            <path d=\"M90 9.00018L107 9.00018\"\n                                  stroke=\"#C63031\"\n                                  stroke-width=\"2\"\/>\n                        <\/svg>\n                    <\/div>\n                <\/a>\n            <\/div>\n        <\/div>\n                <\/div>\n                \n                <div class=\"swiper-related__navigation\">\n                    <button class=\"swiper-related__navigation-btn\">\n                        <svg width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <g>\n                                <path d=\"M12 4L4 12L12 20\" stroke=\"#2E2E2E\" stroke-width=\"2\"\/>\n                                <path d=\"M21 12.0002L4 12.0002\" stroke=\"#2E2E2E\" stroke-width=\"2\"\/>\n                            <\/g>\n                        <\/svg>\n                    <\/button>\n                \n                    <button class=\"swiper-related__navigation-btn\">\n                        <svg width=\"25\" height=\"24\" viewBox=\"0 0 25 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                            <path d=\"M13 4L21 12L13 20\" stroke=\"#2E2E2E\" stroke-width=\"2\"\/>\n                            <path d=\"M4 12.0002L21 12.0002\" stroke=\"#2E2E2E\" stroke-width=\"2\"\/>\n                        <\/svg>\n                    <\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"cases-swiper-pagination\"><\/div>\n        \n        <script src=\"\/wp-content\/themes\/hello-elementor\/assets\/js\/slb-case.js\"><\/script>  \n        <link rel=\"stylesheet\" href=\"\/wp-content\/themes\/hello-elementor\/assets\/css\/case-slider.css\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9226761 e-flex e-con-boxed e-con e-parent\" data-id=\"9226761\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-aad867b elementor-widget elementor-widget-shortcode\" data-id=\"aad867b\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f100240-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"100240\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/sv\/wp-json\/wp\/v2\/case\/196916#wpcf7-f100240-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" enctype=\"multipart\/form-data\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"100240\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f100240-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/><input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/fieldset>\n<style>\n.mailToContact br:nth-child(2){\ndisplay:none;\n}\n#form-templates .contact__info {\n  background-color: #f4f4f4;\n  padding: 70px 44px 70px 50px;\n  position: relative;\n  max-width: 540px;\n  width: 100%;\nborder: 1px solid #AEB1B7;\n}\n\n#form-templates .contact__info-background {\n  z-index: -1;\n  position: absolute;\n  top: 20px;\n  left: 20px;\n  width: 100%;\n  height: 100%;\n  border: 1px dashed #ef4557;\n}\n\n\n#form-templates .new-container{\ndisplay: flex;\njustify-content: space-between;\nflex-wrap: wrap;\n}\n\n\n#form-templates{\npadding: 100px 15px 100px 15px;        \n}\n\n#form-templates .contact__info-heading {\n  font-family: 'Sora' !important;\n  font-style: normal !important;\n  font-weight: 400 !important;\n  font-size: 36px !important;\n  line-height: 46px !important;\n  color: #2E2E2E !important;\n   margin-bottom: 60px !important;\n\n}\n\n\n#form-templates .message label{\ncolor: #585858 !important;   \n}\n\n.elementor-widget-container.form-template h2,.elementor-widget-container.form-template h1{\n font-size: 60px !important;\n  line-height: 70px !important;\n  font-family: \"Sora\", Sans-serif;\n  font-weight: 400;\n  margin: 0;  \n  margin-bottom: 20px;\n}\n\n\n\n\n.elementor-widget-container.form-template p{\n  font-family: \"Karla\", Sans-serif;\n  font-size: 22px;\n  font-weight: 400;\n  line-height: 28px;\n  color: var( --e-global-color-primary );\n  max-width: 700px;\n  margin: 0; \n  margin-bottom: 40px;\n} \n  \n\n\n.new-container #spinner{\nwidth: 50%;\nmax-width: 700px;\n}\n\n\n#form-templates .new-container #spinner div.contact-us__wrapper:nth-child(6){\ngap:30px; \n    \n}\n\n\n#form-templates .contact__info-heading {\n  margin-bottom: 67px;\n  font-size: 36px;\n  font-family: karla;\n  color:  #2E2E2E;\n\n  line-height: 49px;\n}\n\n#form-templates .contact__info-steps {\n  display: flex;\n  flex-direction: column;\n  max-width: 425x;\n  row-gap: 20px;\n  border-left: 1px solid #2e2e2e;\n}\n\n#form-templates .contact__info-block {\n  position: relative;\n  padding-left: 45px;\n}\n\n#form-templates .contact__info-block:last-child {\n  box-shadow: -1px 0 0 1px #f4f4f4;\n}\n\n#form-templates .contact__info-step {\n  position: absolute;\n  border: 1px solid #2e2e2e;\n  width: 40px;\n  height: 40px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  border-radius: 20px;\n  left: -20px;\n  top: -8px;\n  background-color: #F4F4F4;\n  color:  #2E2E2E;\n\nfont-family: Karla;\nfont-weight: 700;\nfont-size: 18px;\nline-height: 28px;\n\n}\n\n.elementor-widget-global .contact__info-step {\n        color:  #2E2E2E;\n}\n\n#form-templates .contact__info-text {\n  margin: 0;\n  font-size: 16px;\n  line-height: 26px;\n  color: #2E2E2E;\n  font-family: karla;\n\n  width: 100%;\n}\n\n\n#form-templates .contact-us__send{\nflex-shrink: 0;\nmargin-top:0;\n}\n\n\n\n@media screen and (max-width: 1279px) {\n    .new-container #spinner{\n        width: 100%;\n        max-width:100%;\n        margin-bottom:40px;\n    }\n    \n\n    .new-container .contact__info {\n        max-width: 700px !important;\n    }\n    \n}\n\n\n@media screen and (max-width: 1279px) {\n#form-templates{\npadding: 60px 15px 70px 15px;     \n}\n}\n\n\n\n@media screen and (max-width: 767px) {\n\n#form-templates .new-container #spinner div.contact-us__wrapper:nth-child(6){\ngap:20px; \n \n}\n\n\n  #form-templates .contact__info {\n    padding: 20px 20px 40px 40px;\n    margin: 0 auto;\n  }\n\n\n#form-templates{\npadding: 40px 15px 50px 15px;  \n    \n}\n\n  \n   .new-container #spinner{\n       \n    margin-bottom:30px;   \n   }\n   \n   \n   .elementor-widget-container.form-template h2,.elementor-widget-container.form-template h1{\n   font-size: 32px !important;\n    line-height: 42px !important;    \n   }\n   \n   \n   .elementor-widget-container.form-template p{\n       \n    font-size: 16px;\n    line-height: 20px;  \n    margin-bottom: 30px;\n \n       \n   }\n   \n   #form-templates .contact__info-heading{\n   font-size: 24px !important;\n    line-height: 49px !important;    \n       \n   }\n   \n\n.mailToContact{\nmargin-top: 10px !important;        \n}\n\n   \n\n  #form-templates .contact__info-heading {\n    font-size: 24px;\n    margin-bottom: 37px;\n  }\n\n  #form-templates .contact__info-background {\n    top: 10px;\n    left: 10px;\n  }\n\n  #form-templates .contact__info-text {\n    font-size: 12px;\n    line-height: 20px;\n  }\n  \n  \n  #form-templates .contact__info-heading {\n   margin-bottom: 35px !important;\n\n}\n\n}\n\n@media (max-width: 767px) {\n    .mailToContact {\n        max-width: 100%;\n    }\n}\n<\/style>\n\n<script>\nwindow.addEventListener('hashchange',function(e){if(window.history.pushState){window.history.pushState('','\/',window.location.pathname)}else{window.location.hash=''}})\n<\/script>\n\n\n<div id=\"form-templates\">\n<div class=\"elementor-widget-container form-template\">\n<a name=\"contact-form\"><\/a>\n<h2>Contact us<\/h2>\n<p><a id=\"calendlylink\" style=\"color: #c63031; border-bottom: 1px solid #c63031; padding: 0;\">Book a call<\/a> or fill out the form below and we\u2019ll get back to you once we\u2019ve processed your request.<\/p>\n<\/div>\n\n<div class=\"new-container\">\n\n\n<div class=\"contact-us__main\" id=\"spinner\" data-no-defer=\"1\">\n\n<div class=\"contact-us__wrapper\">\n\n<div class=\"name\">\n<label>Name<\/label>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"field_name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required contact-us__name\" id=\"contact-name\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Name*\" value=\"\" type=\"text\" name=\"field_name\" \/><\/span>\n<\/div>\n\n<div class=\"company\">\n<label>Company<\/label>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"company\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required contact-us__company\" id=\"contact-company\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Company*\" value=\"\" type=\"text\" name=\"company\" \/><\/span>\n<\/div>\n\n<\/div>\n\n<div class=\"contact-us__wrapper\">\n\n<div class=\"email\">\n<label>Email<\/label>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email contact-us__email\" id=\"contact-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Corporate email*\" value=\"\" type=\"email\" name=\"email\" \/><\/span>\n<\/div>\n\n<div class=\"phone\">\n<label>Phone<\/label>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"tel\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-tel contact-us__phone\" id=\"contact-phone\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Phone*\" value=\"\" type=\"tel\" name=\"tel\" \/><\/span>\n<\/div>\n\n<\/div>\n<div class=\"contact-us__wrapper subj\">\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-recipient\"><select class=\"wpcf7-form-control wpcf7-select\" id=\"form-field-subj_js\" aria-invalid=\"false\" name=\"your-recipient\"><option value=\"\">Subject*<\/option><option value=\"IT staff augmentation\">IT staff augmentation<\/option><option value=\"Turnkey product development\">Turnkey product development<\/option><option value=\"Support and enhancement\">Support and enhancement<\/option><option value=\"Careers\">Careers<\/option><option value=\"Other\">Other<\/option><\/select><\/span>\n\n<span class=\"wpcf7-form-control-wrap\" data-name=\"form-field-budget_js\"><select class=\"wpcf7-form-control wpcf7-select\" id=\"form-field-budget_js\" aria-invalid=\"false\" name=\"form-field-budget_js\"><option value=\"\">Project budget<\/option><option value=\"Under $15K\">Under $15K<\/option><option value=\"$15K-$30K\">$15K-$30K<\/option><option value=\"$30K-$100K\">$30K-$100K<\/option><option value=\"$100K-$250K\">$100K-$250K<\/option><option value=\"$250K-$500K\">$250K-$500K<\/option><option value=\"More than $500K\">More than $500K<\/option><\/select><\/span>\n\n<\/div>\n\n\n<div class=\"message\">\n<label>Message<\/label>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"message\"><textarea cols=\"40\" rows=\"1\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea wpcf7-validates-as-required contact-us__message\" id=\"contact-message\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Describe your needs in detail*\" name=\"message\"><\/textarea><\/span>\n<\/div>\n\n<div class=\"atvoice-wrap\">\n\n<div class=\"voice-wrap\">\n<span id=\"voice-mut\" class=\"voicetext\">Send us a voice message<\/span>\n         <div class=\"qc_voice_audio_wrapper\">\n            <div class=\"qc_voice_audio_container\">\n                <div class=\"qc_voice_audio_upload_main\" id=\"qc_audio_main\">\n                    <a class=\"qc_audio_record_button\" id=\"qc_audio_record\" href=\"#\" aria-label=\"Record an audio message\">\n                        <span class=\"dashicons dashicons-microphone\"><\/span> \u00a0<\/a> \n                <\/div>\n\n                <div class=\"qc_voice_audio_recorder\" id=\"qc_audio_recorder\" style=\"display:none\">\n\n                <\/div>\n                <div class=\"qc_voice_audio_display\" id=\"qc_audio_display\"  style=\"display:none\">\n                    <audio id=\"qc-audio\" controls src=\"\"><\/audio>\n                    <span title=\"Remove and back to main upload screen.\" class=\"qc_audio_remove_button dashicons dashicons-trash\"><\/span>\n                <\/div>\n            <\/div>\n            <input type=\"hidden\" value=\"\" name=\"qcwpvoicemessage\" id=\"qc_audio_url\" \/>\n        <\/div>\n        \n<\/div>\n\n\n<div class=\"attach-wrap\">\n<span class=\"voicetext\">Attach documents<\/span>\n\n<div class='attachment'>\n\n<div class=\"downloaded\">\n<span><\/span>\n<div class=\"deleteFile\"><\/div>\n<\/div>\n\n<div class=\"attachmentButton\" onclick=\"(function cl(e){if(e.target.nodeName == 'DIV'){e.target.parentNode.children[1].children[0].click(); }})(arguments[0]);\">\n\n<div class=\"innerText\">Upload file<\/div>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"att-files\"><input size=\"40\" class=\"wpcf7-form-control wpcf7-file\" accept=\".jpg,.png,.jpeg,.pdf\" aria-invalid=\"false\" type=\"file\" name=\"att-files\" \/><\/span>\n\n<div class=\"tip\" onclick=\"event.stopPropagation()\">\n<p>You can attach 1 file up to 2MB. Valid file formats: pdf, jpg, jpeg, png.<\/p>\n<\/div>\n\n<\/div>\n\n<\/div>\n\n<\/div>\n\n\n\n<\/div>\n\n<div class=\"contact-us__wrapper\"> \n<p class=\"pp\">By clicking Send, you consent to Innowise processing your personal data per our<a href=\"\/privacy-notice\/\"> Privacy Policy <\/a>to provide you with relevant information. By submitting your phone number, you agree that we may contact you via voice calls, SMS, and messaging apps. Calling, message, and data rates may apply.<\/p>\n\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"scoring_point\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"utmCampaign\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"utmContent\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"utmMedium\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"utmSource\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"utmTerm\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"location\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"city\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"ip\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"Summ\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"gclid\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"rating\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"urlCompany\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"urlWithParams\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"audioMessageLink\" \/>\n<input class=\"wpcf7-form-control wpcf7-submit has-spinner contact-us__send\" id=\"contact-send-button\" type=\"submit\" value=\"Send\" \/>\n<\/div>\n\n<div class='mailToContact'>You can also send us your request <\/br>to <a href=\"mailto:contact@innowise.com\">contact@innowise.com<\/a><\/div>\n\n<\/div>\n\n<div class=\"elementor-widget-container\" style=\"z-index:1;\">\n<div class=\"contact__info\">\n  <div class=\"contact__info-background\"><\/div>\n  <div class=\"contact__info-heading\">What happens next?<\/div>\n  <div class=\"contact__info-steps\">\n\n    <div class=\"contact__info-block\">\n      <div class=\"contact__info-step\">1<\/div>\n      <p class=\"contact__info-text\">Once we\u2019ve received and processed your request, we\u2019ll get back to you to detail your\n        project needs and sign an NDA to ensure confidentiality.<\/p>\n    <\/div>\n\n    <div class=\"contact__info-block\">\n      <div class=\"contact__info-step\">2<\/div>\n      <p class=\"contact__info-text\">After examining your wants, needs, and expectations, our team will devise a project\n        proposal with the scope of work, team size, time, and cost estimates.<\/p>\n    <\/div>\n\n    <div class=\"contact__info-block\">\n      <div class=\"contact__info-step\">3<\/div>\n      <p class=\"contact__info-text\">We\u2019ll arrange a meeting with you to discuss the offer and nail down the details.<\/p>\n    <\/div>\n\n    <div class=\"contact__info-block\">\n      <div class=\"contact__info-step\">4<\/div>\n      <p class=\"contact__info-text\">Finally, we\u2019ll sign a contract and start working on your project right away.<\/p>\n    <\/div>\n  <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\n\n<\/div>\n\n<\/div><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"other_services_container\">[other_services]<\/div><script>\n            jQuery( document ).ready(function($) {\n                if($('[data-elementor-type=\"wp-post\"]').length > 0){\n                    $('[data-elementor-type=\"wp-post\"]').children().last().before($('.other_services_container'));\n                }else{\n                    $('[data-elementor-type=\"wp-page\"]').children().last().before($('.other_services_container'));\n                }\n                \n                var sections = $('[data-elementor-type=\"wp-post\"]').find('.net-15.dt-16');\n                for(var i = 0; i<sections.length; i++){\n                    \n                    if($(sections[i]).hasClass( 'net-15' ) && $(sections[i]).hasClass( 'dt-16' ) && $(sections[i]).hasClass( 'elementor-hidden-desktop' )==false){\n                        $(sections[i]).before($('.other_services_container'));   \n                    }\n                }\n                \n            });\n        <\/script>","protected":false},"excerpt":{"rendered":"<p>Customer portal for managing hosting, VPS, and cloud services Innowise helped Serverplan build a self-service customer portal for managing hosting products, orders, transactions, subscriptions, and account settings via the existing Core API and middleware. Unified hub for hosting &amp; account management Smoother workflows via Core API &amp; middleware integration Schedule a consultation Industry Information technology [&hellip;]<\/p>\n","protected":false},"featured_media":196940,"template":"elementor_header_footer","cases":[747,794,931,839,1048],"class_list":["post-196916","case","type-case","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/innowise.com\/sv\/wp-json\/wp\/v2\/case\/196916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/innowise.com\/sv\/wp-json\/wp\/v2\/case"}],"about":[{"href":"https:\/\/innowise.com\/sv\/wp-json\/wp\/v2\/types\/case"}],"version-history":[{"count":0,"href":"https:\/\/innowise.com\/sv\/wp-json\/wp\/v2\/case\/196916\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/innowise.com\/sv\/wp-json\/wp\/v2\/media\/196940"}],"wp:attachment":[{"href":"https:\/\/innowise.com\/sv\/wp-json\/wp\/v2\/media?parent=196916"}],"wp:term":[{"taxonomy":"cases","embeddable":true,"href":"https:\/\/innowise.com\/sv\/wp-json\/wp\/v2\/cases?post=196916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}