Update: metrics API, favicon, weather fix, middleware fix, system improvements
This commit is contained in:
@@ -1,41 +1,62 @@
|
||||
export default function BookmarksPage() {
|
||||
const categories = [
|
||||
{
|
||||
label: "Статьи",
|
||||
emoji: "📰",
|
||||
label: "Productivity",
|
||||
emoji: "💼",
|
||||
links: [
|
||||
{ name: "Habr", url: "https://habr.com/ru/feed/", desc: "Технические статьи" },
|
||||
{ name: "VC.ru", url: "https://vc.ru/", desc: "Бизнес и технологии" },
|
||||
{ name: "Pulse", url: "https://pulse.digital-home.site", desc: "Привычки и задачи", emoji: "💓" },
|
||||
{ name: "Gitea", url: "https://git.digital-home.site", desc: "Git репозитории", emoji: "🐙" },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Dev",
|
||||
emoji: "💻",
|
||||
label: "Storage",
|
||||
emoji: "💾",
|
||||
links: [
|
||||
{ name: "GitHub", url: "https://github.com/", desc: "Репозитории" },
|
||||
{ name: "Go Playground", url: "https://go.dev/play/", desc: "Тест Go кода" },
|
||||
{ name: "pkg.go.dev", url: "https://pkg.go.dev/", desc: "Go пакеты" },
|
||||
{ name: "Flutter Docs", url: "https://docs.flutter.dev/", desc: "Документация Flutter" },
|
||||
{ name: ".NET Docs", url: "https://docs.microsoft.com/dotnet/", desc: "Документация .NET" },
|
||||
{ name: "Docker Hub", url: "https://hub.docker.com/", desc: "Docker образы" },
|
||||
{ name: "Nextcloud", url: "https://cloud.digital-home.site", desc: "Облачное хранилище", emoji: "☁️" },
|
||||
{ name: "Immich", url: "https://photo.digital-home.site", desc: "Фото галерея", emoji: "📸" },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "AI",
|
||||
label: "Tools",
|
||||
emoji: "🔧",
|
||||
links: [
|
||||
{ name: "Vaultwarden", url: "https://vault.digital-home.site", desc: "Менеджер паролей", emoji: "🔐" },
|
||||
{ name: "IT-Tools", url: "https://tools.digital-home.site", desc: "Утилиты разработчика", emoji: "🛠️" },
|
||||
{ name: "Uptime Kuma", url: "https://uptime.digital-home.site", desc: "Мониторинг", emoji: "📊" },
|
||||
{ name: "VPN Configs", url: "https://vpn.digital-home.site/admin?key=mysecret2026", desc: "Конфиги VPN", emoji: "🔒" },
|
||||
{ name: "Marzban", url: "https://daniilvds.duckdns.org:2083/dashboard", desc: "Marzban панель", emoji: "🌐" },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "AI Subscribe",
|
||||
emoji: "🤖",
|
||||
links: [
|
||||
{ name: "OpenRouter", url: "https://openrouter.ai/", desc: "AI роутер" },
|
||||
{ name: "Hugging Face", url: "https://huggingface.co/", desc: "ML модели" },
|
||||
{ name: "Groq Console", url: "https://console.groq.com/", desc: "Groq API" },
|
||||
{ name: "Together AI", url: "https://api.together.xyz/", desc: "Together AI" },
|
||||
{ name: "OpenAI Usage", url: "https://chatgpt.com/codex/cloud/settings/usage", desc: "Лимиты OpenAI", emoji: "🤖" },
|
||||
{ name: "Claude Usage", url: "https://claude.ai/settings/usage", desc: "Лимиты Claude", emoji: "✨" },
|
||||
{ name: "Moonshot AI", url: "https://platform.moonshot.ai/console/account", desc: "Баланс и API ключи", emoji: "🌙" },
|
||||
{ name: "OpenAI API", url: "https://platform.openai.com/settings/organization/usage", desc: "OpenAI API статистика", emoji: "📈" },
|
||||
{ name: "Claude API", url: "https://platform.claude.com/workspaces/default/cost", desc: "Claude API статистика", emoji: "💜" },
|
||||
{ name: "ElevenLabs API", url: "https://elevenlabs.io/app/api", desc: "ElevenLabs API статистика", emoji: "🎙️" },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Инфраструктура",
|
||||
emoji: "🏗️",
|
||||
label: "Dev & References",
|
||||
emoji: "💻",
|
||||
links: [
|
||||
{ name: "Proxmox", url: "http://192.168.31.100:8006", desc: "Виртуализация" },
|
||||
{ name: "Tailscale", url: "https://login.tailscale.com/admin/", desc: "VPN сеть" },
|
||||
{ name: "GitHub", url: "https://github.com/", desc: "Репозитории", emoji: "🐱" },
|
||||
{ name: "Go Playground", url: "https://go.dev/play/", desc: "Тест Go кода", emoji: "🐹" },
|
||||
{ name: "pkg.go.dev", url: "https://pkg.go.dev/", desc: "Go пакеты", emoji: "📦" },
|
||||
{ name: "Flutter Docs", url: "https://docs.flutter.dev/", desc: "Документация Flutter", emoji: "🐦" },
|
||||
{ name: ".NET Docs", url: "https://learn.microsoft.com/ru-ru/dotnet/", desc: "Документация .NET", emoji: "🔵" },
|
||||
{ name: "Docker Hub", url: "https://hub.docker.com/", desc: "Docker образы", emoji: "🐳" },
|
||||
{ name: "OpenRouter", url: "https://openrouter.ai/", desc: "AI роутер", emoji: "🔀" },
|
||||
{ name: "Hugging Face", url: "https://huggingface.co/", desc: "ML модели", emoji: "🤗" },
|
||||
{ name: "Groq Console", url: "https://console.groq.com/", desc: "Groq API", emoji: "⚡" },
|
||||
{ name: "Together AI", url: "https://api.together.ai/", desc: "Together AI", emoji: "🤝" },
|
||||
{ name: "Proxmox", url: "http://192.168.31.100:8006", desc: "Виртуализация", emoji: "🖥️" },
|
||||
{ name: "Tailscale", url: "https://login.tailscale.com/admin/machines", desc: "VPN сеть", emoji: "🔗" },
|
||||
{ name: "Habr", url: "https://habr.com/ru/feed/", desc: "Технические статьи", emoji: "📰" },
|
||||
{ name: "VC.ru", url: "https://vc.ru/", desc: "Бизнес и технологии", emoji: "📱" },
|
||||
],
|
||||
},
|
||||
];
|
||||
@@ -44,7 +65,7 @@ export default function BookmarksPage() {
|
||||
<div className="space-y-6">
|
||||
<div>
|
||||
<h1 className="text-2xl font-bold text-white">Bookmarks</h1>
|
||||
<p className="text-slate-400 text-sm">Избранные ссылки</p>
|
||||
<p className="text-slate-400 text-sm">Все ссылки в одном месте</p>
|
||||
</div>
|
||||
|
||||
{categories.map((cat) => (
|
||||
@@ -62,10 +83,13 @@ export default function BookmarksPage() {
|
||||
rel="noopener noreferrer"
|
||||
className="glass-card p-4 hover:scale-[1.02] transition-transform group"
|
||||
>
|
||||
<div className="text-sm font-medium text-white group-hover:text-indigo-300 transition-colors truncate">
|
||||
{link.name}
|
||||
<div className="flex items-center gap-2 mb-1">
|
||||
<span className="text-lg">{link.emoji}</span>
|
||||
<div className="text-sm font-medium text-white group-hover:text-indigo-300 transition-colors truncate">
|
||||
{link.name}
|
||||
</div>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500 mt-1 truncate">{link.desc}</div>
|
||||
{link.desc && <div className="text-xs text-slate-500 mt-1 truncate">{link.desc}</div>}
|
||||
<div className="text-xs text-slate-700 mt-2 truncate text-right group-hover:text-slate-500 transition-colors">
|
||||
{new URL(link.url).hostname}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user