diff --git a/src/DashboardLeaf.py b/dashboard_leaf/DashboardLeaf.py
similarity index 84%
rename from src/DashboardLeaf.py
rename to dashboard_leaf/DashboardLeaf.py
index 0da8f586fcc2d0b1bd67555812bea41f715538fa..ac2aecbffd9cd2361ad6e3914baaa6fd3c6bcb99 100644
--- a/src/DashboardLeaf.py
+++ b/dashboard_leaf/DashboardLeaf.py
@@ -5,12 +5,12 @@ from TheCodeLabs_FlaskUtils.FlaskBaseApp import FlaskBaseApp
 from flask import Flask
 from flask_socketio import SocketIO
 
-from blueprints import Routes
-from logic import Constants
-from logic.Constants import CONFIG_DIR
-from logic.page.PageManager import PageManager
-from logic.service.ServiceRegistry import ServiceRegistry
-from logic.tile.TileScheduler import TileScheduler
+from dashboard_leaf.blueprints import Routes
+from dashboard_leaf.logic import Constants
+from dashboard_leaf.logic.Constants import CONFIG_DIR
+from dashboard_leaf.logic.page.PageManager import PageManager
+from dashboard_leaf.logic.service.ServiceRegistry import ServiceRegistry
+from dashboard_leaf.logic.tile.TileScheduler import TileScheduler
 
 LOGGER = DefaultLogger().create_logger_if_not_exists(Constants.APP_NAME)
 
diff --git a/src/__init__.py b/dashboard_leaf/__init__.py
similarity index 100%
rename from src/__init__.py
rename to dashboard_leaf/__init__.py
diff --git a/src/blueprints/Routes.py b/dashboard_leaf/blueprints/Routes.py
similarity index 100%
rename from src/blueprints/Routes.py
rename to dashboard_leaf/blueprints/Routes.py
diff --git a/src/blueprints/__init__.py b/dashboard_leaf/blueprints/__init__.py
similarity index 100%
rename from src/blueprints/__init__.py
rename to dashboard_leaf/blueprints/__init__.py
diff --git a/src/logic/Constants.py b/dashboard_leaf/logic/Constants.py
similarity index 100%
rename from src/logic/Constants.py
rename to dashboard_leaf/logic/Constants.py
diff --git a/src/logic/Helpers.py b/dashboard_leaf/logic/Helpers.py
similarity index 98%
rename from src/logic/Helpers.py
rename to dashboard_leaf/logic/Helpers.py
index f5a10108e021d4557278fd57c4551d1fbacd779f..c55346d6f900c74ab3ac3e7a477500cd883d234f 100644
--- a/src/logic/Helpers.py
+++ b/dashboard_leaf/logic/Helpers.py
@@ -4,7 +4,7 @@ from datetime import datetime
 import pytz
 import requests
 
-from logic import Constants
+from dashboard_leaf.logic import Constants
 
 
 def join_url_parts(*args: str) -> str:
diff --git a/src/logic/Registry.py b/dashboard_leaf/logic/Registry.py
similarity index 97%
rename from src/logic/Registry.py
rename to dashboard_leaf/logic/Registry.py
index 1eadd4fa2a1e0bbd4c819fb037be62cb18f20d5c..26985b4afd31a34c2948c05dde89b26a285fe84b 100644
--- a/src/logic/Registry.py
+++ b/dashboard_leaf/logic/Registry.py
@@ -4,7 +4,7 @@ import pkgutil
 from abc import ABC, abstractmethod
 from typing import List, Type
 
-from logic import Constants
+from dashboard_leaf.logic import Constants
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/__init__.py b/dashboard_leaf/logic/__init__.py
similarity index 100%
rename from src/logic/__init__.py
rename to dashboard_leaf/logic/__init__.py
diff --git a/src/logic/display/Image.py b/dashboard_leaf/logic/display/Image.py
similarity index 100%
rename from src/logic/display/Image.py
rename to dashboard_leaf/logic/display/Image.py
diff --git a/src/logic/display/__init__.py b/dashboard_leaf/logic/display/__init__.py
similarity index 100%
rename from src/logic/display/__init__.py
rename to dashboard_leaf/logic/display/__init__.py
diff --git a/src/logic/page/PageInstance.py b/dashboard_leaf/logic/page/PageInstance.py
similarity index 100%
rename from src/logic/page/PageInstance.py
rename to dashboard_leaf/logic/page/PageInstance.py
diff --git a/src/logic/page/PageManager.py b/dashboard_leaf/logic/page/PageManager.py
similarity index 93%
rename from src/logic/page/PageManager.py
rename to dashboard_leaf/logic/page/PageManager.py
index 4af11208e36e11f02dd95639f2248d66c5f6eb00..ae76916635d364724125239f2fb36fbbd5063b31 100644
--- a/src/logic/page/PageManager.py
+++ b/dashboard_leaf/logic/page/PageManager.py
@@ -5,10 +5,10 @@ from typing import List, Dict
 
 from flask import Flask
 
-from logic import Constants
-from logic.page.PageInstance import PageInstance, TileLayoutSettings
-from logic.tile import TileScheduler
-from logic.tile.TileRegistry import TileRegistry
+from dashboard_leaf.logic import Constants
+from dashboard_leaf.logic.page.PageInstance import PageInstance, TileLayoutSettings
+from dashboard_leaf.logic.tile import TileScheduler
+from dashboard_leaf.logic.tile.TileRegistry import TileRegistry
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/page/__init__.py b/dashboard_leaf/logic/page/__init__.py
similarity index 100%
rename from src/logic/page/__init__.py
rename to dashboard_leaf/logic/page/__init__.py
diff --git a/src/logic/service/ServiceManager.py b/dashboard_leaf/logic/service/ServiceManager.py
similarity index 92%
rename from src/logic/service/ServiceManager.py
rename to dashboard_leaf/logic/service/ServiceManager.py
index 7652386e1e5ef7af813c128df6afbf58caaefe35..1a27477a79045112def3d95d70a0145dfc361807 100644
--- a/src/logic/service/ServiceManager.py
+++ b/dashboard_leaf/logic/service/ServiceManager.py
@@ -5,8 +5,8 @@ from typing import List, Dict
 
 from TheCodeLabs_BaseUtils.MultiCacheKeyService import MultiCacheKeyService
 
-from logic import Constants
-from logic.service.ServiceRegistry import ServiceRegistry
+from dashboard_leaf.logic import Constants
+from dashboard_leaf.logic.service.ServiceRegistry import ServiceRegistry
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/service/ServiceRegistry.py b/dashboard_leaf/logic/service/ServiceRegistry.py
similarity index 90%
rename from src/logic/service/ServiceRegistry.py
rename to dashboard_leaf/logic/service/ServiceRegistry.py
index 21e9d44071a0c5616757d84a6ea706d13abbabb0..86e536bd7f61b063061c041a239b416ffd418d93 100644
--- a/src/logic/service/ServiceRegistry.py
+++ b/dashboard_leaf/logic/service/ServiceRegistry.py
@@ -5,8 +5,8 @@ from typing import Type
 
 from TheCodeLabs_BaseUtils.MultiCacheKeyService import MultiCacheKeyService
 
-from logic import Constants
-from logic.Registry import Registry
+from dashboard_leaf.logic import Constants
+from dashboard_leaf.logic.Registry import Registry
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/service/__init__.py b/dashboard_leaf/logic/service/__init__.py
similarity index 100%
rename from src/logic/service/__init__.py
rename to dashboard_leaf/logic/service/__init__.py
diff --git a/src/logic/service/services/IcsService.py b/dashboard_leaf/logic/service/services/IcsService.py
similarity index 100%
rename from src/logic/service/services/IcsService.py
rename to dashboard_leaf/logic/service/services/IcsService.py
diff --git a/src/logic/service/services/JsonService.py b/dashboard_leaf/logic/service/services/JsonService.py
similarity index 100%
rename from src/logic/service/services/JsonService.py
rename to dashboard_leaf/logic/service/services/JsonService.py
diff --git a/src/logic/service/services/StorageLeafService.py b/dashboard_leaf/logic/service/services/StorageLeafService.py
similarity index 98%
rename from src/logic/service/services/StorageLeafService.py
rename to dashboard_leaf/logic/service/services/StorageLeafService.py
index feb537fad1d94501c3c24ab6c5ea5297c3392994..73692503c72d1ff3d4a607d22d56fba15e189aa2 100644
--- a/src/logic/service/services/StorageLeafService.py
+++ b/dashboard_leaf/logic/service/services/StorageLeafService.py
@@ -4,7 +4,7 @@ from typing import Dict
 import requests
 from TheCodeLabs_BaseUtils.MultiCacheKeyService import MultiCacheKeyService
 
-from logic import Helpers
+from dashboard_leaf.logic import Helpers
 
 
 class StorageLeafService(MultiCacheKeyService):
diff --git a/src/logic/service/services/WeatherService.py b/dashboard_leaf/logic/service/services/WeatherService.py
similarity index 100%
rename from src/logic/service/services/WeatherService.py
rename to dashboard_leaf/logic/service/services/WeatherService.py
diff --git a/src/logic/service/services/__init__.py b/dashboard_leaf/logic/service/services/__init__.py
similarity index 100%
rename from src/logic/service/services/__init__.py
rename to dashboard_leaf/logic/service/services/__init__.py
diff --git a/src/logic/tile/Tile.py b/dashboard_leaf/logic/tile/Tile.py
similarity index 100%
rename from src/logic/tile/Tile.py
rename to dashboard_leaf/logic/tile/Tile.py
diff --git a/src/logic/tile/TileRegistry.py b/dashboard_leaf/logic/tile/TileRegistry.py
similarity index 89%
rename from src/logic/tile/TileRegistry.py
rename to dashboard_leaf/logic/tile/TileRegistry.py
index c043d4e45ba4a90b2b4d57fe7160f4f37b1b7922..845df43b6fc4663df444798f4277e69151e30ce4 100644
--- a/src/logic/tile/TileRegistry.py
+++ b/dashboard_leaf/logic/tile/TileRegistry.py
@@ -3,9 +3,9 @@ from __future__ import annotations
 import logging
 from typing import Type
 
-from logic import Constants
-from logic.Registry import Registry
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Constants
+from dashboard_leaf.logic.Registry import Registry
+from dashboard_leaf.logic.tile.Tile import Tile
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/tile/TileScheduler.py b/dashboard_leaf/logic/tile/TileScheduler.py
similarity index 97%
rename from src/logic/tile/TileScheduler.py
rename to dashboard_leaf/logic/tile/TileScheduler.py
index 0474da5314d79606b87a7ffd27a633f0c735c00e..6341104e1d7830a00443294423f2f5a39d33a52e 100644
--- a/src/logic/tile/TileScheduler.py
+++ b/dashboard_leaf/logic/tile/TileScheduler.py
@@ -7,8 +7,8 @@ from apscheduler.events import EVENT_JOB_EXECUTED, EVENT_JOB_ERROR
 from apscheduler.job import Job
 from apscheduler.schedulers.gevent import GeventScheduler
 
-from logic import Constants
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Constants
+from dashboard_leaf.logic.tile.Tile import Tile
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/tile/__init__.py b/dashboard_leaf/logic/tile/__init__.py
similarity index 100%
rename from src/logic/tile/__init__.py
rename to dashboard_leaf/logic/tile/__init__.py
diff --git a/src/logic/tile/tiles/BoardGameTile.html b/dashboard_leaf/logic/tile/tiles/BoardGameTile.html
similarity index 100%
rename from src/logic/tile/tiles/BoardGameTile.html
rename to dashboard_leaf/logic/tile/tiles/BoardGameTile.html
diff --git a/src/logic/tile/tiles/BoardGameTile.py b/dashboard_leaf/logic/tile/tiles/BoardGameTile.py
similarity index 94%
rename from src/logic/tile/tiles/BoardGameTile.py
rename to dashboard_leaf/logic/tile/tiles/BoardGameTile.py
index b8899498a87ff4fdae92525d431f45141deaf0db..f3ba03427cddd8785804d63b3bd1d686a5c2dd8b 100644
--- a/src/logic/tile/tiles/BoardGameTile.py
+++ b/dashboard_leaf/logic/tile/tiles/BoardGameTile.py
@@ -4,8 +4,8 @@ from typing import Dict
 
 from flask import Blueprint
 
-from logic.service.ServiceManager import ServiceManager
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class BoardGameTile(Tile):
diff --git a/src/logic/tile/tiles/ClockTile.html b/dashboard_leaf/logic/tile/tiles/ClockTile.html
similarity index 100%
rename from src/logic/tile/tiles/ClockTile.html
rename to dashboard_leaf/logic/tile/tiles/ClockTile.html
diff --git a/src/logic/tile/tiles/ClockTile.py b/dashboard_leaf/logic/tile/tiles/ClockTile.py
similarity index 94%
rename from src/logic/tile/tiles/ClockTile.py
rename to dashboard_leaf/logic/tile/tiles/ClockTile.py
index a08534baaba42e3a6ef0940b54330d5c38a7d636..0e3739549137432cf74cbf8eda8c6b71a52c0aa7 100644
--- a/src/logic/tile/tiles/ClockTile.py
+++ b/dashboard_leaf/logic/tile/tiles/ClockTile.py
@@ -4,7 +4,7 @@ from typing import Dict
 
 from flask import Blueprint
 
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class ClockTile(Tile):
diff --git a/src/logic/tile/tiles/CurrentWeatherTile.html b/dashboard_leaf/logic/tile/tiles/CurrentWeatherTile.html
similarity index 100%
rename from src/logic/tile/tiles/CurrentWeatherTile.html
rename to dashboard_leaf/logic/tile/tiles/CurrentWeatherTile.html
diff --git a/src/logic/tile/tiles/CurrentWeatherTile.py b/dashboard_leaf/logic/tile/tiles/CurrentWeatherTile.py
similarity index 94%
rename from src/logic/tile/tiles/CurrentWeatherTile.py
rename to dashboard_leaf/logic/tile/tiles/CurrentWeatherTile.py
index 162aec6f042973a445643624afc4e9d1229c77f8..9b5036c697fddcdc6b5b577a06e81dd032eca0ac 100644
--- a/src/logic/tile/tiles/CurrentWeatherTile.py
+++ b/dashboard_leaf/logic/tile/tiles/CurrentWeatherTile.py
@@ -5,9 +5,9 @@ from typing import Dict
 import pytz
 from flask import Blueprint
 
-from logic import Helpers
-from logic.service.ServiceManager import ServiceManager
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Helpers
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class CurrentWeatherTile(Tile):
diff --git a/src/logic/tile/tiles/GarbageContainerScheduleTile.html b/dashboard_leaf/logic/tile/tiles/GarbageContainerScheduleTile.html
similarity index 100%
rename from src/logic/tile/tiles/GarbageContainerScheduleTile.html
rename to dashboard_leaf/logic/tile/tiles/GarbageContainerScheduleTile.html
diff --git a/src/logic/tile/tiles/GarbageContainerScheduleTile.py b/dashboard_leaf/logic/tile/tiles/GarbageContainerScheduleTile.py
similarity index 94%
rename from src/logic/tile/tiles/GarbageContainerScheduleTile.py
rename to dashboard_leaf/logic/tile/tiles/GarbageContainerScheduleTile.py
index 9f086a67802b3b54e09d2b9d5312929e684ea727..d2e3ce2edf1980154bab8995388024b36f0d71c0 100644
--- a/src/logic/tile/tiles/GarbageContainerScheduleTile.py
+++ b/dashboard_leaf/logic/tile/tiles/GarbageContainerScheduleTile.py
@@ -5,10 +5,10 @@ from typing import Dict, List
 from flask import Blueprint
 from babel.dates import format_date
 
-from logic import Helpers
-from logic.service.ServiceManager import ServiceManager
-from logic.service.services.IcsService import CalendarEvent
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Helpers
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.service.services.IcsService import CalendarEvent
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class GarbageContainerScheduleTile(Tile):
diff --git a/src/logic/tile/tiles/HourlyForecastTile.html b/dashboard_leaf/logic/tile/tiles/HourlyForecastTile.html
similarity index 100%
rename from src/logic/tile/tiles/HourlyForecastTile.html
rename to dashboard_leaf/logic/tile/tiles/HourlyForecastTile.html
diff --git a/src/logic/tile/tiles/HourlyForecastTile.py b/dashboard_leaf/logic/tile/tiles/HourlyForecastTile.py
similarity index 94%
rename from src/logic/tile/tiles/HourlyForecastTile.py
rename to dashboard_leaf/logic/tile/tiles/HourlyForecastTile.py
index 864e6a7ef7bc3afc06661e819543c70fa067fde2..2736ae4dba763614fff5cd225d50a855fc739f0a 100644
--- a/src/logic/tile/tiles/HourlyForecastTile.py
+++ b/dashboard_leaf/logic/tile/tiles/HourlyForecastTile.py
@@ -1,13 +1,12 @@
 import os
-from datetime import datetime
 from typing import Dict
 
 import pytz
 from flask import Blueprint
 
-from logic import Helpers
-from logic.service.ServiceManager import ServiceManager
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Helpers
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class HourlyForecastTile(Tile):
diff --git a/src/logic/tile/tiles/SensorLineChartTile.html b/dashboard_leaf/logic/tile/tiles/SensorLineChartTile.html
similarity index 100%
rename from src/logic/tile/tiles/SensorLineChartTile.html
rename to dashboard_leaf/logic/tile/tiles/SensorLineChartTile.html
diff --git a/src/logic/tile/tiles/SensorLineChartTile.py b/dashboard_leaf/logic/tile/tiles/SensorLineChartTile.py
similarity index 98%
rename from src/logic/tile/tiles/SensorLineChartTile.py
rename to dashboard_leaf/logic/tile/tiles/SensorLineChartTile.py
index 68845aa8b7331655ba9da21db585fc20238f8bdb..3fe88e790fc96468b8f7db805d23defdcfb62ae8 100644
--- a/src/logic/tile/tiles/SensorLineChartTile.py
+++ b/dashboard_leaf/logic/tile/tiles/SensorLineChartTile.py
@@ -9,9 +9,9 @@ from timeago import format
 from TheCodeLabs_BaseUtils.MultiCacheKeyService import MultiCacheKeyService
 from flask import Blueprint
 
-from logic import Constants, Helpers
-from logic.service.ServiceManager import ServiceManager
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Constants, Helpers
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.tile.Tile import Tile
 
 LOGGER = logging.getLogger(Constants.APP_NAME)
 
diff --git a/src/logic/tile/tiles/SevenDaysForecastTile.html b/dashboard_leaf/logic/tile/tiles/SevenDaysForecastTile.html
similarity index 100%
rename from src/logic/tile/tiles/SevenDaysForecastTile.html
rename to dashboard_leaf/logic/tile/tiles/SevenDaysForecastTile.html
diff --git a/src/logic/tile/tiles/SevenDaysForecastTile.py b/dashboard_leaf/logic/tile/tiles/SevenDaysForecastTile.py
similarity index 93%
rename from src/logic/tile/tiles/SevenDaysForecastTile.py
rename to dashboard_leaf/logic/tile/tiles/SevenDaysForecastTile.py
index 07060c61d9aba07d9d64e1c9e6e4da202b6e1f5e..0e59fabacf70877c9c714176f4d7ec8d2da9eb8f 100644
--- a/src/logic/tile/tiles/SevenDaysForecastTile.py
+++ b/dashboard_leaf/logic/tile/tiles/SevenDaysForecastTile.py
@@ -5,9 +5,9 @@ from typing import Dict
 
 from flask import Blueprint
 
-from logic import Helpers
-from logic.service.ServiceManager import ServiceManager
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic import Helpers
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class SevenDaysForecastTile(Tile):
diff --git a/src/logic/tile/tiles/SimpleSensorValueTile.html b/dashboard_leaf/logic/tile/tiles/SimpleSensorValueTile.html
similarity index 100%
rename from src/logic/tile/tiles/SimpleSensorValueTile.html
rename to dashboard_leaf/logic/tile/tiles/SimpleSensorValueTile.html
diff --git a/src/logic/tile/tiles/SimpleSensorValueTile.py b/dashboard_leaf/logic/tile/tiles/SimpleSensorValueTile.py
similarity index 90%
rename from src/logic/tile/tiles/SimpleSensorValueTile.py
rename to dashboard_leaf/logic/tile/tiles/SimpleSensorValueTile.py
index 3d2321118c6c4c1be658eb94287c2d43afeebf24..6b8d600f71d68a02a7e5a99163ebe18943af5398 100644
--- a/src/logic/tile/tiles/SimpleSensorValueTile.py
+++ b/dashboard_leaf/logic/tile/tiles/SimpleSensorValueTile.py
@@ -3,8 +3,8 @@ from typing import Dict
 
 from flask import Blueprint
 
-from logic.service.ServiceManager import ServiceManager
-from logic.tile.Tile import Tile
+from dashboard_leaf.logic.service.ServiceManager import ServiceManager
+from dashboard_leaf.logic.tile.Tile import Tile
 
 
 class SimpleSensorValueTile(Tile):
diff --git a/src/logic/tile/tiles/__init__.py b/dashboard_leaf/logic/tile/tiles/__init__.py
similarity index 100%
rename from src/logic/tile/tiles/__init__.py
rename to dashboard_leaf/logic/tile/tiles/__init__.py
diff --git a/src/static/css/libs/gridstack.min.css b/dashboard_leaf/static/css/libs/gridstack.min.css
similarity index 100%
rename from src/static/css/libs/gridstack.min.css
rename to dashboard_leaf/static/css/libs/gridstack.min.css
diff --git a/src/static/css/libs/weather-icons-wind.min.css b/dashboard_leaf/static/css/libs/weather-icons-wind.min.css
similarity index 100%
rename from src/static/css/libs/weather-icons-wind.min.css
rename to dashboard_leaf/static/css/libs/weather-icons-wind.min.css
diff --git a/src/static/css/libs/weather-icons.min.css b/dashboard_leaf/static/css/libs/weather-icons.min.css
similarity index 100%
rename from src/static/css/libs/weather-icons.min.css
rename to dashboard_leaf/static/css/libs/weather-icons.min.css
diff --git a/src/static/css/main.css b/dashboard_leaf/static/css/main.css
similarity index 100%
rename from src/static/css/main.css
rename to dashboard_leaf/static/css/main.css
diff --git a/src/static/favicon.ico b/dashboard_leaf/static/favicon.ico
similarity index 100%
rename from src/static/favicon.ico
rename to dashboard_leaf/static/favicon.ico
diff --git a/src/static/fonts/Roboto-Bold-webfont.ttf b/dashboard_leaf/static/fonts/Roboto-Bold-webfont.ttf
similarity index 100%
rename from src/static/fonts/Roboto-Bold-webfont.ttf
rename to dashboard_leaf/static/fonts/Roboto-Bold-webfont.ttf
diff --git a/src/static/fonts/Roboto-Bold-webfont.woff b/dashboard_leaf/static/fonts/Roboto-Bold-webfont.woff
similarity index 100%
rename from src/static/fonts/Roboto-Bold-webfont.woff
rename to dashboard_leaf/static/fonts/Roboto-Bold-webfont.woff
diff --git a/src/static/fonts/Roboto-Regular-webfont.ttf b/dashboard_leaf/static/fonts/Roboto-Regular-webfont.ttf
similarity index 100%
rename from src/static/fonts/Roboto-Regular-webfont.ttf
rename to dashboard_leaf/static/fonts/Roboto-Regular-webfont.ttf
diff --git a/src/static/fonts/Roboto-Regular-webfont.woff b/dashboard_leaf/static/fonts/Roboto-Regular-webfont.woff
similarity index 100%
rename from src/static/fonts/Roboto-Regular-webfont.woff
rename to dashboard_leaf/static/fonts/Roboto-Regular-webfont.woff
diff --git a/src/static/fonts/weathericons-regular-webfont.eot b/dashboard_leaf/static/fonts/weathericons-regular-webfont.eot
similarity index 100%
rename from src/static/fonts/weathericons-regular-webfont.eot
rename to dashboard_leaf/static/fonts/weathericons-regular-webfont.eot
diff --git a/src/static/fonts/weathericons-regular-webfont.svg b/dashboard_leaf/static/fonts/weathericons-regular-webfont.svg
similarity index 100%
rename from src/static/fonts/weathericons-regular-webfont.svg
rename to dashboard_leaf/static/fonts/weathericons-regular-webfont.svg
diff --git a/src/static/fonts/weathericons-regular-webfont.ttf b/dashboard_leaf/static/fonts/weathericons-regular-webfont.ttf
similarity index 100%
rename from src/static/fonts/weathericons-regular-webfont.ttf
rename to dashboard_leaf/static/fonts/weathericons-regular-webfont.ttf
diff --git a/src/static/fonts/weathericons-regular-webfont.woff b/dashboard_leaf/static/fonts/weathericons-regular-webfont.woff
similarity index 100%
rename from src/static/fonts/weathericons-regular-webfont.woff
rename to dashboard_leaf/static/fonts/weathericons-regular-webfont.woff
diff --git a/src/static/fonts/weathericons-regular-webfont.woff2 b/dashboard_leaf/static/fonts/weathericons-regular-webfont.woff2
similarity index 100%
rename from src/static/fonts/weathericons-regular-webfont.woff2
rename to dashboard_leaf/static/fonts/weathericons-regular-webfont.woff2
diff --git a/src/static/images/garbage_bio.png b/dashboard_leaf/static/images/garbage_bio.png
similarity index 100%
rename from src/static/images/garbage_bio.png
rename to dashboard_leaf/static/images/garbage_bio.png
diff --git a/src/static/images/garbage_paper.png b/dashboard_leaf/static/images/garbage_paper.png
similarity index 100%
rename from src/static/images/garbage_paper.png
rename to dashboard_leaf/static/images/garbage_paper.png
diff --git a/src/static/images/garbage_plastic.png b/dashboard_leaf/static/images/garbage_plastic.png
similarity index 100%
rename from src/static/images/garbage_plastic.png
rename to dashboard_leaf/static/images/garbage_plastic.png
diff --git a/src/static/images/garbage_waste.png b/dashboard_leaf/static/images/garbage_waste.png
similarity index 100%
rename from src/static/images/garbage_waste.png
rename to dashboard_leaf/static/images/garbage_waste.png
diff --git a/src/static/js/libs/gridstack.min.js b/dashboard_leaf/static/js/libs/gridstack.min.js
similarity index 100%
rename from src/static/js/libs/gridstack.min.js
rename to dashboard_leaf/static/js/libs/gridstack.min.js
diff --git a/src/static/js/libs/plotly.locale.de.min.js b/dashboard_leaf/static/js/libs/plotly.locale.de.min.js
similarity index 100%
rename from src/static/js/libs/plotly.locale.de.min.js
rename to dashboard_leaf/static/js/libs/plotly.locale.de.min.js
diff --git a/src/static/js/libs/plotly.min.js b/dashboard_leaf/static/js/libs/plotly.min.js
similarity index 100%
rename from src/static/js/libs/plotly.min.js
rename to dashboard_leaf/static/js/libs/plotly.min.js
diff --git a/src/static/js/libs/socket.io.min.js b/dashboard_leaf/static/js/libs/socket.io.min.js
similarity index 100%
rename from src/static/js/libs/socket.io.min.js
rename to dashboard_leaf/static/js/libs/socket.io.min.js
diff --git a/src/static/js/main.js b/dashboard_leaf/static/js/main.js
similarity index 100%
rename from src/static/js/main.js
rename to dashboard_leaf/static/js/main.js
diff --git a/src/static/touch_icon.png b/dashboard_leaf/static/touch_icon.png
similarity index 100%
rename from src/static/touch_icon.png
rename to dashboard_leaf/static/touch_icon.png
diff --git a/src/templates/index.html b/dashboard_leaf/templates/index.html
similarity index 100%
rename from src/templates/index.html
rename to dashboard_leaf/templates/index.html
diff --git a/src/templates/macros.html b/dashboard_leaf/templates/macros.html
similarity index 100%
rename from src/templates/macros.html
rename to dashboard_leaf/templates/macros.html
diff --git a/src/templates/page.html b/dashboard_leaf/templates/page.html
similarity index 100%
rename from src/templates/page.html
rename to dashboard_leaf/templates/page.html
diff --git a/src/version.json b/dashboard_leaf/version.json
similarity index 100%
rename from src/version.json
rename to dashboard_leaf/version.json
diff --git a/test/__init__.py b/test/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/test/logic/TestHelpers.py b/test/logic/TestHelpers.py
index e04e8501eaabe47959f0a9bb95fb487b236eb98f..3d93069c01b74a9c523373db943aaff39f1cb025 100644
--- a/test/logic/TestHelpers.py
+++ b/test/logic/TestHelpers.py
@@ -3,7 +3,7 @@ from datetime import datetime
 
 import pytz
 
-from logic import Helpers
+from dashboard_leaf.logic import Helpers
 
 
 class TestHelpers(unittest.TestCase):
diff --git a/test/logic/__init__.py b/test/logic/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/test/logic/tile/__init__.py b/test/logic/tile/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/test/logic/tile/tiles/TestGarbageContainerScheduleTile.py b/test/logic/tile/tiles/TestGarbageContainerScheduleTile.py
index 51fea3583c415b874de92fb0e68eff366338399a..ff2cad117a1df886659ebe64a31fe0b4db20595b 100644
--- a/test/logic/tile/tiles/TestGarbageContainerScheduleTile.py
+++ b/test/logic/tile/tiles/TestGarbageContainerScheduleTile.py
@@ -1,8 +1,8 @@
 from datetime import datetime
 from unittest import mock
 
-from logic import Helpers
-from logic.tile.tiles.GarbageContainerScheduleTile import GarbageContainerScheduleTile
+from dashboard_leaf.logic import Helpers
+from dashboard_leaf.logic.tile.tiles.GarbageContainerScheduleTile import GarbageContainerScheduleTile
 
 
 def example_settings(enableNotifications):
@@ -41,21 +41,21 @@ class TestIsAlreadyNotified:
 
 
 class TestSendNotification:
-    @mock.patch('logic.tile.tiles.GarbageContainerScheduleTile.Helpers')
+    @mock.patch('dashboard_leaf.logic.tile.tiles.GarbageContainerScheduleTile.Helpers')
     def test_notification_disabled_should_do_nothing(self, helpersMock):
         tile = GarbageContainerScheduleTile('myGarbageScheduleTile', example_settings(False), 10)
 
         tile._send_notification(1, '')
         helpersMock.send_notification_via_pushbullet.assert_not_called()
 
-    @mock.patch('logic.tile.tiles.GarbageContainerScheduleTile.Helpers')
+    @mock.patch('dashboard_leaf.logic.tile.tiles.GarbageContainerScheduleTile.Helpers')
     def test_notification_enabled_reaming_days_greater_than_settings_should_do_nothing(self, helpersMock):
         tile = GarbageContainerScheduleTile('myGarbageScheduleTile', example_settings(True), 10)
 
         tile._send_notification(3, '')
         helpersMock.send_notification_via_pushbullet.assert_not_called()
 
-    @mock.patch('logic.Helpers.requests')
+    @mock.patch('dashboard_leaf.logic.Helpers.requests')
     def test_send_notification_after_settings_hour_should_call_pushbullet_api(self, requestsMock):
         tile = GarbageContainerScheduleTile('myGarbageScheduleTile', example_settings(True), 10)
 
@@ -66,7 +66,7 @@ class TestSendNotification:
 
         requestsMock.post.assert_called_once_with(Helpers.PUSHBULLET_PUSH_URL, data=mock.ANY, headers=mock.ANY)
 
-    @mock.patch('logic.tile.tiles.GarbageContainerScheduleTile.Helpers')
+    @mock.patch('dashboard_leaf.logic.tile.tiles.GarbageContainerScheduleTile.Helpers')
     def test_send_notification_before_settings_hour_should_do_nothing(self, helpersMock):
         tile = GarbageContainerScheduleTile('myGarbageScheduleTile', example_settings(True), 10)
 
@@ -76,7 +76,7 @@ class TestSendNotification:
 
         helpersMock.send_notification_via_pushbullet.assert_not_called()
 
-    @mock.patch('logic.Helpers.requests')
+    @mock.patch('dashboard_leaf.logic.Helpers.requests')
     def test_already_notified_should_skip_sending(self, requestsMock):
         tile = GarbageContainerScheduleTile('myGarbageScheduleTile', example_settings(True), 10)
 
@@ -89,7 +89,7 @@ class TestSendNotification:
 
         requestsMock.post.assert_called_once()
 
-    @mock.patch('logic.Helpers.requests')
+    @mock.patch('dashboard_leaf.logic.Helpers.requests')
     def test_already_notified_should_skip_sending_even_if_already_skipped_before(self, requestsMock):
         tile = GarbageContainerScheduleTile('myGarbageScheduleTile', example_settings(True), 10)
 
diff --git a/test/logic/tile/tiles/TestSensorLineChartTile.py b/test/logic/tile/tiles/TestSensorLineChartTile.py
index 749192f98995740a41e4c8225ac10e05582ecb4d..182913dac71c433d3782524c1f9648521f9bfcf2 100644
--- a/test/logic/tile/tiles/TestSensorLineChartTile.py
+++ b/test/logic/tile/tiles/TestSensorLineChartTile.py
@@ -3,8 +3,8 @@ from typing import Dict
 from unittest import mock
 from unittest.mock import MagicMock
 
-from logic import Helpers
-from logic.tile.tiles.SensorLineChartTile import SensorLineChartTile, SensorType
+from dashboard_leaf.logic import Helpers
+from dashboard_leaf.logic.tile.tiles.SensorLineChartTile import SensorLineChartTile, SensorType
 
 
 def example_settings(showAxes: bool):
@@ -196,7 +196,7 @@ class TestGetTimeSinceLastValue:
 
         assert tile._get_time_since_last_value(warningSettings, data) == ''
 
-    @mock.patch('logic.tile.tiles.SensorLineChartTile.datetime')
+    @mock.patch('dashboard_leaf.logic.tile.tiles.SensorLineChartTile.datetime')
     def test_warnings_enabled_outdated_value_returns_human_readable_string(self, datetimeMock):
         tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
 
@@ -228,7 +228,7 @@ class TestSendNotification:
             'name': 'myDevice'
         }
 
-    @mock.patch('logic.tile.tiles.SensorLineChartTile.Helpers')
+    @mock.patch('dashboard_leaf.logic.tile.tiles.SensorLineChartTile.Helpers')
     def test_notification_disabled_should_do_nothing(self, helpersMock):
         tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
 
@@ -237,7 +237,7 @@ class TestSendNotification:
         tile._send_notification(warningSettings, {}, {}, '1 hour ago')
         helpersMock.send_notification_via_pushbullet.assert_not_called()
 
-    @mock.patch('logic.tile.tiles.SensorLineChartTile.Helpers')
+    @mock.patch('dashboard_leaf.logic.tile.tiles.SensorLineChartTile.Helpers')
     def test_notification_enabled_no_outdated_value_should_do_nothing(self, helpersMock):
         tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
 
@@ -246,7 +246,7 @@ class TestSendNotification:
         tile._send_notification(warningSettings, {}, {}, '')
         helpersMock.send_notification_via_pushbullet.assert_not_called()
 
-    @mock.patch('logic.Helpers.requests')
+    @mock.patch('dashboard_leaf.logic.Helpers.requests')
     def test_send_notification_should_call_pushbullet_api(self, requestsMock):
         tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
 
@@ -257,7 +257,7 @@ class TestSendNotification:
         tile._send_notification(warningSettings, self.__get_sensor_info(), self.__get_device_info(), '1 hour ago')
         requestsMock.post.assert_called_once_with(Helpers.PUSHBULLET_PUSH_URL, data=mock.ANY, headers=mock.ANY)
 
-    @mock.patch('logic.Helpers.requests')
+    @mock.patch('dashboard_leaf.logic.Helpers.requests')
     def test_already_sent_should_skip_sending(self, requestsMock):
         tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
 
@@ -269,7 +269,7 @@ class TestSendNotification:
         tile._send_notification(warningSettings, self.__get_sensor_info(), self.__get_device_info(), '1 hour ago')
         requestsMock.post.assert_called_once()
 
-    @mock.patch('logic.Helpers.requests')
+    @mock.patch('dashboard_leaf.logic.Helpers.requests')
     def test_already_sent_new_value_arrives_and_gets_outdated_should_call_pushbullet_api(self, requestsMock):
         tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
 
diff --git a/test/logic/tile/tiles/__init__.py b/test/logic/tile/tiles/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391