diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx new file mode 100644 index 0000000..ea5fec3 --- /dev/null +++ b/src/app/dashboard/page.tsx @@ -0,0 +1,107 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { useRouter } from "next/navigation"; + +export default function DashboardPage() { + const router = useRouter(); + const [userEmail, setUserEmail] = useState(""); + const [isLoading, setIsLoading] = useState(true); + + useEffect(() => { + // Check if user is logged in + const email = localStorage.getItem("user_email"); + if (!email) { + router.push("/login"); + return; + } + setUserEmail(email); + setIsLoading(false); + }, [router]); + + const handleLogout = () => { + localStorage.removeItem("user_email"); + router.push("/"); + }; + + if (isLoading) { + return ( +
+
+

Loading...

+
+
+ ); + } + + return ( +
+ + +
+
+

+ Welcome to Your Dashboard! +

+

+ You have successfully registered and logged in to Learn German. Your teacher will be in touch with you soon to schedule your first lesson. +

+ +
+
+

+ Your Lessons +

+

View and manage your scheduled German lessons

+
+ +
+

+ Chat with Teacher +

+

Send messages to your German teacher

+
+ +
+

+ Progress Tracking +

+

Monitor your German learning progress

+
+
+ +
+

+ Getting Started +

+
    +
  • Complete your profile information
  • +
  • Schedule your first lesson with the teacher
  • +
  • Start learning German in a safe, friendly environment
  • +
+
+ + +
+
+
+ ); +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 096ff15..bb1f70a 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,34 +1,23 @@ import type { Metadata } from "next"; -import { Halant } from "next/font/google"; import { Inter } from "next/font/google"; -import { Montserrat } from "next/font/google"; import "./globals.css"; import { ServiceWrapper } from "@/components/ServiceWrapper"; import Tag from "@/tag/Tag"; -const halant = Halant({ - variable: "--font-halant", subsets: ["latin"], - weight: ["300", "400", "500", "600", "700"], -}); - const inter = Inter({ variable: "--font-inter", subsets: ["latin"], }); -const montserrat = Montserrat({ - variable: "--font-montserrat", subsets: ["latin"], -}); - export const metadata: Metadata = { - title: "Deutsch Lernen für Kinder | Sicherer Online-Unterricht", description: "Deutschunterricht für Kinder (5-12 Jahre) mit persönlicher Betreuung. Sicher, kinderfreundlich und mit direktem Chat zur Lehrerin.", keywords: "Deutschunterricht Kinder, Deutsch lernen, Online Unterricht Kinder, Sprachunterricht", metadataBase: new URL("https://deutsch-lernen-kinder.example.com"), + title: "Learn German for Kids | Safe Online Tutoring", description: "German lessons for children (5-12 years) with personal attention. Safe, child-friendly, and direct chat with the teacher.", keywords: "German lessons kids, learn German, online lessons kids, language tutoring", metadataBase: new URL("https://learn-german-kids.example.com"), openGraph: { - title: "Deutsch Lernen für Kinder 🌸", description: "Sicherer und freundlicher Deutschunterricht speziell für Kinder zwischen 5 und 12 Jahren.", siteName: "Deutsch Lernen", type: "website", images: [ + title: "Learn German for Kids", description: "Safe and friendly German lessons specifically for children ages 5-12.", siteName: "Learn German", type: "website", images: [ { - url: "http://img.b2bpic.net/free-photo/row-multiethnic-elementary-students-reading-book-classroom-vintage-effect-style-pictures_1253-1577.jpg", alt: "Kinder lernen Deutsch"}, + url: "http://img.b2bpic.net/free-photo/row-multiethnic-elementary-students-reading-book-classroom-vintage-effect-style-pictures_1253-1577.jpg", alt: "Children learning German"}, ], }, twitter: { - card: "summary_large_image", title: "Deutsch Lernen für Kinder", description: "Freundlicher Online-Deutschunterricht für Kinder (5-12 Jahre)", images: ["http://img.b2bpic.net/free-photo/row-multiethnic-elementary-students-reading-book-classroom-vintage-effect-style-pictures_1253-1577.jpg"], + card: "summary_large_image", title: "Learn German for Kids", description: "Friendly online German lessons for children (5-12 years)", images: ["http://img.b2bpic.net/free-photo/row-multiethnic-elementary-students-reading-book-classroom-vintage-effect-style-pictures_1253-1577.jpg"], }, robots: { index: true, @@ -45,7 +34,7 @@ export default function RootLayout({ {children} diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx new file mode 100644 index 0000000..423e454 --- /dev/null +++ b/src/app/login/page.tsx @@ -0,0 +1,121 @@ +"use client"; + +import { useState } from "react"; +import { useRouter } from "next/navigation"; + +export default function LoginPage() { + const router = useRouter(); + const [email, setEmail] = useState(""); + const [password, setPassword] = useState(""); + const [error, setError] = useState(""); + const [isLoading, setIsLoading] = useState(false); + + const handleLogin = async (e: React.FormEvent) => { + e.preventDefault(); + setError(""); + setIsLoading(true); + + try { + // Simulate login API call + if (!email || !password) { + setError("Please enter both email and password."); + return; + } + + // Here you would typically make an API call to authenticate + // For now, we'll simulate a successful login + console.log("Login attempt:", { email, password }); + + // Simulate successful login + localStorage.setItem("user_email", email); + router.push("/dashboard"); + } catch (err) { + setError("Login failed. Please try again."); + console.error(err); + } finally { + setIsLoading(false); + } + }; + + const handleRegister = () => { + router.push("/#contact"); + }; + + return ( +
+
+
+

+ Learn German +

+

Login to your account

+ +
+
+ + setEmail(e.target.value)} + placeholder="Enter your email" + className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent outline-none transition" + disabled={isLoading} + /> +
+ +
+ + setPassword(e.target.value)} + placeholder="Enter your password" + className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent outline-none transition" + disabled={isLoading} + /> +
+ + {error && ( +
+ {error} +
+ )} + + +
+ +
+

+ Don't have an account?{" "} + +

+
+ +
+ +
+
+
+
+ ); +} diff --git a/src/app/page.tsx b/src/app/page.tsx index ac98bc4..fd70915 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -12,6 +12,12 @@ import FooterLogoEmphasis from "@/components/sections/footer/FooterLogoEmphasis" import { Heart, HelpCircle, Sparkles, Star, Zap } from "lucide-react"; export default function LandingPage() { + const handleRegistrationSubmit = (data: Record) => { + console.log("Registration form submitted:", data); + // Handle registration logic here + window.location.href = "/login"; + }; + return (