jQuery(function($) { function closeAllOffCanvas(exceptID = null) { let anyOpen = false; // Track if another Off-Canvas remains open $(".e-off-canvas").each(function() { let canvasID = $(this).attr("id"); if (!exceptID || canvasID !== exceptID) { $(this).removeClass("e-off-canvas-visible") .addClass("e-off-canvas-hidden") .attr("aria-hidden", "true") .css({ "z-index": "10", "visibility": "hidden", "opacity": "0" }); // Full removal delay set to 0ms setTimeout(() => { if ($(this).attr("aria-hidden") === "true") { $(this).css("display", "none"); } }, 0); } else { anyOpen = true; // At least one Off-Canvas is still open } }); } function openOffCanvas(targetID) { let targetCanvas = $(targetID); if (targetCanvas.length) { // Close all others EXCEPT the one we're opening closeAllOffCanvas(targetID); // Open immediately with delay set to 0ms setTimeout(() => { targetCanvas.removeClass("e-off-canvas-hidden") .addClass("e-off-canvas-visible") .attr("aria-hidden", "false") .css({ "z-index": "9999", "visibility": "visible", "opacity": "1", "display": "block" }); // Ensure the White Background Stays Visible $("body").addClass("off-canvas-active"); // Force repaint after opening forceRepaint(); }, 0); } } // Decode Base64 function decodeBase64(str) { try { return atob(str); } catch (e) { return null; } } // Handle Elementor Off-Canvas OPEN clicks $(document).on('click', '[href*="elementor-action%3Aaction%3Doff_canvas%3Aopen"]', function(event) { event.preventDefault(); let href = decodeURIComponent($(this).attr("href")); let base64Match = href.match(/settings=([^&]+)/); if (base64Match) { let decodedSettings = decodeBase64(base64Match[1]); try { let settingsObj = JSON.parse(decodedSettings); if (settingsObj.id) { let offCanvasID = "#off-canvas-" + settingsObj.id; openOffCanvas(offCanvasID); } } catch (e) {} } }); // Handle Elementor Off-Canvas CLOSE clicks $(document).on('click', '[href*="elementor-action%3Aaction%3Doff_canvas%3Aclose"]', function(event) { event.preventDefault(); closeAllOffCanvas(); }); // Ensure all Off-Canvas elements start hidden (ONLY if NOT in Elementor Editor) function initializeOffCanvasVisibility() { // Check if the body does NOT have the Elementor edit mode class if (!$('body').hasClass('elementor-element-edit-mode')) { $(".e-off-canvas").each(function() { $(this).attr("aria-hidden", "true").css({ "z-index": "10", "visibility": "hidden", "opacity": "0", "display": "none" }); }); } } // Call the initialization function $(window).on('load', initializeOffCanvasVisibility); // Utility function to force repaint function forceRepaint() { if ($('body').length) { $('body')[0].style.display = 'none'; $('body')[0].offsetHeight; $('body')[0].style.display = ''; } } });

About Us

About Us

Pioneering Integrated Energy Management Solutions

Pioneering Integrated Energy Management Solutions

Jouvoli was started in 2023 to address a critical gap in the renewable energy market. Despite significant investments in solar panels, battery storage systems, and EV charging infrastructure, our founder discovered there was no effective way to monitor and optimize these interconnected systems.

"Our business wasn't born from a desire to start something new, but from frustration with an unsolved problem. The solution we developed for ourselves proved so effective that sharing it with others became our mission."

"Our business wasn't born from a desire to start something new, but from frustration with an unsolved problem. The solution we developed for ourselves proved so effective that sharing it with others became our mission."

Our Solution

We developed a comprehensive energy management platform that:

  • Provides real-time visibility into energy production and consumption
  • Optimizes energy storage, usage, and grid export
  • Integrates environmental monitoring (air quality, temperature, humidity)
  • Incorporates security features (motion detection, access monitoring, flood alerts)

Strategic Growth

What began as a residential solution quickly expanded to meet commercial demand. By mid-2024, Jouvoli had attracted attention from industrial facilities seeking energy management at scale. Our platform’s sophisticated analytics and user-friendly interface proved ideal for large-scale applications.

In late 2024, we established operations in Morocco, strategically positioning ourselves in a nation committed to renewable energy development. This expansion has enabled:

  • Partnerships with leading steel and ammonia manufacturers
  • Research collaborations with Moroccan universities
  • Workforce growth to over 40 full-time employees in our MA offices
Created with Lunacy

Hahn Software

Since its founding in 2017 (headquarters in Maxhütte-Haidhof), Hahn Software has developed into a German “Hidden Champion” for digital solutions.

We strengthen your industry with our state-of-the-art software solutions, where industry knowledge meets technical finesse to revolutionize your operational efficiency.

Our team of 120+ engineers delivers innovative solutions from our offices in Germany, Autria and Morocco that transform businesses.

EN