Initial commit: TopSysOps site + admin panel

Multi-page public site (Next.js), Node/Express backend with Postgres,
and Vite admin/account app, restructured from a single-page layout
into dedicated service, promotions, cases, about, FAQ, and blog pages
for SEO.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013otXCiTZsxdZ4SJKZ9wUky
This commit is contained in:
ogrechkoandClaude Sonnet 5 committed 2026-08-25 23:12:16 +03:00
commit 130c5382cd
108 files changed
+7146

No files matched your search

+32
View File
@@ -0,0 +1,32 @@
import Link from 'next/link';
const SECONDARY_LINKS = [
{ href: '/uslugi', label: 'Услуги' },
{ href: '/aktsii', label: 'Акции' },
{ href: '/keysy', label: 'Кейсы' },
{ href: '/o-kompanii', label: 'О компании' },
{ href: '/faq', label: 'FAQ' },
{ href: '/otzyvy', label: 'Отзывы' },
{ href: '/kontakty', label: 'Контакты' },
{ href: '/blog', label: 'Блог' },
];
export default function Footer() {
return (
<footer className="border-t py-8 border-slate-200 text-slate-500 dark:border-slate-900 dark:text-slate-500">
<div className="max-w-6xl mx-auto px-5 sm:px-8">
<nav className="flex flex-wrap gap-x-5 gap-y-2 text-xs mb-6">
{SECONDARY_LINKS.map((item) => (
<Link key={item.href} href={item.href} className="hover:text-emerald-500 transition-colors">
{item.label}
</Link>
))}
</nav>
<div className="text-xs flex flex-col sm:flex-row gap-2 sm:gap-0 justify-between">
<span>© {new Date().getFullYear()} TopSysOps. Все права защищены.</span>
<span className="font-mono">top-sysops.ru</span>
</div>
</div>
</footer>
);
}