diff --git a/packages/backend/src/http/routes/stations.ts b/packages/backend/src/http/routes/stations.ts
index 06b0f3a..53f1a37 100644
--- a/packages/backend/src/http/routes/stations.ts
+++ b/packages/backend/src/http/routes/stations.ts
@@ -59,29 +59,6 @@ export class StationsRoute
             );
         });
 
-        app.get("/details/:id", async (req, res) =>
-        {
-            if (!req.params.id)
-            {
-                return res.redirect("/stations/");
-            }
-            const record = await MLog.findOne({ id: req.params.id });
-            const blacklist = await MBlacklist.findOne({ steam: record?.userSteamId! });
-            if (blacklist && blacklist.status)
-            {
-                return res.redirect("/stations/");
-            }
-            const player = await SteamUtil.getPlayer(record?.userSteamId!);
-
-            res.render("stations/details.ejs", {
-                record,
-                dayjs,
-                player,
-                msToTime,
-                ...GitUtil.getData()
-            });
-        });
-
         return app;
     }
 }
\ No newline at end of file
diff --git a/packages/backend/src/http/routes/trains.ts b/packages/backend/src/http/routes/trains.ts
index 53a23e7..d9accc1 100644
--- a/packages/backend/src/http/routes/trains.ts
+++ b/packages/backend/src/http/routes/trains.ts
@@ -56,78 +56,8 @@ export class TrainsRoute
                     .setData({ records: records.map(x => removeProperties<Omit<ITrainLog, "_id" | "__v">>(x, [ "_id", "__v" ])) })
                     .toJSON(),
             );
-
-            // res.render('trains/index.ejs', {
-            //     records,
-            //     dayjs,
-            //     q: req.query.q,
-            //     msToTime,
-            //     ...GitUtil.getData()
-            // });
         });
 
-        app.get("/details/:id", async (req, res) =>
-        {
-            if (!req.params.id)
-            {
-                return res.redirect("/trains/");
-            }
-            const record = await MTrainLog.findOne({ id: req.params.id });
-            const player = await SteamUtil.getPlayer(record?.userSteamId!);
-            const blacklist = await MBlacklist.findOne({ steam: record?.userSteamId! });
-            if (blacklist && blacklist.status)
-            {
-                return res.redirect("/trains/");
-            }
-
-            res.render("trains/details.ejs", {
-                record,
-                dayjs,
-                player,
-                msToTime,
-                ...GitUtil.getData(),
-            });
-        });
-
-        app.get("/leaderboard/", async (req, res) =>
-        {
-            const s = req.query.q?.toString().split(",").map(x => new RegExp(x, "i"));
-
-            const data = Object.keys(raw_schema)
-                .reduce((o, key) => ({ ...o, [ key ]: `$${ key }` }), {});
-
-            const filter: PipelineStage[] = [
-                {
-                    $project: {
-                        // record.leftDate - record.joinedDate
-                        result: { $subtract: [ "$leftDate", "$joinedDate" ] },
-                        ...data,
-                    },
-                },
-            ];
-
-            s && filter.unshift(
-                {
-                    $match: {
-                        $and: [
-                            ...s.map(x => ({ $or: generateSearch(x) })),
-                        ],
-                    },
-                },
-            );
-
-
-            const records = await MTrainLog.aggregate(filter)
-                .sort({ result: -1 })
-                .limit(30);
-            res.render("trains/leaderboard.ejs", {
-                records,
-                dayjs,
-                q: req.query.q,
-                msToTime
-            });
-        })
-
         return app;
     }
 }
\ No newline at end of file
diff --git a/packages/backend/src/http/server.ts b/packages/backend/src/http/server.ts
index 98aa045..1cacefd 100644
--- a/packages/backend/src/http/server.ts
+++ b/packages/backend/src/http/server.ts
@@ -1,39 +1,30 @@
-import express from "express";
+import express, { Router } from "express";
 import { fileURLToPath } from "node:url";
 import path from "node:path";
 import { StationsRoute } from "./routes/stations.js";
 import { TrainsRoute } from "./routes/trains.js";
 import { ProfilesRoute } from "./routes/profile.js";
 import { LeaderboardRoute } from "./routes/leaderboard.js";
-import { MProfile } from "../mongo/profile.js";
-import { GitUtil } from "../util/git.js";
 import cors from "cors";
 import { StatsRoute } from "./routes/stats.js";
 import { LogRoute } from "./routes/log.js";
 
-const __filename = fileURLToPath(import.meta.url);
-const __dirname = path.dirname(__filename);
-
-
 export class ApiModule
 {
     public static load()
     {
         const app = express();
-
-        app.set("view engine", "ejs");
-        app.set("views", __dirname + "/views");
-        app.get("/", (_, res) => res.render("home", GitUtil.getData()));
         app.use(cors());
-        // backward compatible
-        app.get("/details/:id", (req, res) => res.redirect("/stations/details/" + req.params.id));
 
-        app.use("/stations/", StationsRoute.load());
-        app.use("/trains/", TrainsRoute.load());
-        app.use("/profiles/", ProfilesRoute.load());
-        app.use("/leaderboard/", LeaderboardRoute.load());
-        app.use("/stats/", StatsRoute.load());
-        app.use("/log/", LogRoute.load());
+        const router = Router();
+        router.use("/stations/", StationsRoute.load());
+        router.use("/trains/", TrainsRoute.load());
+        router.use("/profiles/", ProfilesRoute.load());
+        router.use("/leaderboard/", LeaderboardRoute.load());
+        router.use("/stats/", StatsRoute.load());
+        router.use("/log/", LogRoute.load());
+
+        app.use("/api/v1", router);
 
         app.listen(2005);
     }
diff --git a/packages/backend/src/http/views/_modules/footer.ejs b/packages/backend/src/http/views/_modules/footer.ejs
deleted file mode 100644
index 3ab5565..0000000
--- a/packages/backend/src/http/views/_modules/footer.ejs
+++ /dev/null
@@ -1,16 +0,0 @@
-<div style="font-size: 13.5px;">
-    <p>Made with <span style="color: red;">❤️</span> by <a href="https://www.alekswilc.dev/">alekswilc</a> for SimRail
-        Community</p>
-    <p><a href="https://git.alekswilc.dev/alekswilc/">Open Source</a></p>
-    <p><% if (version) { %>
-        Wersja: <a href="https://git.alekswilc.dev/alekswilc/simrail-logs/releases/tag/<%= version %>"><%= version %></a>
-    <% } %>
-        Commit: <a href="https://git.alekswilc.dev/alekswilc/simrail-logs/commit/<%= commit %>"><%= commit %></a>
-    </p>
-    <% if (thanks) { %>
-        <p>Podziękowania dla społeczności discorda <a href="https://discord.gg/yDhy3pDrVr">Simrail24</a>, <a
-                href="https://discord.com/users/1079005960653254656">AQUALYTH</a>, osób lajkujących <a
-                href="https://forum.simrail.eu/topic/9142-logowanie-wyj%C5%9B%C4%87-z-posterunk%C3%B3w/">posta</a>, osób
-            użytkujących strone i społeczności Simrail <span style="color: red;">❤️</span></p>
-        <% } %>
-</div>
\ No newline at end of file
diff --git a/packages/backend/src/http/views/_modules/header.ejs b/packages/backend/src/http/views/_modules/header.ejs
deleted file mode 100644
index 1fd5f1e..0000000
--- a/packages/backend/src/http/views/_modules/header.ejs
+++ /dev/null
@@ -1,14 +0,0 @@
-<header>
-    <h1><a style="color: white; text-decoration: none;" href="/">SimRail Logs</a></h1>
-
-    <a href="/stations/">Logi posterunków</a> /
-    <a href="/trains/">Logi pociągów</a> /
-    <a href="/leaderboard/train">Tablica pociągow</a> /
-    <a href="/leaderboard/station">Tablica posterunków</a>
-
-    <br/>
-    <p style="color: darkorange; font-size: 14px;">Hej! Podoba Ci się projekt? Polajkuj post na <a
-                href="https://forum.simrail.eu/topic/9142-logowanie-wyj%C5%9B%C4%87-z-posterunk%C3%B3w/">forum</a>, a
-        będzie
-        mi miło! Dla Ciebie to jedno kliknięcie, a dla mnie motywacja do rozwijania projektu.</p>
-</header>
\ No newline at end of file
diff --git a/packages/backend/src/http/views/home.ejs b/packages/backend/src/http/views/home.ejs
deleted file mode 100644
index c1c5464..0000000
--- a/packages/backend/src/http/views/home.ejs
+++ /dev/null
@@ -1,125 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>simrail.alekswilc.dev</title>
-    <meta name="description" content="Simrail Utils">
-    <meta property="og:title" content="simrail.alekswilc.dev">
-    <meta property="og:url" content="https://simrail.alekswilc.dev">
-    <meta property="og:description" content="Simrail Utils">
-    <meta property="og:type" content="website">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/open-fonts@1.1.1/fonts/inter.min.css">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@exampledev/new.css@1.1.2/new.min.css">
-
-    <style>
-        p {
-            margin: 1%;
-        }
-    </style>
-</head>
-
-<body>
-<%- include('_modules/header.ejs', { section:'home' }) %>
-
-<p>Prosty projekt, logujący wyjścia z posterunków.</p>
-<h3>Cele projektu</h3>
-<p>Główne założenia</p>
-<ul>
-    <li>
-        <p>Ułatwienie zgłaszania graczy, którzy robią "Hit and Run" (psuje i wychodze z posterunku)</p>
-    </li>
-    <li>
-        <p>Statystyki</p>
-    </li>
-</ul>
-
-<h3>Rozwój aplikacji</h3>
-<p>Planowane funkcjonalności</p>
-<ul>
-    <li>
-        <p>Nowy wygląd aplikacji</p>
-    </li>
-</ul>
-
-<h3>Podziękowania dla</h3>
-<ul>
-    <li>Społeczności discorda <a href="https://discord.gg/yDhy3pDrVr">Simrail24</a></li>
-    <li><a href="https://discord.com/users/1079005960653254656">AQUALYTH</a></li>
-    <li>osób lajkujących <a href="https://forum.simrail.eu/topic/9142-logowanie-wyj%C5%9B%C4%87-z-posterunk%C3%B3w/">posta</a>
-    </li>
-    <li>osób użytkujących strone</li>
-    <li>Społeczności SimRail <span style="color: red;">❤️</span></li>
-</ul>
-
-<h3>Informacje dodatkowe</h3>
-<details>
-    <summary>
-        Zgłaszanie błędów i propozycji
-    </summary>
-
-    <h6>Zgłaszanie błedów</h6>
-    <ul>
-        <li>Otwórz <a
-                    href="https://git.alekswilc.dev/alekswilc/simrail-logs/issues">https://git.alekswilc.dev/alekswilc/simrail-logs/issues</a>
-        </li>
-        <li>Zaloguj się (np poprzez Discorda)</li>
-        <li>Naciśnij przycisk "New issue" ("Nowe zgłoszenie")</li>
-        <li>W tytule napisz krótki opis (np. Problem z wyświetleniem strony)</li>
-        <li>Opisz problem (kiedy występuje, podaj linki, postaraj sie napisać jak moge odtworzyć ten błąd, jak
-            powinna zachowywać sie aplikacja bez tego błędu)
-        </li>
-        <li>Poczekaj na informacje z mojej strony</li>
-        <li>Dziekuje :)</li>
-    </ul>
-
-    <img src="https://git.alekswilc.dev/alekswilc/simrail-logs/raw/branch/main/.gitea/assets/image-1.png">
-
-
-    <h6>Zgłaszanie propozycji</h6>
-    <ul>
-        <li>Otwórz <a
-                    href="https://git.alekswilc.dev/alekswilc/simrail-logs/issues">https://git.alekswilc.dev/alekswilc/simrail-logs/issues</a>
-        </li>
-        <li>Zaloguj się (np poprzez Discorda)</li>
-        <li>Naciśnij przycisk "New issue" ("Nowe zgłoszenie")</li>
-        <li>W tytule napisz krótki opis (np. Logi wejścia i wyjścia z pociągów)</li>
-        <li>Opisz propozycje (dokładnie co z dyżurkami ale dla pociągów)</li>
-        <li>Poczekaj na informacje z mojej strony</li>
-        <li>Dziekuje :)</li>
-    </ul>
-
-    <img src="https://git.alekswilc.dev/alekswilc/simrail-logs/raw/branch/main/.gitea/assets/image-2.png">
-</details>
-
-
-<h2>Licencja</h2>
-<details>
-    <summary>
-        Copyright (C) 2024 Aleksander
-        <alekswilc> Wilczyński
-    </summary>
-
-
-    <code style="white-space: pre-line">This program is free software: you can redistribute it and/or modify
-        it under the terms of the GNU Affero General Public License as
-        published by the Free Software Foundation, either version 3 of the
-        License, or (at your option) any later version.
-
-        This program is distributed in the hope that it will be useful,
-        but WITHOUT ANY WARRANTY; without even the implied warranty of
-        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-        GNU Affero General Public License for more details.
-
-        You should have received a copy of the GNU Affero General Public License
-        along with this program. If not, see https://www.gnu.org/licenses/.</code>
-</details>
-
-<hr>
-<%- include('_modules/footer.ejs', { thanks: true, version, commit }) %>
-
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/packages/backend/src/http/views/leaderboard/index.ejs b/packages/backend/src/http/views/leaderboard/index.ejs
deleted file mode 100644
index 8c194e2..0000000
--- a/packages/backend/src/http/views/leaderboard/index.ejs
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>simrail.alekswilc.dev</title>
-    <meta name="description" content="Simrail Utils">
-    <meta property="og:title" content="simrail.alekswilc.dev">
-    <meta property="og:url" content="https://simrail.alekswilc.dev/leaderboard/">
-    <meta property="og:description" content="Simrail Utils">
-    <meta property="og:type" content="website">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/open-fonts@1.1.1/fonts/inter.min.css">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@exampledev/new.css@1.1.2/new.min.css">
-
-    <style>
-        p {
-            margin: 1%;
-        }
-    </style>
-
-</head>
-
-<body>
-<%- include('../_modules/header.ejs', { section: 'leaderboard' }) %>
-
-<h2 id="but">Tablica wyników</h2>
-<div class="container">
-    <input type="text" id="search" value="<%- q %>">
-
-    <button onclick="search()">Szukaj</button>
-    <button onclick="clearSearch()">Wyczyść</button>
-
-    <p>Użyj przecinka, aby wyszukać wiele wartości: pl2,Łazy</p>
-
-</div>
-<br/>
-<ul>
-    <% records.forEach(record=> { %>
-    <li>
-        <%- type === 'train' ? include('train.ejs', { record, msToTime }) : include('station.ejs', { record, msToTime }) %>
-    </li>
-    <% }) %>
-</ul>
-
-<% if (!records.length) { %>
-<h4>Nie znaleziono wyników dla twojego zapytania.</h4>
-<% } %>
-
-<script>
-    function select()
-    {
-        const isTrain = "<%- type %>" === "train";
-        location.href = "/leaderboard/" + (isTrain ? "station" : "train");
-    }
-
-    document.getElementById("but").textContent = ("<%- type %>" === "train") ? "Tablica pociągów" : "Tablica posterunków";
-
-    function search()
-    {
-        location.href = '/leaderboard/<%- type %>/?q=' + document.getElementById("search").value;
-    }
-
-    function clearSearch()
-    {
-        location.href = '/leaderboard/<%- type %>';
-    }
-
-    document.getElementById("search").addEventListener("keyup", (event) =>
-    {
-        if (event.key === "Enter")
-        {
-            search();
-        }
-
-    });
-
-</script>
-<hr>
-
-<p style="color: orange;">Dane do rankingu zbierane są od dnia 19.08.2024.</p>
-
-<%- include('../_modules/footer.ejs', { thanks: false, version, commit }) %>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/packages/backend/src/http/views/leaderboard/station.ejs b/packages/backend/src/http/views/leaderboard/station.ejs
deleted file mode 100644
index 0aaaf6d..0000000
--- a/packages/backend/src/http/views/leaderboard/station.ejs
+++ /dev/null
@@ -1,9 +0,0 @@
-<details>
-    <summary><span style="color:hotpink">
-            <%= record.steamName %>
-        </span> <span style="color: lightskyblue">
-            <%= msToTime(record.dispatcherTime) %>
-        </span> </summary>
-        <p>Spędzona liczba godzin: <%= msToTime(record.dispatcherTime, true) || 'Brak' %></p>
-    <button onclick="location.href = '/profiles/<%= record.steam %>'">Więcej</button>
-</details>
\ No newline at end of file
diff --git a/packages/backend/src/http/views/leaderboard/train.ejs b/packages/backend/src/http/views/leaderboard/train.ejs
deleted file mode 100644
index 03d7828..0000000
--- a/packages/backend/src/http/views/leaderboard/train.ejs
+++ /dev/null
@@ -1,11 +0,0 @@
-<details>
-    <summary><span style="color:hotpink">
-            <%= record.steamName %>
-        </span> - <span style="color:lightskyblue">
-            <%= record.trainPoints %> pkt.
-        </span></summary>
-    <p>Spędzona liczba godzin: <%= msToTime(record.trainTime, true) %></p>
-    <p>Przejechane kilometry: <%= record.trainDistance / 1000 %>km</p>
-    <p>Zdobyte punkty: <%= record.trainPoints %></p>
-    <button onclick="location.href = '/profiles/<%= record.steam %>'">Więcej</button>
-</details>
\ No newline at end of file
diff --git a/packages/backend/src/http/views/profiles/index.ejs b/packages/backend/src/http/views/profiles/index.ejs
deleted file mode 100644
index 0046021..0000000
--- a/packages/backend/src/http/views/profiles/index.ejs
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>simrail.alekswilc.dev</title>
-    <meta name="description"
-          content="<%- steam.personaname %>">
-    <meta property="og:title" content="Simrail Log">
-    <meta property="og:url" content="https://simrail.alekswilc.dev/profiles/<%- player.steam %>/">
-    <meta property="og:description"
-          content="<%- steam.personaname %>">
-    <meta property=" og:type" content="website">
-    <meta property="og:image" content="<%- steam.avatarfull %>"/>
-    <meta name="twitter:card" content="summary_large_image">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/open-fonts@1.1.1/fonts/inter.min.css">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@exampledev/new.css@1.1.2/new.min.css">
-
-    <style>
-        p {
-            margin: 0;
-        }
-
-        .details {
-            display: flex;
-            flex-direction: column;
-        }
-
-        .clickable {
-            cursor: pointer;
-        }
-    </style>
-</head>
-
-<script>
-    function copylink()
-    {
-        navigator.clipboard.writeText("https://simrail.alekswilc.dev/players/details/<%- player.steam %>/");
-    }
-</script>
-
-<body>
-<%- include('../_modules/header.ejs', { section: 'profiles' }) %>
-
-<div class="details">
-    <h1><a href="<%- steam.profileurl %>"><%- steam.personaname %></a></h1>
-
-    <% if (steamStats.stats) { %>
-        <details open>
-            <summary>Statystyki Steam</summary>
-            <p>Zdobyte punkty: <%- steamStats.stats.find(x => x.name === 'SCORE')?.value ?? "0" %></p>
-            <p>Przejechane
-                kilometry: <%- (steamStats.stats.find(x => x.name === 'DISTANCE_M')?.value / 1000) ?? "0" %></p>
-            <p>Czas spędzony jako dyżurny
-                ruchu: <%- msToTime((steamStats.stats.find(x => x.name === 'DISPATCHER_TIME')?.value ?? 0) * 1_000_000, true) || 'Nigdy nie wszedł w tryb dyżurnego ruchu.' %></p>
-            <br/>
-            <p style="font-size: smaller;">UWAGA: powyższe statystyki udostępnia platforma STEAM, mogą one być z
-                łatwością manipulowane.</p>
-
-        </details>
-    <% } %>
-
-    <h1>Statystyki pociągów</h1>
-    <% if (player.trainTime) { %>
-        <p>Spędzony czas: <%- msToTime(player.trainTime) %></p>
-        <p>Przejechane kilometry: <%- player.trainDistance / 1000 %>km</p>
-        <p>Zdobyte punkty: <%- player.trainPoints %></p>
-        <p>Średnia prędkość: <%- ((player.trainDistance / (player.trainTime / 1000)) * 3.6).toFixed(2) %> km/h</p>
-    <% } %>
-    <% if (player.trainStats && Object.keys(player.trainStats).length) { %>
-        <ul>
-            <% Object.keys(player.trainStats).forEach(name => { %>
-                <li>
-                    <details open>
-                        <summary><%- name %></summary>
-                        <p>Przejechany dystans: <%- player.trainStats[ name ].distance / 1000 %>km</p>
-                        <p>Spędzony czas: <%- msToTime(player.trainStats[ name ].time, true) %></p>
-                        <p>Zdobyte punkty: <%- player.trainStats[ name ].score %></p>
-                        <p>Średnia
-                            prędkość: <%- ((player.trainStats[ name ].distance / (player.trainStats[ name ].time / 1000)) * 3.6).toFixed(2) %>
-                            km/h</p>
-                    </details>
-                </li>
-
-            <% }) %>
-        </ul>
-    <% } else { %>
-        <p>Brak danych</p>
-    <% } %>
-
-    <h1>Statystyki posterunków</h1>
-    <% if (player.dispatcherTime) { %>
-        <p>Spędzony czas: <%- msToTime(player.dispatcherTime) %></p>
-    <% } %>
-    <% if (player.dispatcherStats && Object.keys(player.dispatcherStats).length) { %>
-        <ul>
-            <% Object.keys(player.dispatcherStats).forEach(name => { %>
-                <li>
-                    <details open>
-                        <summary><%- name %></summary>
-                        <p>Spędzony czas: <%- msToTime(player.dispatcherStats[ name ].time, true) %></p>
-                    </details>
-                </li>
-
-            <% }) %>
-        </ul>
-    <% } else { %>
-        <p>Brak danych</p>
-    <% } %>
-
-    <br/>
-    <p>
-        <button onclick="copylink()">Kopiuj link</button>
-    </p>
-</div>
-<hr>
-<p style="color: orange;">Dane do rankingu zbierane są od dnia 19.08.2024.</p>
-<%- include('../_modules/footer.ejs', { thanks: false, version, commit }) %>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/packages/backend/src/http/views/profiles/private.ejs b/packages/backend/src/http/views/profiles/private.ejs
deleted file mode 100644
index da89871..0000000
--- a/packages/backend/src/http/views/profiles/private.ejs
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>simrail.alekswilc.dev</title>
-    <meta name="description"
-          content="Profil prywatny">
-    <meta property="og:title" content="Simrail Log">
-    <meta property="og:url" content="https://simrail.alekswilc.dev/">
-    <meta property="og:description"
-          content="Profil prywatny">
-    <meta property=" og:type" content="website">
-    <meta name="twitter:card" content="summary_large_image">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/open-fonts@1.1.1/fonts/inter.min.css">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@exampledev/new.css@1.1.2/new.min.css">
-
-    <style>
-        p {
-            margin: 0;
-        }
-
-        .details {
-            display: flex;
-            flex-direction: column;
-        }
-
-        .clickable {
-            cursor: pointer;
-        }
-    </style>
-</head>
-
-<body>
-<%- include('../_modules/header.ejs', { section: 'profiles' }) %>
-
-<div class="details">
-    <p>Profil gracza jest prywatny.</p>
-
-</div>
-<hr>
-<%- include('../_modules/footer.ejs', { thanks: false, version, commit }) %>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/packages/backend/src/http/views/stations/details.ejs b/packages/backend/src/http/views/stations/details.ejs
deleted file mode 100644
index 40581c1..0000000
--- a/packages/backend/src/http/views/stations/details.ejs
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>simrail.alekswilc.dev</title>
-    <meta name="description"
-          content="<%- record.stationName %> | <%- record.userUsername %> | <%- dayjs(record.leftDate).format('hh:mm DD/MM/YYYY') %>">
-    <meta property="og:title" content="Simrail Log">
-    <meta property="og:url" content="https://simrail.alekswilc.dev/details/<%- record.id %>/">
-    <meta property="og:description"
-          content="<%- record.stationName %> | <%- record.userUsername %> | <%- dayjs(record.leftDate).format('hh:mm DD/MM/YYYY') %>"
-    ">
-    <meta property=" og:type" content="website">
-    <meta property="og:image" content="<%- record.userAvatar %>"/>
-    <meta name="twitter:card" content="summary_large_image">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/open-fonts@1.1.1/fonts/inter.min.css">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@exampledev/new.css@1.1.2/new.min.css">
-
-    <style>
-        p {
-            margin: 0;
-        }
-
-        .details {
-            display: flex;
-            flex-direction: column;
-        }
-
-        .clickable {
-            cursor: pointer;
-        }
-    </style>
-</head>
-
-<script>
-    function copydata()
-    {
-        navigator.clipboard.writeText(document.getElementById("data").textContent.replace(/ /g, "").split("\n").filter(x => x).join(""));
-
-    }
-
-    function copylink()
-    {
-        navigator.clipboard.writeText("https://simrail.alekswilc.dev/stations/details/<%- record.id %>/");
-    }
-</script>
-
-<body>
-<%- include('../_modules/header.ejs', { section: 'stations' }) %>
-
-<div class="details">
-
-    <p>Użytkownik: <a href="/profiles/<%- record.userSteamId %>">
-            <%- record.userUsername %>
-        </a></p>
-    <p>Stacja: <%- record.stationName %>
-    </p>
-    <p>Serwer: <%- record.server.toUpperCase() %>
-    </p>
-    <p>Data wejścia: <%- record.joinedDate ? dayjs(record.joinedDate).format('HH:mm DD/MM/YYYY') : '--:-- --/--/--'
-        %> (<%- record.joinedDate ? dayjs(record.joinedDate).fromNow() : '--' %>)</p>
-    <p>Data wyjścia: <%- dayjs(record.leftDate).format('HH:mm DD/MM/YYYY') %> (<%- dayjs(record.leftDate).fromNow()
-        %>)</p>
-    <p>Spędzony czas: <%- record.joinedDate ? msToTime(record.leftDate - record.joinedDate, true) : '--' %>
-    </p>
-
-    <br/>
-    <code class="clickable" style="white-space: pre-line" onclick="copydata()"
-          id="data">;station: <%- record.stationName %>
-        ;steam: <%- record.userSteamId %>
-        ;server: <%- record.server %>
-        ;name: <%- record.userUsername %>
-        ;joined: <%- record.joinedDate ? dayjs(record.joinedDate).format() : 'no-data' %>
-        ;left: <%- dayjs(record.leftDate).format() %>
-        ;url: https://simrail.alekswilc.dev/stations/details/<%- record.id %>/
-    </code>
-    <br/>
-    <p>
-        <button onclick="copylink()">Kopiuj link</button>
-    </p>
-
-
-</div>
-<hr>
-<%- include('../_modules/footer.ejs', { thanks: false, version, commit }) %>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/packages/backend/src/http/views/stations/index.ejs b/packages/backend/src/http/views/stations/index.ejs
deleted file mode 100644
index 4999faa..0000000
--- a/packages/backend/src/http/views/stations/index.ejs
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>simrail.alekswilc.dev</title>
-    <meta name="description" content="Simrail Utils">
-    <meta property="og:title" content="simrail.alekswilc.dev">
-    <meta property="og:url" content="https://simrail.alekswilc.dev">
-    <meta property="og:description" content="Simrail Utils">
-    <meta property="og:type" content="website">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/open-fonts@1.1.1/fonts/inter.min.css">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@exampledev/new.css@1.1.2/new.min.css">
-
-    <style>
-        p {
-            margin: 1%;
-        }
-    </style>
-</head>
-
-<body>
-<%- include('../_modules/header.ejs', { section: 'stations' }) %>
-
-<h2>Wyszukaj posterunek, osobe lub serwer</h2>
-
-<div class="container">
-    <input type="text" id="search" value="<%- q %>">
-    <button onclick="search()">Szukaj</button>
-    <button onclick="clearSearch()">Wyczyść</button>
-
-    <p>Użyj przecinka, aby wyszukać wiele wartości: pl2,Łazy</p>
-</div>
-
-<ul>
-    <% records.forEach(record=> { %>
-    <li>
-        <details>
-            <summary>[<span style="color:lightskyblue">
-                            <%- record.server.toUpperCase() %>
-                        </span>] <span style="color: lightskyblue">
-                            <%- record.stationName %>
-                        </span> - <span style="color:hotpink">
-                            <%- record.userUsername %>
-                        </span>
-                <p style="margin-bottom: 0; opacity: 0.5;">
-                    <%- dayjs(record.leftDate).format('HH:mm DD/MM/YYYY') %>
-                </p>
-            </summary>
-            <p>Data dołączenia: <%- record.joinedDate ? dayjs(record.joinedDate).format('HH:mm DD/MM/YYYY')
-                    : '--:-- --/--/--' %> (<%- record.joinedDate ? dayjs(record.joinedDate).fromNow() : '--' %>)
-            </p>
-            <p>Data wyjścia: <%- dayjs(record.leftDate).format('HH:mm DD/MM/YYYY') %> (<%-
-                dayjs(record.leftDate).fromNow() %>)</p>
-            <p>Spędzony czas: <%- record.joinedDate ? msToTime(record.leftDate - record.joinedDate) : '--' %>
-            </p>
-
-            <a href="/stations/details/<%- record.id %>">
-                <button>Więcej</button>
-            </a>
-        </details>
-    </li>
-    <% }) %>
-</ul>
-
-<% if (!records.length) { %>
-<h4>Nie znaleziono wyników dla twojego zapytania.</h4>
-<% } %>
-
-<hr>
-<%- include('../_modules/footer.ejs', { thanks: false, version, commit }) %>
-
-<script>
-    function search()
-    {
-        location.href = "/stations/?q=" + document.getElementById("search").value;
-    }
-
-    function clearSearch()
-    {
-        console.log("test");
-        location.href = "/stations/";
-    }
-
-    document.getElementById("search").addEventListener("keyup", (event) =>
-    {
-        if (event.key === "Enter")
-        {
-            search();
-        }
-
-    });
-</script>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/packages/backend/src/http/views/trains/details.ejs b/packages/backend/src/http/views/trains/details.ejs
deleted file mode 100644
index 60bda2c..0000000
--- a/packages/backend/src/http/views/trains/details.ejs
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>simrail.alekswilc.dev</title>
-    <meta name="description"
-          content="<%- record.stationName %> | <%- record.userUsername %> | <%- dayjs(record.leftDate).format('hh:mm DD/MM/YYYY') %>">
-    <meta property="og:title" content="Simrail Log">
-    <meta property="og:url" content="https://simrail.alekswilc.dev/details/<%- record.id %>/">
-    <meta property="og:description"
-          content="<%- record.stationName %> | <%- record.userUsername %> | <%- dayjs(record.leftDate).format('hh:mm DD/MM/YYYY') %>"
-    ">
-    <meta property=" og:type" content="website">
-    <meta property="og:image" content="<%- record.userAvatar %>"/>
-    <meta name="twitter:card" content="summary_large_image">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/open-fonts@1.1.1/fonts/inter.min.css">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@exampledev/new.css@1.1.2/new.min.css">
-
-    <style>
-        p {
-            margin: 0;
-        }
-
-        .details {
-            display: flex;
-            flex-direction: column;
-        }
-
-        .clickable {
-            cursor: pointer;
-        }
-    </style>
-</head>
-
-<script>
-    function copydata()
-    {
-        navigator.clipboard.writeText(document.getElementById("data").textContent.replace(/ /g, "").split("\n").filter(x => x).join(""));
-
-    }
-
-    function copylink()
-    {
-        navigator.clipboard.writeText("https://simrail.alekswilc.dev/trains/details/<%- record.id %>/");
-    }
-</script>
-
-<body>
-<%- include('../_modules/header.ejs', { section: 'trains' }) %>
-
-<div class="details">
-
-    <p>Użytkownik: <a href="/profiles/<%- record.userSteamId %>">
-            <%- record.userUsername %>
-        </a></p>
-
-    <p>Pociąg: <%- record.trainName %> <%- record.trainNumber %>
-    </p>
-    <p>Data wejścia: <%- record.joinedDate ? dayjs(record.joinedDate).format('HH:mm DD/MM/YYYY') : '--:-- --/--/--'
-        %> (<%- record.joinedDate ? dayjs(record.joinedDate).fromNow() : '--' %>)</p>
-    <p>Data wyjścia: <%- dayjs(record.leftDate).format('HH:mm DD/MM/YYYY') %> (<%- dayjs(record.leftDate).fromNow()
-        %>)</p>
-    <p>Spędzony czas: <%- record.joinedDate ? msToTime(record.leftDate - record.joinedDate, true) : '--' %>
-    </p>
-    <% if (record.distance) { %>
-        <p>Przejechane kilometry: <%- record.distance / 1000 %></p>
-        <p>Zdobyte punkty: <%- record.points %></p>
-        <p>Średnia
-            prędkość: <%- ((record.distance / ((record.leftDate - record.joinedDate) / 1000)) * 3.6).toFixed(2) %>
-            km/h</p>
-    <% } %>
-    </p>
-
-    <br/>
-    <code class="clickable" style="white-space: pre-line" onclick="copydata()"
-          id="data">;train: <%- record.trainNumber %>
-        ;steam: <%- record.userSteamId %>
-        ;server: <%- record.server %>
-        ;name: <%- record.userUsername %>
-        ;joined: <%- record.joinedDate ? dayjs(record.joinedDate).format() : 'no-data' %>
-        ;left: <%- dayjs(record.leftDate).format() %>
-        <% if (record.distance) { %>
-            ;distance: <%- record.distance / 1000 %>
-            ;points: <%- record.points %>
-        <% } %>
-        ;url: https://simrail.alekswilc.dev/trains/details/<%- record.id %>/
-    </code>
-    <br/>
-    <p>
-        <button onclick="copylink()">Kopiuj link</button>
-    </p>
-
-
-</div>
-<hr>
-<%- include('../_modules/footer.ejs', { thanks: false, version, commit }) %>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/packages/backend/src/http/views/trains/index.ejs b/packages/backend/src/http/views/trains/index.ejs
deleted file mode 100644
index ad5323a..0000000
--- a/packages/backend/src/http/views/trains/index.ejs
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-    <meta charset="UTF-8">
-    <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>simrail.alekswilc.dev</title>
-    <meta name="description" content="Simrail Utils">
-    <meta property="og:title" content="simrail.alekswilc.dev">
-    <meta property="og:url" content="https://simrail.alekswilc.dev">
-    <meta property="og:description" content="Simrail Utils">
-    <meta property="og:type" content="website">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/open-fonts@1.1.1/fonts/inter.min.css">
-    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@exampledev/new.css@1.1.2/new.min.css">
-
-    <style>
-        p {
-            margin: 1%;
-        }
-    </style>
-</head>
-
-<body>
-<%- include('../_modules/header.ejs', { section: 'trains' }) %>
-
-<h2>Wyszukaj pociąg, osobe lub serwer</h2>
-
-<div class="container">
-    <input type="text" id="search" value="<%- q %>">
-    <button onclick="search()">Szukaj</button>
-    <button onclick="clearSearch()">Wyczyść</button>
-
-    <p>Użyj przecinka, aby wyszukać wiele wartości: pl2,1413</p>
-</div>
-
-<ul>
-    <% records.forEach(record=> { %>
-    <li>
-        <details>
-            <summary>[<span style="color:lightskyblue">
-                            <%- record.server.toUpperCase() %>
-                        </span>] <span style="color: lightskyblue">
-                            <%- record.trainName %>
-                        </span> - <span style="color: lightskyblue">
-                            <%- record.trainNumber %>
-                        </span> - <span style="color:hotpink">
-                            <%- record.userUsername %>
-                        </span>
-                <p style="margin-bottom: 0; opacity: 0.5;">
-                    <%- dayjs(record.leftDate).format('HH:mm DD/MM/YYYY') %>
-                </p>
-            </summary>
-            <p>Data dołączenia: <%- record.joinedDate ? dayjs(record.joinedDate).format('HH:mm DD/MM/YYYY')
-                    : '--:-- --/--/--' %> (<%- record.joinedDate ? dayjs(record.joinedDate).fromNow() : '--' %>)
-            </p>
-            <p>Data wyjścia: <%- dayjs(record.leftDate).format('HH:mm DD/MM/YYYY') %> (<%-
-                dayjs(record.leftDate).fromNow() %>)</p>
-            <p>Spędzony czas: <%- record.joinedDate ? msToTime(record.leftDate - record.joinedDate) : '--' %>
-                <% if (record.distance) { %>
-            <p>Przejechane kilometry: <%- record.distance / 1000 %></p>
-            <p>Zdobyte punkty: <%- record.points %></p>
-            <% } %>
-            </p>
-
-            <a href="/trains/details/<%- record.id %>">
-                <button>Więcej</button>
-            </a>
-        </details>
-    </li>
-    <% }) %>
-</ul>
-
-<% if (!records.length) { %>
-<h4>Nie znaleziono wyników dla twojego zapytania.</h4>
-<% } %>
-
-<hr>
-<%- include('../_modules/footer.ejs', { thanks: false, version, commit }) %>
-
-<script>
-    function search()
-    {
-        location.href = "/trains/?q=" + document.getElementById("search").value;
-    }
-
-    function clearSearch()
-    {
-        console.log("test");
-        location.href = "/trains/";
-    }
-
-    document.getElementById("search").addEventListener("keyup", (event) =>
-    {
-        if (event.key === "Enter")
-        {
-            search();
-        }
-
-    });
-</script>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts
index dd60faf..4a50c78 100644
--- a/packages/backend/src/index.ts
+++ b/packages/backend/src/index.ts
@@ -29,7 +29,7 @@ import dayjs from "dayjs";
         StationsModule.load();
         TrainsModule.load();
     }
- 
+
     ApiModule.load(); // TODO: use fastify
 
     if (process.env.NODE_ENV === "development")
diff --git a/packages/backend/src/modules/stations.ts b/packages/backend/src/modules/stations.ts
index 3753777..10ced48 100644
--- a/packages/backend/src/modules/stations.ts
+++ b/packages/backend/src/modules/stations.ts
@@ -51,7 +51,7 @@ export class StationsModule
                 await MProfile.findOneAndUpdate({ id: userProfile.id }, { dispatcherStats: userProfile.dispatcherStats, dispatcherTime: userProfile.dispatcherTime });
             }
 
-            MLog.create({
+            await MLog.create({
                 id: v4(),
                 userSteamId: player.steamid,
                 userAvatar: player.avatarfull,
@@ -60,8 +60,8 @@ export class StationsModule
                 leftDate: date.getTime(),
                 stationName: station.Name,
                 stationShort: station.Prefix,
-                server: server.ServerCode
+                server: server.ServerCode,
             });
-        })
+        });
     }
 }
\ No newline at end of file
diff --git a/packages/backend/src/modules/trains.ts b/packages/backend/src/modules/trains.ts
index f933ec1..14b8cfa 100644
--- a/packages/backend/src/modules/trains.ts
+++ b/packages/backend/src/modules/trains.ts
@@ -1,5 +1,4 @@
-import { Server, Station, Train } from "@simrail/types";
-import { MLog } from "../mongo/logs.js";
+import { Server, Train } from "@simrail/types";
 import { IPlayer } from "../types/player.js";
 import { SimrailClientEvents } from "../util/SimrailClient.js";
 import { v4 } from "uuid";
@@ -63,7 +62,7 @@ export class TrainsModule
                 await MProfile.findOneAndUpdate({ id: userProfile.id }, { trainStats: userProfile.trainStats, trainTime: userProfile.trainTime, trainPoints: userProfile.trainPoints, trainDistance: userProfile.trainDistance });
             }
 
-            MTrainLog.create({
+            await MTrainLog.create({
                 id: v4(),
                 userSteamId: player.steamid,
                 userAvatar: player.avatarfull,
@@ -73,8 +72,8 @@ export class TrainsModule
                 trainNumber: train.TrainNoLocal,
                 server: server.ServerCode,
                 distance, points,
-                trainName: train.TrainName
+                trainName: train.TrainName,
             });
-        })
+        });
     }
 }
\ No newline at end of file
diff --git a/packages/backend/src/types/typings.d.ts b/packages/backend/src/types/typings.d.ts
index 59cc21f..108c47e 100644
--- a/packages/backend/src/types/typings.d.ts
+++ b/packages/backend/src/types/typings.d.ts
@@ -5,5 +5,4 @@ declare global
 {
     declare var redis: RedisClientType,
         client: SimrailClient;
-
 }
\ No newline at end of file
diff --git a/packages/backend/src/util/time.ts b/packages/backend/src/util/time.ts
index 7bade90..47da178 100644
--- a/packages/backend/src/util/time.ts
+++ b/packages/backend/src/util/time.ts
@@ -19,4 +19,4 @@ export const msToTime = (duration: number, long = false) =>
     }
 
     return time.humanize();
-}
\ No newline at end of file
+};
\ No newline at end of file