diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..9d75062 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +# Database migrations (auto-generated) +src/server/db/migrations/ diff --git a/.vscode/settings.json b/.vscode/settings.json index 9e28b04..8d30d57 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,6 @@ { "cSpell.words": [ + "Mikey", "topicker" ] } \ No newline at end of file diff --git a/package.json b/package.json index da06c1a..c26b964 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "lucide-react": "^0.553.0", "next": "^15.5.9", "next-auth": "5.0.0-beta.30", + "next-themes": "^0.4.6", "nodemailer": "^7.0.12", "postgres": "^3.4.4", "react": "^19.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 23fb40d..5235236 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -71,6 +71,9 @@ importers: next-auth: specifier: 5.0.0-beta.30 version: 5.0.0-beta.30(next@15.5.9(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(nodemailer@7.0.12)(react@19.2.3) + next-themes: + specifier: ^0.4.6 + version: 0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3) nodemailer: specifier: ^7.0.12 version: 7.0.12 @@ -2531,6 +2534,12 @@ packages: nodemailer: optional: true + next-themes@0.4.6: + resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + next@15.5.9: resolution: {integrity: sha512-agNLK89seZEtC5zUHwtut0+tNrc0Xw4FT/Dg+B/VLEo9pAcS9rtTKpek3V6kVcVwsB2YlqMaHdfZL4eLEVYuCg==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} @@ -5317,6 +5326,11 @@ snapshots: optionalDependencies: nodemailer: 7.0.12 + next-themes@0.4.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + next@15.5.9(@opentelemetry/api@1.9.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): dependencies: '@next/env': 15.5.9 diff --git a/public/mikey-idea.webp b/public/mikey-idea.webp new file mode 100644 index 0000000..b29a45f Binary files /dev/null and b/public/mikey-idea.webp differ diff --git a/public/mikey-watch-tall.webp b/public/mikey-watch-tall.webp new file mode 100644 index 0000000..8202039 Binary files /dev/null and b/public/mikey-watch-tall.webp differ diff --git a/public/mikey-watch.webp b/public/mikey-watch.webp new file mode 100644 index 0000000..3315f4a Binary files /dev/null and b/public/mikey-watch.webp differ diff --git a/public/mikey.webp b/public/mikey.webp new file mode 100644 index 0000000..8742227 Binary files /dev/null and b/public/mikey.webp differ diff --git a/src/app/layout.tsx b/src/app/layout.tsx index b930938..f697d7b 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -3,12 +3,17 @@ import "~/styles/globals.css"; import { type Metadata } from "next"; import { SessionProvider } from "next-auth/react"; import { Geist } from "next/font/google"; +import HolyLoader from "holy-loader"; import { TRPCReactProvider } from "~/trpc/react"; +import { ThemeProvider } from "~/components/theme-provider"; +import { Navigation } from "~/components/navigation"; +import { Footer } from "~/components/footer"; export const metadata: Metadata = { - title: "Create T3 App", - description: "Generated by create-t3-app", + title: "TableTopicker - Practice Impromptu Speaking", + description: + "Improve your impromptu speaking skills with timed practice sessions, AI-generated topics, and progress tracking. Start speaking with confidence today.", icons: [{ rel: "icon", url: "/favicon.ico" }], }; @@ -21,10 +26,22 @@ export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode }>) { return ( - + + - - {children} + + + + +
{children}
+