Initialize Stage 0: Next.js 16 scaffold with auth and role-based routing

- Next.js 16.2.2 + React 19 + TypeScript + Tailwind v4
- Better Auth with email/password and role system (student/curator/admin)
- Prisma 7 schema: User, Session, Account, Verification + full LMS model
- Role-based dashboards: student /dashboard, curator /curator/dashboard, admin /admin/dashboard
- Auth pages: login, register, verify-email
- Better Auth API route handler
- Middleware for route protection
- Docker Compose with PostgreSQL 16
- Seed script with test users (admin/curator/student)
- CLAUDE.md and ROADMAP.md project documentation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-07 10:32:37 +05:00
commit 80ca4b2d9d
41 changed files with 10138 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
import { headers } from "next/headers";
import { auth } from "@/lib/auth";
import { redirect } from "next/navigation";
import { LogoutButton } from "@/components/layout/logout-button";
export default async function StudentDashboard() {
const session = await auth.api.getSession({ headers: await headers() });
if (!session) redirect("/login");
return (
<div className="min-h-screen bg-amber-50">
<header className="bg-white border-b border-amber-100 px-6 py-4 flex items-center justify-between">
<h1 className="text-xl font-bold text-amber-900">Second Brain</h1>
<div className="flex items-center gap-4">
<span className="text-sm text-gray-600">{session.user.name}</span>
<LogoutButton />
</div>
</header>
<main className="max-w-4xl mx-auto px-6 py-10">
<h2 className="text-2xl font-semibold text-gray-800 mb-2">
Добро пожаловать, {session.user.name}!
</h2>
<p className="text-gray-500 mb-8">Ваши курсы появятся здесь.</p>
<div className="bg-white rounded-2xl border border-amber-100 p-8 text-center text-gray-400">
<p className="text-4xl mb-3">📚</p>
<p>Доступных курсов пока нет.</p>
<p className="text-sm mt-1">Обратитесь к администратору за доступом.</p>
</div>
</main>
</div>
);
}