project-root/ ├── app/ │ ├── (auth)/ │ │ ├── login/ │ │ │ └── page.tsx │ │ └── layout.tsx │ ├── (protected)/ │ │ ├── dashboard/ │ │ │ └── page.tsx │ │ ├── profile/ │ │ │ └── page.tsx │ │ ├── data/ │ │ │ └── page.tsx │ │ └── layout.tsx │ ├── api/ │ │ └── data/ │ │ └── route.ts │ ├── globals.css │ ├── layout.tsx │ └── page.tsx ├── components/ │ ├── ui/ (shadcn/ui components) │ │ ├── button.tsx │ │ ├── card.tsx │ │ ├── input.tsx │ │ ├── label.tsx │ │ ├── table.tsx │ │ └── ... │ ├── auth/ │ │ ├── login-form.tsx │ │ └── auth-button.tsx │ ├── dashboard/ │ │ ├── stats-card.tsx │ │ └── data-table.tsx │ ├── layout/ │ │ ├── header.tsx │ │ ├── sidebar.tsx │ │ └── nav.tsx │ └── providers.tsx ├── lib/ │ ├── actions/ │ │ ├── auth.ts │ │ ├── data.ts │ │ └── user.ts │ ├── validations/ │ │ ├── auth.ts │ │ ├── user.ts │ │ └── data.ts │ ├── supabase/ │ │ ├── client.ts │ │ ├── server.ts │ │ └── middleware.ts │ ├── prisma.ts │ └── utils.ts ├── prisma/ │ ├── schema.prisma │ └── seed.ts ├── tests/ │ ├── unit/ │ │ └── utils.test.ts │ ├── integration/ │ │ └── auth.test.tsx │ └── e2e/ │ └── login.spec.ts ├── .github/ │ └── workflows/ │ └── ci.yml ├── public/ ├── .env.example ├── .gitignore ├── eslint.config.mjs ├── next.config.ts ├── package.json ├── playwright.config.ts ├── postcss.config.mjs ├── prettier.config.js ├── README.md ├── tailwind.config.ts ├── tsconfig.json └── vitest.config.ts