diff options
author | 2024-08-05 22:01:50 -0700 | |
---|---|---|
committer | 2024-08-05 22:01:50 -0700 | |
commit | 9f655af04e728f359801552c0aac9ba204c5bbbf (patch) | |
tree | ac169a43b060be1b0c3fb40f16cfcdf145a84086 /frontend/src | |
parent | f566fa80a9fb0f1af1198a62b60a80bb6ee1983b (diff) | |
download | ibd-trader-9f655af04e728f359801552c0aac9ba204c5bbbf.tar.gz ibd-trader-9f655af04e728f359801552c0aac9ba204c5bbbf.tar.zst ibd-trader-9f655af04e728f359801552c0aac9ba204c5bbbf.zip |
Initial implementation
Diffstat (limited to 'frontend/src')
-rw-r--r-- | frontend/src/app/api/auth/[auth0]/route.ts | 3 | ||||
-rw-r--r-- | frontend/src/app/dashboard/page.tsx | 15 | ||||
-rw-r--r-- | frontend/src/app/globals.css | 30 | ||||
-rw-r--r-- | frontend/src/app/layout.tsx | 29 | ||||
-rw-r--r-- | frontend/src/app/page.tsx | 134 |
5 files changed, 62 insertions, 149 deletions
diff --git a/frontend/src/app/api/auth/[auth0]/route.ts b/frontend/src/app/api/auth/[auth0]/route.ts new file mode 100644 index 0000000..fc08676 --- /dev/null +++ b/frontend/src/app/api/auth/[auth0]/route.ts @@ -0,0 +1,3 @@ +import {handleAuth} from '@auth0/nextjs-auth0'; + +export const GET = handleAuth(); diff --git a/frontend/src/app/dashboard/page.tsx b/frontend/src/app/dashboard/page.tsx new file mode 100644 index 0000000..910ccc7 --- /dev/null +++ b/frontend/src/app/dashboard/page.tsx @@ -0,0 +1,15 @@ +import {Metadata} from "next"; +import Link from "next/link"; + +export const metadata: Metadata = { + title: "IBD Trader Dashboard", +} + +export default function Dashboard() { + return ( + <div> + <h1>Dashboard</h1> + <Link href="/api/auth/logout">Logout</Link> + </div> + ) +} diff --git a/frontend/src/app/globals.css b/frontend/src/app/globals.css index 875c01e..79008c2 100644 --- a/frontend/src/app/globals.css +++ b/frontend/src/app/globals.css @@ -2,32 +2,8 @@ @tailwind components; @tailwind utilities; -:root { - --foreground-rgb: 0, 0, 0; - --background-start-rgb: 214, 219, 220; - --background-end-rgb: 255, 255, 255; -} - -@media (prefers-color-scheme: dark) { - :root { - --foreground-rgb: 255, 255, 255; - --background-start-rgb: 0, 0, 0; - --background-end-rgb: 0, 0, 0; - } -} - -body { - color: rgb(var(--foreground-rgb)); - background: linear-gradient( - to bottom, - transparent, - rgb(var(--background-end-rgb)) - ) - rgb(var(--background-start-rgb)); -} - @layer utilities { - .text-balance { - text-wrap: balance; - } + .text-balance { + text-wrap: balance; + } } diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx index 3314e47..00da3a9 100644 --- a/frontend/src/app/layout.tsx +++ b/frontend/src/app/layout.tsx @@ -1,22 +1,21 @@ -import type { Metadata } from "next"; -import { Inter } from "next/font/google"; +import type {Metadata} from "next"; +import {Inter} from "next/font/google"; import "./globals.css"; +import {UserProvider} from "@auth0/nextjs-auth0/client"; -const inter = Inter({ subsets: ["latin"] }); +const inter = Inter({subsets: ["latin"]}); export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", + title: "Create Next App", + description: "Generated by create next app", }; -export default function RootLayout({ - children, -}: Readonly<{ - children: React.ReactNode; -}>) { - return ( - <html lang="en"> - <body className={inter.className}>{children}</body> - </html> - ); +export default function RootLayout({children,}: Readonly<{ children: React.ReactNode; }>) { + return ( + <html lang="en"> + <UserProvider> + <body className={inter.className}>{children}</body> + </UserProvider> + </html> + ); } diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx index 2acfd44..9f42d3a 100644 --- a/frontend/src/app/page.tsx +++ b/frontend/src/app/page.tsx @@ -1,113 +1,33 @@ import Image from "next/image"; +import {Metadata} from "next"; +import Link from "next/link"; +import {getSession} from "@auth0/nextjs-auth0"; +import {redirect} from "next/navigation"; -export default function Home() { - return ( - <main className="flex min-h-screen flex-col items-center justify-between p-24"> - <div className="z-10 w-full max-w-5xl items-center justify-between font-mono text-sm lg:flex"> - <p className="fixed left-0 top-0 flex w-full justify-center border-b border-gray-300 bg-gradient-to-b from-zinc-200 pb-6 pt-8 backdrop-blur-2xl dark:border-neutral-800 dark:bg-zinc-800/30 dark:from-inherit lg:static lg:w-auto lg:rounded-xl lg:border lg:bg-gray-200 lg:p-4 lg:dark:bg-zinc-800/30"> - Get started by editing - <code className="font-mono font-bold">src/app/page.tsx</code> - </p> - <div className="fixed bottom-0 left-0 flex h-48 w-full items-end justify-center bg-gradient-to-t from-white via-white dark:from-black dark:via-black lg:static lg:size-auto lg:bg-none"> - <a - className="pointer-events-none flex place-items-center gap-2 p-8 lg:pointer-events-auto lg:p-0" - href="https://vercel.com?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app" - target="_blank" - rel="noopener noreferrer" - > - By{" "} - <Image - src="/vercel.svg" - alt="Vercel Logo" - className="dark:invert" - width={100} - height={24} - priority - /> - </a> - </div> - </div> - - <div className="relative z-[-1] flex place-items-center before:absolute before:h-[300px] before:w-full before:-translate-x-1/2 before:rounded-full before:bg-gradient-radial before:from-white before:to-transparent before:blur-2xl before:content-[''] after:absolute after:-z-20 after:h-[180px] after:w-full after:translate-x-1/3 after:bg-gradient-conic after:from-sky-200 after:via-blue-200 after:blur-2xl after:content-[''] before:dark:bg-gradient-to-br before:dark:from-transparent before:dark:to-blue-700 before:dark:opacity-10 after:dark:from-sky-900 after:dark:via-[#0141ff] after:dark:opacity-40 sm:before:w-[480px] sm:after:w-[240px] before:lg:h-[360px]"> - <Image - className="relative dark:drop-shadow-[0_0_0.3rem_#ffffff70] dark:invert" - src="/next.svg" - alt="Next.js Logo" - width={180} - height={37} - priority - /> - </div> - - <div className="mb-32 grid text-center lg:mb-0 lg:w-full lg:max-w-5xl lg:grid-cols-4 lg:text-left"> - <a - href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app" - className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30" - target="_blank" - rel="noopener noreferrer" - > - <h2 className="mb-3 text-2xl font-semibold"> - Docs{" "} - <span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none"> - -> - </span> - </h2> - <p className="m-0 max-w-[30ch] text-sm opacity-50"> - Find in-depth information about Next.js features and API. - </p> - </a> +export const metadata: Metadata = { + title: "IBD Trader", +} - <a - href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app" - className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30" - target="_blank" - rel="noopener noreferrer" - > - <h2 className="mb-3 text-2xl font-semibold"> - Learn{" "} - <span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none"> - -> - </span> - </h2> - <p className="m-0 max-w-[30ch] text-sm opacity-50"> - Learn about Next.js in an interactive course with quizzes! - </p> - </a> +export default async function Home() { + const user = await getSession(); - <a - href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app" - className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30" - target="_blank" - rel="noopener noreferrer" - > - <h2 className="mb-3 text-2xl font-semibold"> - Templates{" "} - <span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none"> - -> - </span> - </h2> - <p className="m-0 max-w-[30ch] text-sm opacity-50"> - Explore starter templates for Next.js. - </p> - </a> + if (user) { + redirect("/dashboard") + } - <a - href="https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template&utm_campaign=create-next-app" - className="group rounded-lg border border-transparent px-5 py-4 transition-colors hover:border-gray-300 hover:bg-gray-100 hover:dark:border-neutral-700 hover:dark:bg-neutral-800/30" - target="_blank" - rel="noopener noreferrer" - > - <h2 className="mb-3 text-2xl font-semibold"> - Deploy{" "} - <span className="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none"> - -> - </span> - </h2> - <p className="m-0 max-w-[30ch] text-balance text-sm opacity-50"> - Instantly deploy your Next.js site to a shareable URL with Vercel. - </p> - </a> - </div> - </main> - ); + return ( + <div className="min-h-screen flex flex-col items-center justify-center bg-gray-100"> + <main className="flex flex-col items-center justify-center w-full flex-1 px-20 text-center"> + <div className="flex justify-center"> + <Image src="/logo.svg" alt="IBD Trader" width={200} height={200}/> + </div> + <h1 className="text-6xl font-bold mt-4">Trader</h1> + <button className="mt-16 px-6 py-3 bg-blue-500 text-white rounded-md hover:bg-blue-600"> + <Link href="/api/auth/login"> + Login + </Link> + </button> + </main> + </div> + ); } |