Initial commit: base slice (auth, roles, users, admin) scaffold

Backend: .NET 10 Clean Architecture + LiteCqrs.Net + EF Core/PostgreSQL +
Identity/JWT. Frontend: React 19 + Vite + TanStack Query/Router + Tailwind v4
with a retro CRT theme. Docker/compose deployment mirroring PnvPanel's
conventions, scoped down to the current base feature set.
This commit is contained in:
Leonid Pershin
2026-07-24 05:40:34 +03:00
commit 8a3eebc48f
156 changed files with 9335 additions and 0 deletions
+44
View File
@@ -0,0 +1,44 @@
import { createFileRoute, Link } from '@tanstack/react-router'
import { useTranslation } from 'react-i18next'
import { Tv } from 'lucide-react'
import { useAuthStore } from '@/features/auth/store'
import { Button } from '@/shared/ui/button'
export const Route = createFileRoute('/')({ component: HomePage })
function HomePage() {
const { t } = useTranslation()
const { user } = useAuthStore()
return (
<div className="flex flex-col items-center gap-8 py-16 text-center">
<div className="crt-panel flex h-40 w-full max-w-md items-center justify-center rounded-md">
<Tv className="crt-glow h-16 w-16" strokeWidth={1} />
</div>
<div className="flex flex-col gap-2">
<h1 className="crt-glow text-4xl font-bold tracking-[0.2em]">{t('home.title')}</h1>
<p className="text-sm uppercase tracking-[0.3em] text-muted-foreground">{t('home.subtitle')}</p>
</div>
<p className="max-w-md text-muted-foreground">{t('home.tagline')}</p>
<div className="flex gap-3">
{user ? (
<Button asChild size="lg">
<Link to="/dashboard">{t('home.cta')}</Link>
</Button>
) : (
<>
<Button asChild size="lg">
<Link to="/login">{t('home.cta')}</Link>
</Button>
<Button asChild size="lg" variant="outline">
<Link to="/register">{t('home.ctaRegister')}</Link>
</Button>
</>
)}
</div>
</div>
)
}