diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..dc6e3fd9e650892608430b5988c0e4f3bf5da859
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,11 @@
+FROM node:22 AS build-stage
+
+WORKDIR /app
+
+COPY package*.json ./
+
+RUN npm install
+
+RUN npm install -g @angular/cli
+
+CMD ["ng", "serve", "--host", "0.0.0.0"]
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..0dd09cdb1db1c1dbb005b924b4523907b6fd4acd
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,12 @@
+services:
+  miars-ng:
+    build: .
+    volumes:
+      - .:/app
+      - node_modules:/app/node_modules
+    ports:
+      - "4200:4200"
+    command: ["npm", "run", "start", "--", "--host", "0.0.0.0", "--poll=2000"]
+
+volumes:
+  node_modules:
diff --git a/src/app/components/dashboard-chart-frames/dashboard-chart-frames.component.html b/src/app/components/dashboard-chart-frames/dashboard-chart-frames.component.html
index ce1f83fe6455c4803838efe6afa49606b4d2fa1a..73abc52ac24132fb2b7a19811b93f3b87df59b40 100644
--- a/src/app/components/dashboard-chart-frames/dashboard-chart-frames.component.html
+++ b/src/app/components/dashboard-chart-frames/dashboard-chart-frames.component.html
@@ -17,4 +17,4 @@
   </div>
 </div>
 
-<p-chart type="line" [data]="data()" [options]="options" />
+<p-chart type="line" [data]="data()" [options]="options" [height]="'600px'" />
diff --git a/src/app/components/dashboard-chart-information-rate/dashboard-chart-information-rate.component.html b/src/app/components/dashboard-chart-information-rate/dashboard-chart-information-rate.component.html
index ce1f83fe6455c4803838efe6afa49606b4d2fa1a..73abc52ac24132fb2b7a19811b93f3b87df59b40 100644
--- a/src/app/components/dashboard-chart-information-rate/dashboard-chart-information-rate.component.html
+++ b/src/app/components/dashboard-chart-information-rate/dashboard-chart-information-rate.component.html
@@ -17,4 +17,4 @@
   </div>
 </div>
 
-<p-chart type="line" [data]="data()" [options]="options" />
+<p-chart type="line" [data]="data()" [options]="options" [height]="'600px'" />
diff --git a/src/app/components/dashboard-chart-protocol/dashboard-chart-protocol.component.html b/src/app/components/dashboard-chart-protocol/dashboard-chart-protocol.component.html
index ce1f83fe6455c4803838efe6afa49606b4d2fa1a..73abc52ac24132fb2b7a19811b93f3b87df59b40 100644
--- a/src/app/components/dashboard-chart-protocol/dashboard-chart-protocol.component.html
+++ b/src/app/components/dashboard-chart-protocol/dashboard-chart-protocol.component.html
@@ -17,4 +17,4 @@
   </div>
 </div>
 
-<p-chart type="line" [data]="data()" [options]="options" />
+<p-chart type="line" [data]="data()" [options]="options" [height]="'600px'" />
diff --git a/src/app/components/dashboard-statistics/dashboard-statistics.component.scss b/src/app/components/dashboard-statistics/dashboard-statistics.component.scss
index 6c25990eaae01dad2680ea01405b7a3d1d7c40ce..38969298bd36297a37040ed32539d56727a18fe9 100644
--- a/src/app/components/dashboard-statistics/dashboard-statistics.component.scss
+++ b/src/app/components/dashboard-statistics/dashboard-statistics.component.scss
@@ -17,7 +17,7 @@
     flex-direction: column;
     justify-content: space-between;
     font-weight: 500;
-    font-size: map.get(vars.$text, 'lg');
+    padding: map.get(vars.$spacing, 'none') map.get(vars.$spacing, 'xxxl');
 
     &__table {
       &__time {
@@ -40,12 +40,12 @@
           border-top: 1px solid map.get(vars.$grey, 30);
         }
 
-        th, td {
+        th,
+        td {
           width: 20%;
           padding: map.get(vars.$spacing, 'sm');
           text-align: left;
         }
-
       }
 
       &__protocols {
@@ -56,7 +56,8 @@
         margin-top: map.get(vars.$text, 'lg');
         width: 100%;
 
-        th, td {
+        th,
+        td {
           width: 20%;
           padding: map.get(vars.$spacing, 'sm');
           text-align: left;
@@ -75,12 +76,12 @@
         margin-top: map.get(vars.$spacing, 'lg');
         width: 100%;
 
-
         tbody td {
           border-top: 1px solid map.get(vars.$grey, 30);
         }
 
-        th, td {
+        th,
+        td {
           width: 25%;
           padding: map.get(vars.$spacing, 'sm');
           text-align: left;
diff --git a/src/app/components/dashboard/dashboard.component.html b/src/app/components/dashboard/dashboard.component.html
index ee374a8e181499a0e5c307eae156665632ecc1dd..53187e701d12d4bc99664886939615ffa2e4678a 100644
--- a/src/app/components/dashboard/dashboard.component.html
+++ b/src/app/components/dashboard/dashboard.component.html
@@ -33,7 +33,4 @@
       }
     </mat-expansion-panel>
   </mat-accordion>
-
-  <!--@todo: find other way to fix scrolling to the top of the page-->
-  <p-skeleton height="300px" />
 </app-page-wrapper>
diff --git a/src/app/components/dashboard/dashboard.component.ts b/src/app/components/dashboard/dashboard.component.ts
index 9d0e3807214bf517cf012cb831c731eb362b2063..413e8c3d3c28fc0e903ef3b0d252323a977c9599 100644
--- a/src/app/components/dashboard/dashboard.component.ts
+++ b/src/app/components/dashboard/dashboard.component.ts
@@ -15,7 +15,6 @@ import { DashboardSettingsComponent } from '../dashboard-settings/dashboard-sett
 import { ConfigurationApi } from '../../api/configuration.api';
 import { SettingsService } from '../../service/settings.service';
 import { AsyncPipe } from '@angular/common';
-import { Skeleton } from 'primeng/skeleton';
 
 @Component({
   selector: 'app-dashboard',
@@ -27,7 +26,6 @@ import { Skeleton } from 'primeng/skeleton';
     DashboardStatisticsComponent,
     DashboardChartsComponent,
     AsyncPipe,
-    Skeleton,
   ],
   templateUrl: './dashboard.component.html',
   styleUrl: './dashboard.component.scss',
diff --git a/src/app/components/header/header.component.html b/src/app/components/header/header.component.html
index 156bfd96874760cb331ec90fce313f1f133af30a..f536f99c8f46c1df1a01b8b58fb18b5d92579729 100644
--- a/src/app/components/header/header.component.html
+++ b/src/app/components/header/header.component.html
@@ -11,11 +11,4 @@
       Help
     </button>
   </div>
-  <mat-divider [vertical]="true"></mat-divider>
-  <div class="button-container">
-    <button mat-button>
-      <mat-icon>account_circle</mat-icon>
-      Profile
-    </button>
-  </div>
 </div>
diff --git a/src/app/components/page-wrapper/page-wrapper.component.html b/src/app/components/page-wrapper/page-wrapper.component.html
index fae4904e34fac12ee085461926655beb2b7366aa..bce274edae264e685965ca48f11e14d37f55632e 100644
--- a/src/app/components/page-wrapper/page-wrapper.component.html
+++ b/src/app/components/page-wrapper/page-wrapper.component.html
@@ -1,10 +1,16 @@
-<div class="page-header">
-  <div class="page-header__title">
-    <ng-content select="[title]"></ng-content>
+<div class="page-wrapper">
+  <div class="page-header">
+    <div class="page-header__title">
+      <ng-content select="[title]"></ng-content>
+    </div>
+    <ng-content select="[actions]"></ng-content>
+  </div>
+  <mat-divider />
+  <div class="page-body">
+    <ng-content />
   </div>
-  <ng-content select="[actions]"></ng-content>
 </div>
-<mat-divider />
-<div class="page-body">
-  <ng-content />
+<div class="copyright">
+  Copyright &copy; 2025
+  <a href="https://pg.edu.pl/">Gdańsk University of Technology</a>
 </div>
diff --git a/src/app/components/page-wrapper/page-wrapper.component.scss b/src/app/components/page-wrapper/page-wrapper.component.scss
index 4d82ce4e970f23b4a74a7ad9e485e5aa2d3e8dd5..25d0cf1b822973a42e7543b363fd30cc2fff01b3 100644
--- a/src/app/components/page-wrapper/page-wrapper.component.scss
+++ b/src/app/components/page-wrapper/page-wrapper.component.scss
@@ -1,11 +1,12 @@
 @use '../../../vars';
 @use 'sass:map';
 
-:host {
+.page-wrapper {
   display: block;
   min-height: calc(100vh - 2 * vars.$headerHeight);
 
-  margin: map.get(vars.$spacing, 'xl');
+  margin: map.get(vars.$spacing, 'xl') map.get(vars.$spacing, 'xl')
+    map.get(vars.$spacing, 'none');
   background-color: map.get(vars.$grey, 0);
   border-radius: map.get(vars.$radius, 'xs');
 
@@ -28,3 +29,8 @@
     }
   }
 }
+
+.copyright {
+  margin: map.get(vars.$spacing, 'sm') map.get(vars.$spacing, 'xl');
+  text-align: right;
+}