SEO, PWA, sidebar redesign, notifications management, admin dashboard #95

Merged
rafaga21 merged 2 commits from fix/policy-container-width into master 2026-06-14 10:25:18 -04:00
5 changed files with 76 additions and 1 deletions

3
public/robots.txt Normal file
View File

@@ -0,0 +1,3 @@
User-agent: *
Allow: /
Sitemap: https://servermanager.devlab.lat/sitemap.xml

23
public/sitemap.xml Normal file
View 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>

View File

@@ -43,6 +43,7 @@ class DashboardController
$this->view->setLayout('auth')->display('pages.landing', [
'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,
]);
}

View File

@@ -4,6 +4,13 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<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="manifest" href="/manifest.json">
<meta name="theme-color" content="#0f1117">

View File

@@ -3,9 +3,11 @@ $notifications = $notifications ?? [];
$unreadCount = $unreadCount ?? 0;
$teamId = $teamId ?? null;
$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 ?? '';
$currentRoute = $_SERVER['REQUEST_URI'] ?? '/';
$canonicalUrl = ($_ENV['APP_URL'] ?? 'https://sysadmin.lan') . $currentRoute;
if (!isset($user) || $user === null) {
$user = auth();
@@ -17,13 +19,52 @@ if (!isset($user) || $user === null) {
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= htmlspecialchars($title) ?> — ServerManager</title>
<meta name="description" content="<?= htmlspecialchars($description) ?>">
<meta name="api-token" content="<?= htmlspecialchars($user['api_token'] ?? '') ?>">
<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="icon" type="image/svg+xml" href="/assets/img/server.svg">
<link rel="manifest" href="/manifest.json">
<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">
<link rel="apple-touch-icon" href="/assets/img/icon-192.png">
<link rel="preconnect" href="https://fonts.googleapis.com">