SEO, PWA, sidebar redesign, notifications management, admin dashboard #95
3
public/robots.txt
Normal file
3
public/robots.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
User-agent: *
|
||||||
|
Allow: /
|
||||||
|
Sitemap: https://servermanager.devlab.lat/sitemap.xml
|
||||||
23
public/sitemap.xml
Normal file
23
public/sitemap.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
<url>
|
||||||
|
<loc>https://servermanager.devlab.lat/</loc>
|
||||||
|
<changefreq>weekly</changefreq>
|
||||||
|
<priority>1.0</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://servermanager.devlab.lat/login</loc>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.3</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://servermanager.devlab.lat/privacy</loc>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.5</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://servermanager.devlab.lat/terms</loc>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.5</priority>
|
||||||
|
</url>
|
||||||
|
</urlset>
|
||||||
@@ -43,6 +43,7 @@ class DashboardController
|
|||||||
|
|
||||||
$this->view->setLayout('auth')->display('pages.landing', [
|
$this->view->setLayout('auth')->display('pages.landing', [
|
||||||
'title' => 'ServerManager - Linux Server Management Platform',
|
'title' => 'ServerManager - Linux Server Management Platform',
|
||||||
|
'description' => 'ServerManager — Free and open-source Linux server management platform. Monitor server metrics, execute commands via web terminal, and receive push notifications on your phone.',
|
||||||
'stats' => $stats,
|
'stats' => $stats,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,13 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title><?= htmlspecialchars($title ?? 'ServerManager') ?></title>
|
<title><?= htmlspecialchars($title ?? 'ServerManager') ?></title>
|
||||||
|
<meta name="description" content="ServerManager — Linux server management platform. Monitor, manage, and control your servers with real-time metrics and web terminal.">
|
||||||
|
<link rel="canonical" href="<?= htmlspecialchars(($_ENV['APP_URL'] ?? 'https://sysadmin.lan') . parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH)) ?>">
|
||||||
|
<meta property="og:title" content="<?= htmlspecialchars($title ?? 'ServerManager') ?>">
|
||||||
|
<meta property="og:description" content="ServerManager — Linux server management platform.">
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:image" content="<?= htmlspecialchars(($_ENV['APP_URL'] ?? 'https://sysadmin.lan') . '/assets/img/icon-512.png') ?>">
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
<link rel="icon" type="image/svg+xml" href="/assets/img/server.svg">
|
<link rel="icon" type="image/svg+xml" href="/assets/img/server.svg">
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<meta name="theme-color" content="#0f1117">
|
<meta name="theme-color" content="#0f1117">
|
||||||
|
|||||||
@@ -3,9 +3,11 @@ $notifications = $notifications ?? [];
|
|||||||
$unreadCount = $unreadCount ?? 0;
|
$unreadCount = $unreadCount ?? 0;
|
||||||
$teamId = $teamId ?? null;
|
$teamId = $teamId ?? null;
|
||||||
$title = $title ?? 'ServerManager';
|
$title = $title ?? 'ServerManager';
|
||||||
|
$description = $description ?? 'ServerManager — Linux server management platform. Monitor, manage, and control your servers from anywhere with real-time metrics, web terminal, and push notifications.';
|
||||||
$content = $content ?? '';
|
$content = $content ?? '';
|
||||||
|
|
||||||
$currentRoute = $_SERVER['REQUEST_URI'] ?? '/';
|
$currentRoute = $_SERVER['REQUEST_URI'] ?? '/';
|
||||||
|
$canonicalUrl = ($_ENV['APP_URL'] ?? 'https://sysadmin.lan') . $currentRoute;
|
||||||
|
|
||||||
if (!isset($user) || $user === null) {
|
if (!isset($user) || $user === null) {
|
||||||
$user = auth();
|
$user = auth();
|
||||||
@@ -17,13 +19,52 @@ if (!isset($user) || $user === null) {
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title><?= htmlspecialchars($title) ?> — ServerManager</title>
|
<title><?= htmlspecialchars($title) ?> — ServerManager</title>
|
||||||
|
<meta name="description" content="<?= htmlspecialchars($description) ?>">
|
||||||
<meta name="api-token" content="<?= htmlspecialchars($user['api_token'] ?? '') ?>">
|
<meta name="api-token" content="<?= htmlspecialchars($user['api_token'] ?? '') ?>">
|
||||||
<meta name="csrf-token" content="<?= $this->csrfToken() ?>">
|
<meta name="csrf-token" content="<?= $this->csrfToken() ?>">
|
||||||
|
|
||||||
|
<!-- Canonical -->
|
||||||
|
<link rel="canonical" href="<?= htmlspecialchars($canonicalUrl) ?>">
|
||||||
|
|
||||||
|
<!-- Open Graph -->
|
||||||
|
<meta property="og:title" content="<?= htmlspecialchars($title) ?> — ServerManager">
|
||||||
|
<meta property="og:description" content="<?= htmlspecialchars($description) ?>">
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:url" content="<?= htmlspecialchars($canonicalUrl) ?>">
|
||||||
|
<meta property="og:image" content="<?= htmlspecialchars(($_ENV['APP_URL'] ?? 'https://sysadmin.lan') . '/assets/img/icon-512.png') ?>">
|
||||||
|
<meta property="og:site_name" content="ServerManager">
|
||||||
|
<meta property="og:locale" content="en_US">
|
||||||
|
|
||||||
|
<!-- Twitter Card -->
|
||||||
|
<meta name="twitter:card" content="summary_large_image">
|
||||||
|
<meta name="twitter:title" content="<?= htmlspecialchars($title) ?> — ServerManager">
|
||||||
|
<meta name="twitter:description" content="<?= htmlspecialchars($description) ?>">
|
||||||
|
<meta name="twitter:image" content="<?= htmlspecialchars(($_ENV['APP_URL'] ?? 'https://sysadmin.lan') . '/assets/img/icon-512.png') ?>">
|
||||||
|
|
||||||
|
<!-- JSON-LD Schema -->
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "WebApplication",
|
||||||
|
"name": "ServerManager",
|
||||||
|
"url": "<?= htmlspecialchars($_ENV['APP_URL'] ?? 'https://sysadmin.lan') ?>",
|
||||||
|
"description": "Linux server management platform with real-time monitoring, web terminal, and push notifications.",
|
||||||
|
"applicationCategory": "DeveloperApplication",
|
||||||
|
"operatingSystem": "Linux",
|
||||||
|
"browserRequirements": "Requires JavaScript. Supports Chrome, Firefox, Safari, Edge.",
|
||||||
|
"offers": {
|
||||||
|
"@type": "Offer",
|
||||||
|
"price": "0",
|
||||||
|
"priceCurrency": "USD"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
<link rel="stylesheet" href="/assets/css/style.css?v=<?= asset_version() ?>">
|
<link rel="stylesheet" href="/assets/css/style.css?v=<?= asset_version() ?>">
|
||||||
<link rel="icon" type="image/svg+xml" href="/assets/img/server.svg">
|
<link rel="icon" type="image/svg+xml" href="/assets/img/server.svg">
|
||||||
<link rel="manifest" href="/manifest.json">
|
<link rel="manifest" href="/manifest.json">
|
||||||
<meta name="theme-color" content="#0f1117">
|
<meta name="theme-color" content="#0f1117">
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
<meta name="mobile-web-app-capable" content="yes">
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
||||||
<link rel="apple-touch-icon" href="/assets/img/icon-192.png">
|
<link rel="apple-touch-icon" href="/assets/img/icon-192.png">
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
|
|||||||
Reference in New Issue
Block a user