- To get started, edit the page.tsx file. -
-- Looking for a starting point or more instructions? Head over to{" "} - - Templates - {" "} - or the{" "} - - Learning - {" "} - center. -
-diff --git a/.gitignore b/.gitignore index 65ebea1..8175330 100644 --- a/.gitignore +++ b/.gitignore @@ -10,8 +10,9 @@ dist/ downloads/ eggs/ .eggs/ -lib/ lib64/ +# Note: Python lib/ excluded but frontend/src/lib/ allowed +!frontend/src/lib/ parts/ sdist/ var/ diff --git a/frontend/src/app/globals.css b/frontend/src/app/globals.css index a2dc41e..5ed6924 100644 --- a/frontend/src/app/globals.css +++ b/frontend/src/app/globals.css @@ -1,26 +1,13 @@ -@import "tailwindcss"; +@tailwind base; +@tailwind components; +@tailwind utilities; :root { - --background: #ffffff; - --foreground: #171717; -} - -@theme inline { - --color-background: var(--background); - --color-foreground: var(--foreground); - --font-sans: var(--font-geist-sans); - --font-mono: var(--font-geist-mono); -} - -@media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; - } + --foreground-rgb: 0, 0, 0; + --background-rgb: 249, 250, 251; } body { - background: var(--background); - color: var(--foreground); - font-family: Arial, Helvetica, sans-serif; + color: rgb(var(--foreground-rgb)); + background: rgb(var(--background-rgb)); } diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx index f7fa87e..c21e45e 100644 --- a/frontend/src/app/layout.tsx +++ b/frontend/src/app/layout.tsx @@ -1,20 +1,12 @@ -import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; -import "./globals.css"; +import type { Metadata } from 'next'; +import { Inter } from 'next/font/google'; +import './globals.css'; -const geistSans = Geist({ - variable: "--font-geist-sans", - subsets: ["latin"], -}); - -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", - subsets: ["latin"], -}); +const inter = Inter({ subsets: ['latin'] }); export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", + title: 'Galaxy-PO', + description: 'Quant Portfolio Management Application', }; export default function RootLayout({ @@ -23,12 +15,8 @@ export default function RootLayout({ children: React.ReactNode; }>) { return ( - -
- {children} - + + {children} ); } diff --git a/frontend/src/app/login/page.tsx b/frontend/src/app/login/page.tsx new file mode 100644 index 0000000..2825a2a --- /dev/null +++ b/frontend/src/app/login/page.tsx @@ -0,0 +1,88 @@ +'use client'; + +import { useState } from 'react'; +import { useRouter } from 'next/navigation'; +import { api } from '@/lib/api'; + +export default function LoginPage() { + const router = useRouter(); + const [username, setUsername] = useState(''); + const [password, setPassword] = useState(''); + const [error, setError] = useState(''); + const [loading, setLoading] = useState(false); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + setError(''); + setLoading(true); + + try { + await api.login(username, password); + router.push('/'); + } catch (err) { + setError(err instanceof Error ? err.message : '로그인에 실패했습니다.'); + } finally { + setLoading(false); + } + }; + + return ( +- Looking for a starting point or more instructions? Head over to{" "} - - Templates - {" "} - or the{" "} - - Learning - {" "} - center. -
-₩0
++0.00%
+0개
+0건
+아직 활동 내역이 없습니다.
+