SSR / CSR Remix diff

Created Diff never expires
54 removals
Lines
Total
Removed
Words
Total
Removed
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
210 lines
8 additions
Lines
Total
Added
Words
Total
Added
To continue using this feature, upgrade to
Diffchecker logo
Diffchecker Pro
164 lines
<html class="light" dir="ltr" lang="en">
<html class="light" dir="ltr" lang="en">


<head>
<head>
<meta charset="utf-8">
<meta charset="utf-8">
<title>Contact | Swetrix</title>
<title>Contact | Swetrix</title>
<meta name="theme-color" content="#818cf8">
<meta name="theme-color" content="#818cf8">
<meta name="description" content="Ultimate open-source analytics to satisfy all your needs">
<meta name="description" content="Ultimate open-source analytics to satisfy all your needs">
<meta name="twitter:title" content="Swetrix | Ultimate open-source analytics to satisfy all your needs">
<meta name="twitter:title" content="Swetrix | Ultimate open-source analytics to satisfy all your needs">
<meta name="twitter:site" content="@swetrix">
<meta name="twitter:site" content="@swetrix">
<meta name="twitter:description"
<meta name="twitter:description"
content="Swetrix is a cookie-less, fully opensource and privacy-first web analytics service which provides a huge variety of services">
content="Swetrix is a cookie-less, fully opensource and privacy-first web analytics service which provides a huge variety of services">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:card" content="summary_large_image">
<meta property="og:title" content="Swetrix">
<meta property="og:title" content="Swetrix">
<meta property="og:description" content="Ultimate open-source analytics to satisfy all your needs">
<meta property="og:description" content="Ultimate open-source analytics to satisfy all your needs">
<meta property="og:site_name" content="Swetrix">
<meta property="og:site_name" content="Swetrix">
<meta property="og:url" content="https://swetrix.com">
<meta property="og:url" content="https://swetrix.com">
<meta property="og:type" content="website">
<meta property="og:type" content="website">
<meta name="google" content="notranslate">
<meta name="google" content="notranslate">
<meta property="twitter:image" content="https://swetrix.com/assets/og_image.png">
<meta property="twitter:image" content="https://swetrix.com/assets/og_image.png">
<meta property="og:image" content="https://swetrix.com/assets/og_image.png">
<meta property="og:image" content="https://swetrix.com/assets/og_image.png">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="/build/_assets/tailwind-CRZQNTJI.css" media="">
<link rel="stylesheet" href="/build/_assets/tailwind-CRZQNTJI.css">
<link rel="stylesheet" href="/build/_assets/index-OUTOQHKR.css">
<link rel="stylesheet" href="/build/_assets/index-OUTOQHKR.css">
<link rel="stylesheet" href="/build/_assets/billboard.min-EHXYBLMA.css">
<link rel="stylesheet" href="/build/_assets/billboard.min-EHXYBLMA.css">
<link rel="stylesheet" href="/build/_assets/Flatpicker-XTM4RJ2I.css">
<link rel="stylesheet" href="/build/_assets/Flatpicker-XTM4RJ2I.css">
<link rel="preconnect" href="https://fonts.bunny.net">
<link rel="preconnect" href="https://fonts.bunny.net">
<link rel="stylesheet" href="https://fonts.bunny.net/css?family=inter:300,400,500,600,700,800">
<link rel="stylesheet" href="https://fonts.bunny.net/css?family=inter:300,400,500,600,700,800">
<link rel="stylesheet" href="/build/_assets/light-2UXFWLKG.css">
<link rel="stylesheet" href="/build/_assets/light-2UXFWLKG.css">
<link rel="alternate" hreflang="en" href="http://localhost:3000/contact?lng=en">
<link rel="alternate" hreflang="en" href="http://localhost:3000/contact?lng=en">
<link rel="alternate" hreflang="uk" href="http://localhost:3000/contact?lng=uk">
<link rel="alternate" hreflang="uk" href="http://localhost:3000/contact?lng=uk">
<link rel="alternate" hreflang="pl" href="http://localhost:3000/contact?lng=pl">
<link rel="alternate" hreflang="pl" href="http://localhost:3000/contact?lng=pl">
<link rel="alternate" hreflang="de" href="http://localhost:3000/contact?lng=de">
<link rel="alternate" hreflang="de" href="http://localhost:3000/contact?lng=de">
<link rel="alternate" hreflang="sv" href="http://localhost:3000/contact?lng=sv">
<link rel="alternate" hreflang="sv" href="http://localhost:3000/contact?lng=sv">
<link rel="alternate" hreflang="el" href="http://localhost:3000/contact?lng=el">
<link rel="alternate" hreflang="el" href="http://localhost:3000/contact?lng=el">
<link rel="alternate" hreflang="ru" href="http://localhost:3000/contact?lng=ru">
<link rel="alternate" hreflang="ru" href="http://localhost:3000/contact?lng=ru">
<link rel="alternate" hreflang="hi" href="http://localhost:3000/contact?lng=hi">
<link rel="alternate" hreflang="hi" href="http://localhost:3000/contact?lng=hi">
<link rel="alternate" hreflang="zh" href="http://localhost:3000/contact?lng=zh">
<link rel="alternate" hreflang="zh" href="http://localhost:3000/contact?lng=zh">
<link rel="preload" href="/locales/en.json" as="fetch" type="application/json" crossorigin="anonymous">
<link rel="preload" href="/locales/en.json" as="fetch" type="application/json" crossorigin="anonymous">
<script>window.REMIX_ENV = { "NODE_ENV": "development", "AIAPI_URL": "https://aiapi.swetrix.com/", "API_URL": "https://api.swetrix.com/", "API_STAGING_URL": "http://localhost:5005/", "CDN_URL": "https://cdn.swetrix.com/", "BLOG_URL": "https://blog.swetrix.com/" }</script>
<script>window.REMIX_ENV = { "NODE_ENV": "development", "AIAPI_URL": "https://aiapi.swetrix.com/", "API_URL": "https://api.swetrix.com/", "API_STAGING_URL": "http://localhost:5005/", "CDN_URL": "https://cdn.swetrix.com/", "BLOG_URL": "https://blog.swetrix.com/" }</script>
</head>
</head>


<body class="bg-white"><!--$--><!--$-->
<body class="bg-white">
<div class="min-h-min-footer bg-gray-50 dark:bg-slate-900">
<div class="min-h-min-footer bg-gray-50 dark:bg-slate-900">
<div class="w-11/12 md:w-4/5 mx-auto pb-16 pt-12 px-4 sm:px-6 lg:px-8 whitespace-pre-line">
<div class="w-11/12 md:w-4/5 mx-auto pb-16 pt-12 px-4 sm:px-6 lg:px-8 whitespace-pre-line">
<h1 class="text-4xl font-bold text-gray-900 dark:text-gray-50 tracking-tight">Contact</h1>
<h1 class="text-4xl font-bold text-gray-900 dark:text-gray-50 tracking-tight">Contact</h1>
<div class="mt-2 text-lg text-gray-900 dark:text-gray-50 tracking-tight">Have something to ask? There are several
<div class="mt-2 text-lg text-gray-900 dark:text-gray-50 tracking-tight">Have something to ask? There are several
ways on how to contact us:<ol class="list-decimal ml-5 sm:ml-10">
ways on how to contact us:<ol class="list-decimal ml-5 sm:ml-10">
<li class="mt-1">You can drop us an email at <a href="mailto:contact@swetrix.com"
<li class="mt-1">You can drop us an email at <a href="mailto:contact@swetrix.com"
class="font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-500">contact@swetrix.com</a>
class="font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-500">contact@swetrix.com</a>
</li>
</li>
<li class="mt-1">Tweet or message us at <a href="https://twitter.com/intent/user?screen_name=swetrix"
<li class="mt-1">Tweet or message us at <a href="https://twitter.com/intent/user?screen_name=swetrix"
class="font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-500">@swetrix</a>
class="font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-500">@swetrix</a>
</li>
</li>
<li class="mt-1">Join our Discord server by following <a href="https://discord.gg/tVxGxU3s4B"
<li class="mt-1">Join our Discord server by following <a href="https://discord.gg/tVxGxU3s4B"
class="font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-500">this
class="font-medium text-indigo-600 hover:text-indigo-500 dark:text-indigo-400 dark:hover:text-indigo-500">this
link</a></li>
link</a></li>
<li class="mt-1">Use a chatbox located on the bottom right of this page</li>
<li class="mt-1">Use a chatbox located on the bottom right of this page</li>
</ol>
</ol>
</div>
</div>
</div>
</div>
</div><!--/$--><!--/$-->
</div>
<script>((STORAGE_KEY, restoreKey) => {
<script>((STORAGE_KEY2, restoreKey) => {
if (!window.history.state || !window.history.state.key) {
if (!window.history.state || !window.history.state.key) {
let key = Math.random().toString(32).slice(2);
let key2 = Math.random().toString(32).slice(2);
window.history.replaceState({
window.history.replaceState({
key
key: key2
}, "");
}, "");
}
}
try {
try {
let positions = JSON.parse(sessionStorage.getItem(STORAGE_KEY) || "{}");
let positions = JSON.parse(sessionStorage.getItem(STORAGE_KEY2) || "{}");
let storedY = positions[restoreKey || window.history.state.key];
let storedY = positions[restoreKey || window.history.state.key];
if (typeof storedY === "number") {
if (typeof storedY === "number") {
window.scrollTo(0, storedY);
window.scrollTo(0, storedY);
}
}
} catch (error) {
} catch (error) {
console.error(error);
console.error(error);
sessionStorage.removeItem(STORAGE_KEY);
sessionStorage.removeItem(STORAGE_KEY2);
}
}
})("positions", null)</script>
})("positions", null)</script>
<link rel="modulepreload" href="/build/entry.client-BVXZVXFZ.js">
<link rel="modulepreload" href="/build/_shared/chunk-H2DYO6FA.js">
<link rel="modulepreload" href="/build/_shared/chunk-PMVSEWED.js">
<link rel="modulepreload" href="/build/_shared/chunk-37D4TRSO.js">
<link rel="modulepreload" href="/build/_shared/chunk-K6LIVXKD.js">
<link rel="modulepreload" href="/build/_shared/chunk-EQKOFF4H.js">
<link rel="modulepreload" href="/build/_shared/chunk-A5ZCKG5L.js">
<link rel="modulepreload" href="/build/_shared/chunk-4AGAZ5WR.js">
<link rel="modulepreload" href="/build/_shared/chunk-SE6N23ZV.js">
<link rel="modulepreload" href="/build/_shared/chunk-OKBCQ2CQ.js">
<link rel="modulepreload" href="/build/_shared/chunk-KHLNOZZL.js">
<link rel="modulepreload" href="/build/_shared/chunk-UE4NS74C.js">
<link rel="modulepreload" href="/build/_shared/chunk-JMKXPEZX.js">
<link rel="modulepreload" href="/build/_shared/chunk-6AWDHY7L.js">
<link rel="modulepreload" href="/build/_shared/chunk-65FL4PSS.js">
<link rel="modulepreload" href="/build/_shared/chunk-U4F7U3XT.js">
<link rel="modulepreload" href="/build/_shared/chunk-GFVB5GNC.js">
<link rel="modulepreload" href="/build/_shared/chunk-7T2XWYFJ.js">
<link rel="modulepreload" href="/build/_shared/chunk-PZDJHGND.js">
<link rel="modulepreload" href="/build/_shared/chunk-Y4M4OBON.js">
<link rel="modulepreload" href="/build/_shared/chunk-2L2XYLCX.js">
<link rel="modulepreload" href="/build/_shared/chunk-2WTK5YAC.js">
<link rel="modulepreload" href="/build/_shared/chunk-WAQXMFNU.js">
<link rel="modulepreload" href="/build/_shared/chunk-NMQWL7MD.js">
<link rel="modulepreload" href="/build/_shared/chunk-IFTT6GHW.js">
<link rel="modulepreload" href="/build/_shared/chunk-BJUD4D43.js">
<link rel="modulepreload" href="/build/_shared/chunk-Y3KRUYHA.js">
<link rel="modulepreload" href="/build/_shared/chunk-FXKZAE4K.js">
<link rel="modulepreload" href="/build/_shared/chunk-PEUSVYHJ.js">
<link rel="modulepreload" href="/build/_shared/chunk-FII2M4MP.js">
<link rel="modulepreload" href="/build/_shared/chunk-QKOLGIK3.js">
<link rel="modulepreload" href="/build/_shared/chunk-RYEVLOBG.js">
<link rel="modulepreload" href="/build/_shared/chunk-6I4DQV62.js">
<link rel="modulepreload" href="/build/_shared/chunk-G5MF43YH.js">
<link rel="modulepreload" href="/build/_shared/chunk-6U3MFY2S.js">
<link rel="modulepreload" href="/build/_shared/chunk-4LVHWVHP.js">
<link rel="modulepreload" href="/build/_shared/chunk-KDPC67GR.js">
<link rel="modulepreload" href="/build/root-5DDHFXQ7.js">
<link rel="modulepreload" href="/build/routes/contact-JEEHP6FC.js">
<script>window.__remixContext = { "state": { "loaderData": { "root": { "locale": "en", "url": "http://localhost:3000/contact", "theme": "light", "REMIX_ENV": { "NODE_ENV": "development", "AIAPI_URL": "https://aiapi.swetrix.com/", "API_URL": "https://api.swetrix.com/", "API_STAGING_URL": "http://localhost:5005/", "CDN_URL": "https://cdn.swetrix.com/", "BLOG_URL": "https://blog.swetrix.com/" }, "isAuthed": true }, "routes/contact": null }, "actionData": null, "errors": null }, "future": { "unstable_dev": false, "unstable_postcss": false, "unstable_tailwind": false, "v2_errorBoundary": true, "v2_headers": false, "v2_meta": true, "v2_normalizeFormMethod": true, "v2_routeConvention": false } };</script>
<script type="module" async="">import "/build/manifest-52B20B12.js";
import * as route0 from "/build/root-5DDHFXQ7.js";
import * as route1 from "/build/routes/contact-JEEHP6FC.js";
window.__remixRouteModules = { "root": route0, "routes/contact": route1 };

import("/build/entry.client-BVXZVXFZ.js");</script>
<script>
<script>
function remixLiveReloadConnect(config) {
function remixLiveReloadConnect(config) {
let protocol = location.protocol === "https:" ? "wss:" : "ws:";
let protocol = location.protocol === "https:" ? "wss:" : "ws:";
let host = location.hostname;
let host = location.hostname;
let port = undefined || (window.__remixContext && window.__remixContext.dev && window.__remixContext.dev.port) || 8002;
let port = undefined || (window.__remixContext && window.__remixContext.dev && window.__remixContext.dev.port) || 8002;
let socketPath = protocol + "//" + host + ":" + port + "/socket";
let socketPath = protocol + "//" + host + ":" + port + "/socket";
let ws = new WebSocket(socketPath);
let ws = new WebSocket(socketPath);
ws.onmessage = async (message) => {
ws.onmessage = async (message) => {
let event = JSON.parse(message.data);
let event = JSON.parse(message.data);
if (event.type === "LOG") {
if (event.type === "LOG") {
console.log(event.message);
console.log(event.message);
}
}
if (event.type === "RELOAD") {
if (event.type === "RELOAD") {
console.log("💿 Reloading window ...");
console.log("💿 Reloading window ...");
window.location.reload();
window.location.reload();
}
}
if (event.type === "HMR") {
if (event.type === "HMR") {
if (!window.__hmr__ || !window.__hmr__.contexts) {
if (!window.__hmr__ || !window.__hmr__.contexts) {
console.log("💿 [HMR] No HMR context, reloading window ...");
console.log("💿 [HMR] No HMR context, reloading window ...");
window.location.reload();
window.location.reload();
return;
return;
}
}
if (!event.updates || !event.updates.length) return;
if (!event.updates || !event.updates.length) return;
let updateAccepted = false;
let updateAccepted = false;
let needsRevalidation = new Set();
let needsRevalidation = new Set();
for (let update of event.updates) {
for (let update of event.updates) {
console.log("[HMR] " + update.reason + " [" + update.id + "]")
console.log("[HMR] " + update.reason + " [" + update.id + "]")
if (update.revalidate) {
if (update.revalidate) {
needsRevalidation.add(update.routeId);
needsRevalidation.add(update.routeId);
console.log("[HMR] Revalidating [" + update.routeId + "]");
console.log("[HMR] Revalidating [" + update.routeId + "]");
}
}
let imported = await import(update.url + '?t=' + event.assetsManifest.hmr.timestamp);
let imported = await import(update.url + '?t=' + event.assetsManifest.hmr.timestamp);
if (window.__hmr__.contexts[update.id]) {
if (window.__hmr__.contexts[update.id]) {
let accepted = window.__hmr__.contexts[update.id].emit(
let accepted = window.__hmr__.contexts[update.id].emit(
imported
imported
);
);
if (accepted) {
if (accepted) {
console.log("[HMR] Updated accepted by", update.id);
console.log("[HMR] Updated accepted by", update.id);
updateAccepted = true;
updateAccepted = true;
}
}
}
}
}
}
if (event.assetsManifest && window.__hmr__.contexts["remix:manifest"]) {
if (event.assetsManifest && window.__hmr__.contexts["remix:manifest"]) {
let accepted = window.__hmr__.contexts["remix:manifest"].emit(
let accepted = window.__hmr__.contexts["remix:manifest"].emit(
{ needsRevalidation, assetsManifest: event.assetsManifest }
{ needsRevalidation, assetsManifest: event.assetsManifest }
);
);
if (accepted) {
if (accepted) {
console.log("[HMR] Updated accepted by", "remix:manifest");
console.log("[HMR] Updated accepted by", "remix:manifest");
updateAccepted = true;
updateAccepted = true;
}
}
}
}
if (!updateAccepted) {
if (!updateAccepted) {
console.log("[HMR] Updated rejected, reloading...");
console.log("[HMR] Updated rejected, reloading...");
window.location.reload();
window.location.reload();
}
}
}
}
};
};
ws.onopen = () => {
ws.onopen = () => {
if (config && typeof config.onOpen === "function") {
if (config && typeof config.onOpen === "function") {
config.onOpen();
config.onOpen();
}
}
};
};
ws.onclose = (event) => {
ws.onclose = (event) => {
if (event.code === 1006) {
if (event.code === 1006) {
console.log("Remix dev asset server web socket closed. Reconnecting...");
console.log("Remix dev asset server web socket closed. Reconnecting...");
setTimeout(
setTimeout(
() =>
() =>
remixLiveReloadConnect({
remixLiveReloadConnect({
onOpen: () => window.location.reload(),
onOpen: () => window.location.reload(),
}),
}),
1000
1000
);
);
}
}
};
};
ws.onerror = (error) => {
ws.onerror = (error) => {
console.log("Remix dev asset server web socket error:");
console.log("Remix dev asset server web socket error:");
console.error(error);
console.error(error);
};
};
}
}
remixLiveReloadConnect();
remixLiveReloadConnect();
</script>
</script>
<div id="__react-alert__"></div>
<div id="__react-alert__"></div>
</body>
</body>


</html>
</html>