37 Commits

Author SHA1 Message Date
bec95ea237 Merge version_2 into main
Merge version_2 into main
2026-06-07 06:00:48 +00:00
a1db1beb1e Update src/app/admin/user-management/page.tsx 2026-06-07 06:00:45 +00:00
defe3dc8ab Update src/app/admin/employer-approval/page.tsx 2026-06-07 06:00:45 +00:00
b172ba178c Merge version_2 into main
Merge version_2 into main
2026-06-07 06:00:07 +00:00
0ec7bba6f4 Update src/app/admin/content-moderation/page.tsx 2026-06-07 06:00:04 +00:00
587c29684b Update src/app/admin/analytics-dashboard/page.tsx 2026-06-07 06:00:03 +00:00
b51a131ebd Merge version_2 into main
Merge version_2 into main
2026-06-07 05:58:45 +00:00
5005dda660 Update src/app/admin/content-moderation/page.tsx 2026-06-07 05:58:42 +00:00
933b391571 Update src/app/admin/analytics-dashboard/page.tsx 2026-06-07 05:58:42 +00:00
879bbb7648 Merge version_2 into main
Merge version_2 into main
2026-06-07 05:58:17 +00:00
814071c673 Update src/app/styles/variables.css 2026-06-07 05:58:14 +00:00
ff88d82479 Update src/app/styles/base.css 2026-06-07 05:58:14 +00:00
8a58555d0f Add src/app/recruiter-system/page.tsx 2026-06-07 05:58:13 +00:00
de5025c26a Add src/app/payment-system-api/page.tsx 2026-06-07 05:58:13 +00:00
a3e007b33c Update src/app/page.tsx 2026-06-07 05:58:13 +00:00
215577c003 Add src/app/messaging/page.tsx 2026-06-07 05:58:12 +00:00
4b92a884ca Update src/app/layout.tsx 2026-06-07 05:58:12 +00:00
cc95961e6a Add src/app/employer/manage-jobs/page.tsx 2026-06-07 05:58:11 +00:00
ae88fe2497 Add src/app/employer/create-job/page.tsx 2026-06-07 05:58:11 +00:00
cd7c622fee Add src/app/dashboard/resume/page.tsx 2026-06-07 05:58:11 +00:00
10f2646e8a Add src/app/dashboard/profile/create/page.tsx 2026-06-07 05:58:10 +00:00
f36f875292 Add src/app/dashboard/page.tsx 2026-06-07 05:58:10 +00:00
518adc388a Add src/app/company-reviews/page.tsx 2026-06-07 05:58:09 +00:00
24ebcb03fa Add src/app/company-details/page.tsx 2026-06-07 05:58:09 +00:00
f485c3ee11 Add src/app/blog/page.tsx 2026-06-07 05:58:08 +00:00
7812e430f2 Add src/app/blog/[slug]/page.tsx 2026-06-07 05:58:08 +00:00
6dc48d2ed7 Add src/app/auth/verify-email/page.tsx 2026-06-07 05:58:08 +00:00
2de0d1c00b Add src/app/auth/register/page.tsx 2026-06-07 05:58:07 +00:00
5b7a02ffb9 Add src/app/auth/oauth-callback/page.tsx 2026-06-07 05:58:07 +00:00
bbc65a131f Add src/app/auth/login/page.tsx 2026-06-07 05:58:06 +00:00
9dafef8093 Add src/app/auth/forgot-password/page.tsx 2026-06-07 05:58:06 +00:00
983ac2b824 Add src/app/admin/user-management/page.tsx 2026-06-07 05:58:06 +00:00
752d43b9d4 Add src/app/admin/employer-approval/page.tsx 2026-06-07 05:58:05 +00:00
4c198a45f5 Add src/app/admin/content-moderation/page.tsx 2026-06-07 05:58:05 +00:00
050d0d3b34 Add src/app/admin/analytics-dashboard/page.tsx 2026-06-07 05:58:04 +00:00
683472b187 Merge version_1 into main
Merge version_1 into main
2026-06-07 05:53:09 +00:00
596a59c34e Merge version_1 into main
Merge version_1 into main
2026-06-07 05:52:30 +00:00
25 changed files with 2216 additions and 25 deletions

View File

@@ -0,0 +1,101 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
import ContactCTA from '@/components/sections/contact/ContactCTA';
export default function AdminAnalyticsDashboardPage() {
const navItems = [
{ name: "Home", id: "/" },
{ name: "Features", id: "/#features" },
{ name: "Jobs", id: "/#jobs" },
{ name: "Companies", id: "/#companies" },
{ name: "Pricing", id: "/#pricing" },
{ name: "Reviews", id: "/#testimonials" },
{ name: "FAQ", id: "/#faq" },
{ name: "Admin", id: "/admin/user-management" }
];
const footerColumns = [
{
title: "Platform", items: [
{ label: "Job Seekers", href: "/#features" },
{ label: "Employers", href: "/#features" },
{ label: "Recruiters", href: "/#features" },
{ label: "AI Features", href: "/#features" }
]
},
{
title: "Resources", items: [
{ label: "Featured Jobs", href: "/#jobs" },
{ label: "Featured Companies", href: "/#companies" },
{ label: "Pricing Plans", href: "/#pricing" },
{ label: "FAQ", href: "/#faq" }
]
},
{
title: "Company", items: [
{ label: "About Us", href: "#" },
{ label: "Contact Us", href: "#" },
{ label: "Blog", href: "#" },
{ label: "Careers", href: "#" }
]
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "#" },
{ label: "Terms of Service", href: "#" },
{ label: "Cookie Policy", href: "#" }
]
}
];
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={navItems}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "/#pricing" }}
/>
</div>
<div id="analytics-dashboard" data-section="analytics-dashboard">
<ContactCTA
tag="Admin Panel"
title="Analytics Dashboard"
description="Gain insights into platform performance with key metrics on user activity, job postings, applications, and revenue."
buttons={[
{ text: "View Analytics", href: "#" },
{ text: "Generate Custom Report", href: "#" }
]}
background={{ variant: "plain" }}
useInvertedBackground={false}
/>
</div>
<div id="footer" data-section="footer">
<FooterBaseReveal
logoText="JobGeorgia"
columns={footerColumns}
copyrightText="© 2024 JobGeorgia. All rights reserved."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,101 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
import ContactCTA from '@/components/sections/contact/ContactCTA';
export default function AdminContentModerationPage() {
const navItems = [
{ name: "Home", id: "/" },
{ name: "Features", id: "/#features" },
{ name: "Jobs", id: "/#jobs" },
{ name: "Companies", id: "/#companies" },
{ name: "Pricing", id: "/#pricing" },
{ name: "Reviews", id: "/#testimonials" },
{ name: "FAQ", id: "/#faq" },
{ name: "Admin", id: "/admin/user-management" }
];
const footerColumns = [
{
title: "Platform", items: [
{ label: "Job Seekers", href: "/#features" },
{ label: "Employers", href: "/#features" },
{ label: "Recruiters", href: "/#features" },
{ label: "AI Features", href: "/#features" }
]
},
{
title: "Resources", items: [
{ label: "Featured Jobs", href: "/#jobs" },
{ label: "Featured Companies", href: "/#companies" },
{ label: "Pricing Plans", href: "/#pricing" },
{ label: "FAQ", href: "/#faq" }
]
},
{
title: "Company", items: [
{ label: "About Us", href: "#" },
{ label: "Contact Us", href: "#" },
{ label: "Blog", href: "#" },
{ label: "Careers", href: "#" }
]
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "#" },
{ label: "Terms of Service", href: "#" },
{ label: "Cookie Policy", href: "#" }
]
}
];
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={navItems}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "/#pricing" }}
/>
</div>
<div id="content-moderation" data-section="content-moderation">
<ContactCTA
tag="Admin Panel"
title="Content Moderation"
description="Ensure platform integrity by reviewing and moderating job postings, resumes, and user-generated content."
buttons={[
{ text: "Review Content", href: "#" },
{ text: "Flagged Items", href: "#" }
]}
background={{ variant: "plain" }}
useInvertedBackground={false}
/>
</div>
<div id="footer" data-section="footer">
<FooterBaseReveal
logoText="JobGeorgia"
columns={footerColumns}
copyrightText="© 2024 JobGeorgia. All rights reserved."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,101 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
import ContactCTA from '@/components/sections/contact/ContactCTA';
export default function AdminEmployerApprovalPage() {
const navItems = [
{ name: "Home", id: "/" },
{ name: "Features", id: "/#features" },
{ name: "Jobs", id: "/#jobs" },
{ name: "Companies", id: "/#companies" },
{ name: "Pricing", id: "/#pricing" },
{ name: "Reviews", id: "/#testimonials" },
{ name: "FAQ", id: "/#faq" },
{ name: "Admin", id: "/admin/user-management" }
];
const footerColumns = [
{
title: "Platform", items: [
{ label: "Job Seekers", href: "/#features" },
{ label: "Employers", href: "/#features" },
{ label: "Recruiters", href: "/#features" },
{ label: "AI Features", href: "/#features" }
]
},
{
title: "Resources", items: [
{ label: "Featured Jobs", href: "/#jobs" },
{ label: "Featured Companies", href: "/#companies" },
{ label: "Pricing Plans", href: "/#pricing" },
{ label: "FAQ", href: "/#faq" }
]
},
{
title: "Company", items: [
{ label: "About Us", href: "#" },
{ label: "Contact Us", href: "#" },
{ label: "Blog", href: "#" },
{ label: "Careers", href: "#" }
]
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "#" },
{ label: "Terms of Service", href: "#" },
{ label: "Cookie Policy", href: "#" }
]
}
];
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={navItems}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "/#pricing" }}
/>
</div>
<div id="employer-approval" data-section="employer-approval">
<ContactCTA
tag="Admin Panel"
title="Employer Approval"
description="Review and approve employer accounts, ensuring compliance with platform standards and legal requirements."
buttons={[
{ text: "Review Employers", href: "#" },
{ text: "Approved Employers", href: "#" }
]}
background={{ variant: "plain" }}
useInvertedBackground={false}
/>
</div>
<div id="footer" data-section="footer">
<FooterBaseReveal
logoText="JobGeorgia"
columns={footerColumns}
copyrightText="© 2024 JobGeorgia. All rights reserved."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,101 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
import ContactCTA from '@/components/sections/contact/ContactCTA';
export default function AdminUserManagementPage() {
const navItems = [
{ name: "Home", id: "/" },
{ name: "Features", id: "/#features" },
{ name: "Jobs", id: "/#jobs" },
{ name: "Companies", id: "/#companies" },
{ name: "Pricing", id: "/#pricing" },
{ name: "Reviews", id: "/#testimonials" },
{ name: "FAQ", id: "/#faq" },
{ name: "Admin", id: "/admin/user-management" }
];
const footerColumns = [
{
title: "Platform", items: [
{ label: "Job Seekers", href: "/#features" },
{ label: "Employers", href: "/#features" },
{ label: "Recruiters", href: "/#features" },
{ label: "AI Features", href: "/#features" }
]
},
{
title: "Resources", items: [
{ label: "Featured Jobs", href: "/#jobs" },
{ label: "Featured Companies", href: "/#companies" },
{ label: "Pricing Plans", href: "/#pricing" },
{ label: "FAQ", href: "/#faq" }
]
},
{
title: "Company", items: [
{ label: "About Us", href: "#" },
{ label: "Contact Us", href: "#" },
{ label: "Blog", href: "#" },
{ label: "Careers", href: "#" }
]
},
{
title: "Legal", items: [
{ label: "Privacy Policy", href: "#" },
{ label: "Terms of Service", href: "#" },
{ label: "Cookie Policy", href: "#" }
]
}
];
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={navItems}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "/#pricing" }}
/>
</div>
<div id="user-management" data-section="user-management">
<ContactCTA
tag="Admin Panel"
title="User Management"
description="Oversee and manage user accounts, including editing profiles, resetting passwords, and handling suspensions."
buttons={[
{ text: "View Users", href: "#" },
{ text: "Manage Roles", href: "#" }
]}
background={{ variant: "plain" }}
useInvertedBackground={false}
/>
</div>
<div id="footer" data-section="footer">
<FooterBaseReveal
logoText="JobGeorgia"
columns={footerColumns}
copyrightText="© 2024 JobGeorgia. All rights reserved."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,81 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import Link from 'next/link';
export default function ForgotPasswordPage() {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{ name: "Home", id: "#home" },
{ name: "Features", id: "#features" },
{ name: "Jobs", id: "#jobs" },
{ name: "Companies", id: "#companies" },
{ name: "Pricing", id: "#pricing" },
{ name: "Reviews", id: "#testimonials" },
{ name: "FAQ", id: "#faq" },
]}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "/auth/login" }}
/>
</div>
<div className="min-h-screen flex items-center justify-center py-12 px-4 sm:px-6 lg:px-8 bg-gradient-to-br from-background to-background-accent text-foreground">
<div className="max-w-md w-full space-y-8 p-10 rounded-xl shadow-2xl bg-card border border-primary-cta/20">
<div>
<h2 className="mt-6 text-center text-3xl font-extrabold">
Forgot your password?
</h2>
<p className="mt-2 text-center text-sm text-foreground/70">
Enter your email address below to receive a password reset link.
</p>
</div>
<form className="mt-8 space-y-6" action="#" method="POST">
<div>
<label htmlFor="email-address" className="sr-only">Email address</label>
<input
id="email-address"
name="email"
type="email"
autoComplete="email"
required
className="appearance-none relative block w-full px-3 py-2 border border-foreground/30 placeholder-foreground/50 text-foreground rounded-md focus:outline-none focus:ring-primary-cta focus:border-primary-cta focus:z-10 sm:text-sm bg-background-accent/50"
placeholder="Email address"
/>
</div>
<div>
<button
type="submit"
className="group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-primary-cta hover:bg-primary-cta/80 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-cta"
>
Send reset link
</button>
</div>
<div className="text-center text-sm">
<Link href="/auth/login" className="font-medium text-primary-cta hover:text-primary-cta/80">
Back to Login
</Link>
</div>
</form>
</div>
</div>
</ReactLenis>
</ThemeProvider>
);
}

135
src/app/auth/login/page.tsx Normal file
View File

@@ -0,0 +1,135 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import Link from 'next/link';
export default function LoginPage() {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{ name: "Home", id: "#home" },
{ name: "Features", id: "#features" },
{ name: "Jobs", id: "#jobs" },
{ name: "Companies", id: "#companies" },
{ name: "Pricing", id: "#pricing" },
{ name: "Reviews", id: "#testimonials" },
{ name: "FAQ", id: "#faq" },
]}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "/auth/login" }}
/>
</div>
<div className="min-h-screen flex items-center justify-center py-12 px-4 sm:px-6 lg:px-8 bg-gradient-to-br from-background to-background-accent text-foreground">
<div className="max-w-md w-full space-y-8 p-10 rounded-xl shadow-2xl bg-card border border-primary-cta/20">
<div>
<h2 className="mt-6 text-center text-3xl font-extrabold">
Sign in to your account
</h2>
<p className="mt-2 text-center text-sm text-foreground/70">
Or{' '}
<Link href="/auth/register" className="font-medium text-primary-cta hover:text-primary-cta/80">
register for a new account
</Link>
</p>
</div>
<form className="mt-8 space-y-6" action="#" method="POST">
<div className="rounded-md shadow-sm -space-y-px">
<div>
<label htmlFor="email-address" className="sr-only">Email address</label>
<input
id="email-address"
name="email"
type="email"
autoComplete="email"
required
className="appearance-none rounded-none relative block w-full px-3 py-2 border border-foreground/30 placeholder-foreground/50 text-foreground rounded-t-md focus:outline-none focus:ring-primary-cta focus:border-primary-cta focus:z-10 sm:text-sm bg-background-accent/50"
placeholder="Email address"
/>
</div>
<div>
<label htmlFor="password" className="sr-only">Password</label>
<input
id="password"
name="password"
type="password"
autoComplete="current-password"
required
className="appearance-none rounded-none relative block w-full px-3 py-2 border border-foreground/30 placeholder-foreground/50 text-foreground rounded-b-md focus:outline-none focus:ring-primary-cta focus:border-primary-cta focus:z-10 sm:text-sm bg-background-accent/50"
placeholder="Password"
/>
</div>
</div>
<div className="flex items-center justify-between">
<div className="flex items-center">
<input
id="remember-me"
name="remember-me"
type="checkbox"
className="h-4 w-4 text-primary-cta focus:ring-primary-cta border-foreground/30 rounded"
/>
<label htmlFor="remember-me" className="ml-2 block text-sm text-foreground/70">
Remember me
</label>
</div>
<div className="text-sm">
<Link href="/auth/forgot-password" className="font-medium text-primary-cta hover:text-primary-cta/80">
Forgot your password?
</Link>
</div>
</div>
<div>
<button
type="submit"
className="group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-primary-cta hover:bg-primary-cta/80 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-cta"
>
Sign in
</button>
</div>
<div className="relative">
<div className="absolute inset-0 flex items-center">
<div className="w-full border-t border-foreground/30" />
</div>
<div className="relative flex justify-center text-sm">
<span className="px-2 bg-card text-foreground/70">
Or continue with
</span>
</div>
</div>
<div>
<button
type="button"
className="group relative w-full flex justify-center py-2 px-4 border border-foreground/30 text-sm font-medium rounded-md text-foreground bg-secondary-cta hover:bg-secondary-cta/80 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-secondary-cta"
>
<svg className="w-5 h-5 mr-2" aria-hidden="true" fill="currentColor" viewBox="0 0 24 24"><path d="M22.56 12.27c0-.78-.07-1.5-.18-2.22H12v4.11h6.14a4.8 4.8 0 01-2.09 3.17v2.67h3.42c2.01-1.85 3.17-4.57 3.17-7.8zm-11.28 9.17c-3.11 0-5.74-2.09-6.68-4.9h3.25a6.49 6.49 0 003.43 2.9v-3.78H5.98V10.74h-2.1V7.96h2.1V5.18H9.36v2.78h2.1zm0-16.71V0H9.36v2.78h-2.1v2.78h2.1v2.78h2.1V7.96z"/></svg>
Google
</button>
</div>
</form>
</div>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,55 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
export default function OAuthCallbackPage() {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{ name: "Home", id: "#home" },
{ name: "Features", id: "#features" },
{ name: "Jobs", id: "#jobs" },
{ name: "Companies", id: "#companies" },
{ name: "Pricing", id: "#pricing" },
{ name: "Reviews", id: "#testimonials" },
{ name: "FAQ", id: "#faq" },
]}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "/auth/login" }}
/>
</div>
<div className="min-h-screen flex items-center justify-center py-12 px-4 sm:px-6 lg:px-8 bg-gradient-to-br from-background to-background-accent text-foreground">
<div className="max-w-md w-full space-y-8 p-10 rounded-xl shadow-2xl bg-card border border-primary-cta/20 text-center">
<h2 className="mt-6 text-3xl font-extrabold">
Processing your login...
</h2>
<p className="mt-2 text-sm text-foreground/70">
Please wait while we securely log you in.
</p>
<div className="mt-6">
{/* A simple spinner or loading animation could go here */}
<div className="animate-spin rounded-full h-12 w-12 border-b-2 border-primary-cta mx-auto"></div>
</div>
</div>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,106 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import Link from 'next/link';
export default function RegisterPage() {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{ name: "Home", id: "#home" },
{ name: "Features", id: "#features" },
{ name: "Jobs", id: "#jobs" },
{ name: "Companies", id: "#companies" },
{ name: "Pricing", id: "#pricing" },
{ name: "Reviews", id: "#testimonials" },
{ name: "FAQ", id: "#faq" },
]}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "/auth/login" }}
/>
</div>
<div className="min-h-screen flex items-center justify-center py-12 px-4 sm:px-6 lg:px-8 bg-gradient-to-br from-background to-background-accent text-foreground">
<div className="max-w-md w-full space-y-8 p-10 rounded-xl shadow-2xl bg-card border border-primary-cta/20">
<div>
<h2 className="mt-6 text-center text-3xl font-extrabold">
Create an account
</h2>
<p className="mt-2 text-center text-sm text-foreground/70">
Or{' '}
<Link href="/auth/login" className="font-medium text-primary-cta hover:text-primary-cta/80">
sign in to your existing account
</Link>
</p>
</div>
<form className="mt-8 space-y-6" action="#" method="POST">
<div className="rounded-md shadow-sm -space-y-px">
<div>
<label htmlFor="full-name" className="sr-only">Full Name</label>
<input
id="full-name"
name="full-name"
type="text"
autoComplete="name"
required
className="appearance-none rounded-none relative block w-full px-3 py-2 border border-foreground/30 placeholder-foreground/50 text-foreground rounded-t-md focus:outline-none focus:ring-primary-cta focus:border-primary-cta focus:z-10 sm:text-sm bg-background-accent/50"
placeholder="Full Name"
/>
</div>
<div>
<label htmlFor="email-address" className="sr-only">Email address</label>
<input
id="email-address"
name="email"
type="email"
autoComplete="email"
required
className="appearance-none rounded-none relative block w-full px-3 py-2 border border-foreground/30 placeholder-foreground/50 text-foreground focus:outline-none focus:ring-primary-cta focus:border-primary-cta focus:z-10 sm:text-sm bg-background-accent/50"
placeholder="Email address"
/>
</div>
<div>
<label htmlFor="password" className="sr-only">Password</label>
<input
id="password"
name="password"
type="password"
autoComplete="new-password"
required
className="appearance-none rounded-none relative block w-full px-3 py-2 border border-foreground/30 placeholder-foreground/50 text-foreground rounded-b-md focus:outline-none focus:ring-primary-cta focus:border-primary-cta focus:z-10 sm:text-sm bg-background-accent/50"
placeholder="Password"
/>
</div>
</div>
<div>
<button
type="submit"
className="group relative w-full flex justify-center py-2 px-4 border border-transparent text-sm font-medium rounded-md text-white bg-primary-cta hover:bg-primary-cta/80 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-cta"
>
Register
</button>
</div>
</form>
</div>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,63 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import Link from 'next/link';
export default function VerifyEmailPage() {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{ name: "Home", id: "#home" },
{ name: "Features", id: "#features" },
{ name: "Jobs", id: "#jobs" },
{ name: "Companies", id: "#companies" },
{ name: "Pricing", id: "#pricing" },
{ name: "Reviews", id: "#testimonials" },
{ name: "FAQ", id: "#faq" },
]}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "/auth/login" }}
/>
</div>
<div className="min-h-screen flex items-center justify-center py-12 px-4 sm:px-6 lg:px-8 bg-gradient-to-br from-background to-background-accent text-foreground">
<div className="max-w-md w-full space-y-8 p-10 rounded-xl shadow-2xl bg-card border border-primary-cta/20 text-center">
<h2 className="mt-6 text-3xl font-extrabold">
Verify your email address
</h2>
<p className="mt-2 text-sm text-foreground/70">
We've sent a verification email to your inbox. Please check your email and click the link to activate your account.
</p>
<p className="mt-4 text-sm text-foreground/70">
Didn't receive the email?{' '}
<Link href="#" className="font-medium text-primary-cta hover:text-primary-cta/80">
Resend verification email
</Link>
</p>
<div className="mt-6">
<Link href="/auth/login" className="inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-primary-cta hover:bg-primary-cta/80 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-cta">
Back to Login
</Link>
</div>
</div>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,263 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import { Metadata } from "next";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
// Mock blog content for dynamic page
const BLOG_ARTICLES: Record<string, any> = {
"first-post": {
title: "Mastering Your Job Search in Georgia", category: "Career Advice", authorName: "Ana Japaridze", date: "July 15, 2024", imageSrc: "http://img.b2bpic.net/free-photo/education-skills-recruitment-word-search_53876-127810.jpg", imageAlt: "Job search strategies", content: `
<p>Landing your dream job in Georgia requires a strategic approach. The market is dynamic, with opportunities spanning various sectors from IT to tourism. Heres how you can stand out:</p>
<h2>1. Optimize Your Resume and Profile</h2>
<p>Utilize JobGeorgia's AI Resume Builder to create a compelling CV. Pay attention to keywords relevant to your target industry. A strong, keyword-rich profile on our platform increases your visibility to recruiters.</p>
<h2>2. Network Effectively</h2>
<p>While online applications are crucial, don't underestimate the power of networking. Attend industry events, webinars, and connect with professionals on LinkedIn. Georgian business culture values personal connections.</p>
<h2>3. Tailor Your Applications</h2>
<p>Generic applications rarely succeed. Use our AI Cover Letter Generator to customize your application for each specific role. Highlight how your skills and experience align with the job description and company values.</p>
<h2>4. Prepare for Interviews</h2>
<p>Research the company thoroughly and be ready to discuss your experience, problem-solving skills, and career aspirations. Practice common interview questions and prepare insightful questions to ask the interviewer.</p>
<p>By following these steps, you'll significantly improve your chances of securing a desirable position in Georgia's competitive job market.</p>
`,
excerpt: "Unlock the secrets to a successful job hunt with our expert tips tailored for the Georgian market.", keywords: ["job search Georgia", "career advice", "resume optimization", "networking", "interview tips"],
},
"second-post": {
title: "The Rise of Tech Jobs in Tbilisi: What You Need to Know", category: "Industry Insights", authorName: "Davit Gabunia", date: "July 20, 2024", imageSrc: "http://img.b2bpic.net/free-photo/engineer-coding-workstation-solar-panel-manufacturing-plant_482257-125829.jpg", imageAlt: "Tbilisi skyline with tech elements", content: `
<p>Tbilisi is rapidly emerging as a regional tech hub, attracting both local talent and international investment. This growth is creating a wealth of opportunities for skilled professionals.</p>
<h2>Booming Sectors</h2>
<p>Key areas experiencing significant growth include software development, cybersecurity, fintech, and IT services. Many international companies are establishing branches in Tbilisi, alongside a vibrant startup ecosystem.</p>
<h2>In-Demand Skills</h2>
<p>Employers are actively seeking candidates proficient in programming languages like Python, JavaScript, and Go. Cloud computing (AWS, Azure, GCP), data science, and AI/ML expertise are also highly valued. Soft skills such as problem-solving, adaptability, and teamwork are equally crucial.</p>
<h2>Educational Opportunities</h2>
<p>Georgian universities and private academies are increasingly offering specialized tech programs to meet the demand. Continuous learning and upskilling are essential to stay competitive in this fast-evolving landscape.</p>
<p>JobGeorgia is committed to connecting tech talent with these exciting opportunities. Explore our listings to find your next challenge in Tbilisi's burgeoning tech scene.</p>
`,
excerpt: "Explore the booming tech sector in Georgia's capital and discover in-demand skills.", keywords: ["tech jobs Tbilisi", "Georgia tech industry", "software development Georgia", "fintech Tbilisi", "IT jobs Georgia"],
},
"third-post": {
title: "Navigating Remote Work in Georgia: A Guide for Employers and Employees", category: "Company Culture", authorName: "Mariam Davitashvili", date: "July 25, 2024", imageSrc: "http://img.b2bpic.net/free-photo/asian-manager-virtual-meeting-night_482257-124219.jpg", imageAlt: "Remote team collaboration", content: `
<p>Remote work has become a permanent fixture in the global landscape, and Georgia is no exception. Both employers and employees need to adapt to new strategies to ensure productivity and engagement.</p>
<h2>For Employers</h2>
<p>Establishing clear communication channels, investing in reliable collaboration tools, and fostering a culture of trust are paramount. Regular check-ins, performance metrics, and opportunities for virtual team-building can help maintain cohesion and morale.</p>
<h2>For Employees</h2>
<p>Self-discipline, time management, and setting boundaries between work and personal life are crucial. Create a dedicated workspace, minimize distractions, and proactively communicate with your team and manager. Leverage tools for task management and virtual meetings to stay organized and connected.</p>
<p>The Georgian Context</p>
<p>Georgia's favorable tax environment for freelancers and digital nomads, combined with a growing digital infrastructure, makes it an attractive location for remote work. JobGeorgia facilitates connections for remote roles, helping businesses find talent and individuals discover flexible opportunities.</p>
<p>Embracing remote work effectively can lead to increased flexibility, broader talent pools, and enhanced work-life balance for all involved.</p>
`,
excerpt: "Best practices and challenges of remote work models in the Georgian business environment.", keywords: ["remote work Georgia", "remote jobs", "employer guide remote work", "employee guide remote work", "digital nomad Georgia"],
},
};
function getBlogPostBySlug(slug: string) {
return BLOG_ARTICLES[slug];
}
// Function to get all slugs for static generation
export async function generateStaticParams() {
return Object.keys(BLOG_ARTICLES).map(slug => ({
slug
}));
}
// Dynamically generated metadata based on the slug
export async function generateMetadata({ params }: { params: { slug: string } }): Promise<Metadata> {
const post = getBlogPostBySlug(params.slug);
if (!post) {
return {
title: "Article Not Found", description: "The requested blog article could not be found."};
}
return {
title: `${post.title} | JobGeorgia Blog`,
description: post.excerpt,
keywords: post.keywords,
openGraph: {
title: `${post.title} | JobGeorgia Blog`,
description: post.excerpt,
url: `https://www.jobgeorgia.ge/blog/${params.slug}`,
siteName: "JobGeorgia", images: [{
url: post.imageSrc,
alt: post.imageAlt
}],
type: "article"},
twitter: {
card: "summary_large_image", title: `${post.title} | JobGeorgia Blog`,
description: post.excerpt,
images: [post.imageSrc],
},
};
}
export default function BlogArticlePage({ params }: { params: { slug: string } }) {
const post = getBlogPostBySlug(params.slug);
if (!post) {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div className="flex min-h-screen flex-col items-center justify-center p-8 text-center">
<h1 className="text-4xl font-bold mb-4">Article Not Found</h1>
<p className="text-lg">The blog post you are looking for does not exist.</p>
<a href="/blog" className="mt-6 text-primary-cta hover:underline">Go back to blog list</a>
</div>
</ReactLenis>
</ThemeProvider>
);
}
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{
name: "Home", id: "#home"
},
{
name: "Features", id: "#features"
},
{
name: "Jobs", id: "#jobs"
},
{
name: "Companies", id: "#companies"
},
{
name: "Pricing", id: "#pricing"
},
{
name: "Reviews", id: "#testimonials"
},
{
name: "FAQ", id: "#faq"
},
{
name: "Blog", id: "/blog"
}
]}
brandName="JobGeorgia"
button={{
text: "Get Started", href: "#pricing"
}}
/>
</div>
<div className="container mx-auto px-4 py-8 max-w-4xl">
<div className="relative w-full h-80 rounded-lg overflow-hidden mb-8">
<img src={post.imageSrc} alt={post.imageAlt} className="w-full h-full object-cover" />
</div>
<p className="text-sm text-gray-500 mb-2">{post.category} {post.date}</p>
<h1 className="text-4xl font-bold mb-4 text-foreground">{post.title}</h1>
<p className="text-lg text-gray-700 mb-6">By {post.authorName}</p>
<div className="prose prose-lg dark:prose-invert max-w-none text-foreground"
dangerouslySetInnerHTML={{ __html: post.content }}
/>
<div className="mt-12 text-center">
<a href="/blog" className="inline-flex items-center px-6 py-3 border border-transparent text-base font-medium rounded-md shadow-sm text-white bg-primary-cta hover:opacity-90">
Back to all posts
</a>
</div>
</div>
<div id="footer" data-section="footer">
<FooterBaseReveal
logoText="JobGeorgia"
columns={[
{
title: "Platform", items: [
{
label: "Job Seekers", href: "#features"
},
{
label: "Employers", href: "#features"
},
{
label: "Recruiters", href: "#features"
},
{
label: "AI Features", href: "#features"
},
],
},
{
title: "Resources", items: [
{
label: "Featured Jobs", href: "#jobs"
},
{
label: "Featured Companies", href: "#companies"
},
{
label: "Pricing Plans", href: "#pricing"
},
{
label: "FAQ", href: "#faq"
},
{
label: "Blog", href: "/blog"
}
],
},
{
title: "Company", items: [
{
label: "About Us", href: "#"
},
{
label: "Contact Us", href: "#"
},
{
label: "Careers", href: "#"
},
],
},
{
title: "Legal", items: [
{
label: "Privacy Policy", href: "#"
},
{
label: "Terms of Service", href: "#"
},
{
label: "Cookie Policy", href: "#"
},
],
},
]}
copyrightText="© 2024 JobGeorgia. All rights reserved."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

167
src/app/blog/page.tsx Normal file
View File

@@ -0,0 +1,167 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import { Metadata } from "next";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import BlogCardOne from '@/components/sections/blog/BlogCardOne';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
export const metadata: Metadata = {
title: "JobGeorgia Blog | Insights & Career Advice", description: "Explore the latest articles, career advice, industry insights, and company culture guides from JobGeorgia. Stay informed on the Georgian job market.", keywords: ["JobGeorgia blog", "career advice Georgia", "job market insights", "recruitment tips Georgia", "tech jobs Tbilisi blog"],
openGraph: {
title: "JobGeorgia Blog | Insights & Career Advice", description: "Explore the latest articles, career advice, industry insights, and company culture guides from JobGeorgia.", url: "https://www.jobgeorgia.ge/blog", siteName: "JobGeorgia", images: [{
url: "http://img.b2bpic.net/free-photo/education-skills-recruitment-word-search_53876-127810.jpg", alt: "JobGeorgia Blog Banner"
}],
type: "website"},
twitter: {
card: "summary_large_image", title: "JobGeorgia Blog | Insights & Career Advice", description: "Stay informed on the Georgian job market with JobGeorgia's blog.", images: ["http://img.b2bpic.net/free-photo/education-skills-recruitment-word-search_53876-127810.jpg"],
},
};
const MOCK_BLOG_POSTS = [
{
id: "first-post", category: "Career Advice", title: "Mastering Your Job Search in Georgia", excerpt: "Unlock the secrets to a successful job hunt with our expert tips tailored for the Georgian market.", imageSrc: "http://img.b2bpic.net/free-photo/education-skills-recruitment-word-search_53876-127810.jpg", imageAlt: "Job search strategies", authorName: "Ana Japaridze", authorAvatar: "http://img.b2bpic.net/free-photo/portrait-serious-man-looking-laptop-screen-caf_23-2147891949.jpg", date: "July 15, 2024"},
{
id: "second-post", category: "Industry Insights", title: "The Rise of Tech Jobs in Tbilisi: What You Need to Know", excerpt: "Explore the booming tech sector in Georgia's capital and discover in-demand skills.", imageSrc: "http://img.b2bpic.net/free-photo/engineer-coding-workstation-solar-panel-manufacturing-plant_482257-125829.jpg", imageAlt: "Tbilisi skyline with tech elements", authorName: "Davit Gabunia", authorAvatar: "http://img.b2bpic.net/free-photo/looking-camera-young-pretty-female-office-worker-sitting-desk-with-office-tools-putting-hand-chin-isolated-olive-background_141793-63178.jpg", date: "July 20, 2024"},
{
id: "third-post", category: "Company Culture", title: "Navigating Remote Work in Georgia: A Guide for Employers and Employees", excerpt: "Best practices and challenges of remote work models in the Georgian business environment.", imageSrc: "http://img.b2bpic.net/free-photo/asian-manager-virtual-meeting-night_482257-124219.jpg", imageAlt: "Remote team collaboration", authorName: "Mariam Davitashvili", authorAvatar: "http://img.b2bpic.net/free-photo/side-view-man-using-tablet-outdoors_23-2150747672.jpg", date: "July 25, 2024"},
];
export default function BlogListPage() {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{
name: "Home", id: "#home"
},
{
name: "Features", id: "#features"
},
{
name: "Jobs", id: "#jobs"
},
{
name: "Companies", id: "#companies"
},
{
name: "Pricing", id: "#pricing"
},
{
name: "Reviews", id: "#testimonials"
},
{
name: "FAQ", id: "#faq"
},
{
name: "Blog", id: "/blog"
}
]}
brandName="JobGeorgia"
button={{
text: "Get Started", href: "#pricing"
}}
/>
</div>
<div id="blog-list" data-section="blog-list">
<BlogCardOne
title="JobGeorgia Blog"
description="Stay updated with the latest insights, career advice, and industry trends to navigate the Georgian job market effectively."
blogs={MOCK_BLOG_POSTS.map(post => ({
...post,
onBlogClick: () => window.location.href = `/blog/${post.id}`,
}))}
animationType="slide-up"
textboxLayout="default"
useInvertedBackground={true}
/>
</div>
<div id="footer" data-section="footer">
<FooterBaseReveal
logoText="JobGeorgia"
columns={[
{
title: "Platform", items: [
{
label: "Job Seekers", href: "#features"
},
{
label: "Employers", href: "#features"
},
{
label: "Recruiters", href: "#features"
},
{
label: "AI Features", href: "#features"
},
],
},
{
title: "Resources", items: [
{
label: "Featured Jobs", href: "#jobs"
},
{
label: "Featured Companies", href: "#companies"
},
{
label: "Pricing Plans", href: "#pricing"
},
{
label: "FAQ", href: "#faq"
},
{
label: "Blog", href: "/blog"
}
],
},
{
title: "Company", items: [
{
label: "About Us", href: "#"
},
{
label: "Contact Us", href: "#"
},
{
label: "Careers", href: "#"
},
],
},
{
title: "Legal", items: [
{
label: "Privacy Policy", href: "#"
},
{
label: "Terms of Service", href: "#"
},
{
label: "Cookie Policy", href: "#"
},
],
},
]}
copyrightText="© 2024 JobGeorgia. All rights reserved."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,61 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import HeroCarouselLogo from '@/components/sections/hero/heroCarouselLogo/HeroCarouselLogo';
export default function CompanyDetailsPage() {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{ name: "Home", id: "#home" },
{ name: "Features", id: "#features" },
{ name: "Featured Jobs", id: "#jobs" },
{ name: "Company Details", id: "/company-details" },
{ name: "Company Reviews", id: "/company-reviews" },
{ name: "Company Jobs", id: "/company-jobs" },
{ name: "Company Analytics", id: "/company-analytics" },
{ name: "Pricing", id: "#pricing" },
{ name: "Testimonials", id: "#testimonials" },
{ name: "FAQ", id: "#faq" },
]}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "#pricing" }}
/>
</div>
<div id="company-details-hero" data-section="company-details-hero">
<HeroCarouselLogo
logoText="Company Details"
description="Explore in-depth information about this company, including its mission, vision, and team culture."
buttons={[
{ text: "View Jobs", href: "/company-jobs" },
{ text: "Read Reviews", href: "/company-reviews" },
]}
slides={[
{ imageSrc: "http://img.b2bpic.net/free-photo/diverse-colleagues-discussing-work-office_1262-18150.jpg", imageAlt: "Company team working" },
{ imageSrc: "http://img.b2bpic.net/free-photo/business-people-office-working-together_23-2148906649.jpg", imageAlt: "Modern office interior" },
]}
autoplayDelay={5000}
showDimOverlay={true}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,61 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import HeroCarouselLogo from '@/components/sections/hero/heroCarouselLogo/HeroCarouselLogo';
export default function CompanyReviewsPage() {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{ name: "Home", id: "#home" },
{ name: "Features", id: "#features" },
{ name: "Featured Jobs", id: "#jobs" },
{ name: "Company Details", id: "/company-details" },
{ name: "Company Reviews", id: "/company-reviews" },
{ name: "Company Jobs", id: "/company-jobs" },
{ name: "Company Analytics", id: "/company-analytics" },
{ name: "Pricing", id: "#pricing" },
{ name: "Testimonials", id: "#testimonials" },
{ name: "FAQ", id: "#faq" },
]}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "#pricing" }}
/>
</div>
<div id="company-reviews-hero" data-section="company-reviews-hero">
<HeroCarouselLogo
logoText="Company Reviews"
description="Read authentic reviews from current and former employees to get an inside look at the company culture and work environment."
buttons={[
{ text: "See Company Details", href: "/company-details" },
{ text: "View Jobs", href: "/company-jobs" },
]}
slides={[
{ imageSrc: "http://img.b2bpic.net/free-photo/social-media-concept-still-life_23-2149831960.jpg", imageAlt: "Reviews and ratings" },
{ imageSrc: "http://img.b2bpic.net/free-photo/female-journalist-writing-notes-notepad_23-2148170942.jpg", imageAlt: "Person writing a review" },
]}
autoplayDelay={5000}
showDimOverlay={true}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,88 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
export default function DashboardPage() {
const navItems = [
{ name: "Home", id: "#home" },
{ name: "Features", id: "#features" },
{ name: "Jobs", id: "#jobs" },
{ name: "Companies", id: "#companies" },
{ name: "Pricing", id: "#pricing" },
{ name: "Reviews", id: "#testimonials" },
{ name: "FAQ", id: "#faq" },
{ name: "Dashboard", id: "/dashboard" }
];
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={navItems}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "#pricing" }}
/>
</div>
<div className="min-h-screen pt-24 pb-16 flex flex-col items-center justify-center text-center px-4">
<h1 className="text-5xl font-bold mb-4">Job Seeker Dashboard</h1>
<p className="text-lg mb-8 max-w-2xl text-gray-400">Welcome to your personalized dashboard. Manage your profile, applications, and discover new opportunities.</p>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 max-w-4xl w-full">
<a href="/dashboard/profile/create" className="p-6 border rounded-lg shadow-lg hover:shadow-xl transition-shadow duration-300">
<h2 className="text-2xl font-semibold">Create/Update Profile</h2>
<p className="text-sm text-gray-500">Build your professional profile.</p>
</a>
<a href="/dashboard/resume" className="p-6 border rounded-lg shadow-lg hover:shadow-xl transition-shadow duration-300">
<h2 className="text-2xl font-semibold">Resume Builder</h2>
<p className="text-sm text-gray-500">Upload or build your resume.</p>
</a>
<a href="/dashboard/saved-jobs" className="p-6 border rounded-lg shadow-lg hover:shadow-xl transition-shadow duration-300">
<h2 className="text-2xl font-semibold">Saved Jobs</h2>
<p className="text-sm text-gray-500">View jobs you've bookmarked.</p>
</a>
<a href="/dashboard/applied-jobs" className="p-6 border rounded-lg shadow-lg hover:shadow-xl transition-shadow duration-300">
<h2 className="text-2xl font-semibold">Applied Jobs</h2>
<p className="text-sm text-gray-500">Track your job applications.</p>
</a>
<a href="/dashboard/interviews" className="p-6 border rounded-lg shadow-lg hover:shadow-xl transition-shadow duration-300">
<h2 className="text-2xl font-semibold">Interview Invitations</h2>
<p className="text-sm text-gray-500">See your upcoming interviews.</p>
</a>
<a href="/dashboard/recommended-jobs" className="p-6 border rounded-lg shadow-lg hover:shadow-xl transition-shadow duration-300">
<h2 className="text-2xl font-semibold">Recommended Jobs</h2>
<p className="text-sm text-gray-500">Explore jobs tailored for you.</p>
</a>
</div>
</div>
<div id="footer" data-section="footer">
<FooterBaseReveal
logoText="JobGeorgia"
columns={[
{ title: "Platform", items: [{ label: "Job Seekers", href: "#features" }, { label: "Employers", href: "#features" }, { label: "Recruiters", href: "#features" }, { label: "AI Features", href: "#features" }] },
{ title: "Resources", items: [{ label: "Featured Jobs", href: "#jobs" }, { label: "Featured Companies", href: "#companies" }, { label: "Pricing Plans", href: "#pricing" }, { label: "FAQ", href: "#faq" }] },
{ title: "Company", items: [{ label: "About Us", href: "#" }, { label: "Contact Us", href: "#" }, { label: "Blog", href: "#" }, { label: "Careers", href: "#" }] },
{ title: "Legal", items: [{ label: "Privacy Policy", href: "#" }, { label: "Terms of Service", href: "#" }, { label: "Cookie Policy", href: "#" }] },
]}
copyrightText="© 2024 JobGeorgia. All rights reserved."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,68 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
export default function ProfileCreatePage() {
const navItems = [
{ name: "Home", id: "#home" },
{ name: "Features", id: "#features" },
{ name: "Jobs", id: "#jobs" },
{ name: "Companies", id: "#companies" },
{ name: "Pricing", id: "#pricing" },
{ name: "Reviews", id: "#testimonials" },
{ name: "FAQ", id: "#faq" },
{ name: "Dashboard", id: "/dashboard" }
];
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={navItems}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "#pricing" }}
/>
</div>
<div className="min-h-screen pt-24 pb-16 flex flex-col items-center justify-center text-center px-4">
<h1 className="text-5xl font-bold mb-4">Create Your Profile</h1>
<p className="text-lg mb-8 max-w-2xl text-gray-400">Start building your professional profile to showcase your skills and experience to potential employers.</p>
{/* Placeholder for Profile Creation Form */}
<div className="w-full max-w-2xl p-8 border rounded-lg shadow-lg bg-card text-foreground">
<p className="text-gray-500">Profile creation form will go here.</p>
<p className="text-gray-500 mt-2">Fields might include: Personal Info, Education, Experience, Skills, etc.</p>
<button className="mt-6 px-6 py-3 bg-primary-cta text-primary-cta-foreground rounded-md hover:opacity-90 transition-opacity">Save Profile</button>
</div>
</div>
<div id="footer" data-section="footer">
<FooterBaseReveal
logoText="JobGeorgia"
columns={[
{ title: "Platform", items: [{ label: "Job Seekers", href: "#features" }, { label: "Employers", href: "#features" }, { label: "Recruiters", href: "#features" }, { label: "AI Features", href: "#features" }] },
{ title: "Resources", items: [{ label: "Featured Jobs", href: "#jobs" }, { label: "Featured Companies", href: "#companies" }, { label: "Pricing Plans", href: "#pricing" }, { label: "FAQ", href: "#faq" }] },
{ title: "Company", items: [{ label: "About Us", href: "#" }, { label: "Contact Us", href: "#" }, { label: "Blog", href: "#" }, { label: "Careers", href: "#" }] },
{ title: "Legal", items: [{ label: "Privacy Policy", href: "#" }, { label: "Terms of Service", href: "#" }, { label: "Cookie Policy", href: "#" }] },
]}
copyrightText="© 2024 JobGeorgia. All rights reserved."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,68 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
export default function ResumePage() {
const navItems = [
{ name: "Home", id: "#home" },
{ name: "Features", id: "#features" },
{ name: "Jobs", id: "#jobs" },
{ name: "Companies", id: "#companies" },
{ name: "Pricing", id: "#pricing" },
{ name: "Reviews", id: "#testimonials" },
{ name: "FAQ", id: "#faq" },
{ name: "Dashboard", id: "/dashboard" }
];
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={navItems}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "#pricing" }}
/>
</div>
<div className="min-h-screen pt-24 pb-16 flex flex-col items-center justify-center text-center px-4">
<h1 className="text-5xl font-bold mb-4">Resume Builder & Upload</h1>
<p className="text-lg mb-8 max-w-2xl text-gray-400">Upload your existing resume or use our AI-powered builder to create a new one.</p>
{/* Placeholder for Resume features */}
<div className="w-full max-w-2xl p-8 border rounded-lg shadow-lg bg-card text-foreground">
<p className="text-gray-500">Resume upload and builder tools will be available here.</p>
<button className="mt-6 px-6 py-3 bg-primary-cta text-primary-cta-foreground rounded-md hover:opacity-90 transition-opacity">Upload Resume</button>
<button className="mt-4 ml-4 px-6 py-3 bg-secondary-cta text-secondary-cta-foreground rounded-md hover:opacity-90 transition-opacity">Build New Resume</button>
</div>
</div>
<div id="footer" data-section="footer">
<FooterBaseReveal
logoText="JobGeorgia"
columns={[
{ title: "Platform", items: [{ label: "Job Seekers", href: "#features" }, { label: "Employers", href: "#features" }, { label: "Recruiters", href: "#features" }, { label: "AI Features", href: "#features" }] },
{ title: "Resources", items: [{ label: "Featured Jobs", href: "#jobs" }, { label: "Featured Companies", href: "#companies" }, { label: "Pricing Plans", href: "#pricing" }, { label: "FAQ", href: "#faq" }] },
{ title: "Company", items: [{ label: "About Us", href: "#" }, { label: "Contact Us", href: "#" }, { label: "Blog", href: "#" }, { label: "Careers", href: "#" }] },
{ title: "Legal", items: [{ label: "Privacy Policy", href: "#" }, { label: "Terms of Service", href: "#" }, { label: "Cookie Policy", href: "#" }] },
]}
copyrightText="© 2024 JobGeorgia. All rights reserved."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,103 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
export default function CreateJobPage() {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{ name: "Home", id: "/" },
{ name: "Features", id: "/#features" },
{ name: "Jobs", id: "/#jobs" },
{ name: "Companies", id: "/#companies" },
{ name: "Pricing", id: "/#pricing" },
{ name: "Create Job", id: "/employer/create-job" },
{ name: "Manage Jobs", id: "/employer/manage-jobs" },
{ name: "Reviews", id: "/#testimonials" },
{ name: "FAQ", id: "/#faq" },
]}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "/#pricing" }}
/>
</div>
<main className="min-h-screen py-20 flex flex-col items-center justify-center">
<h1 className="text-4xl font-bold text-foreground">Employer: Create Job</h1>
<p className="text-lg text-foreground mt-4">This is the Create Job page for employers.</p>
</main>
<div id="footer" data-section="footer">
<FooterBaseReveal
logoText="JobGeorgia"
columns={[
{
title: "Platform", items: [
{
label: "Job Seekers", href: "/#features"},
{
label: "Employers", href: "/#features"},
{
label: "Recruiters", href: "/#features"},
{
label: "AI Features", href: "/#features"},
],
},
{
title: "Resources", items: [
{
label: "Featured Jobs", href: "/#jobs"},
{
label: "Featured Companies", href: "/#companies"},
{
label: "Pricing Plans", href: "/#pricing"},
{
label: "FAQ", href: "/#faq"},
],
},
{
title: "Company", items: [
{
label: "About Us", href: "#"},
{
label: "Contact Us", href: "#"},
{
label: "Blog", href: "#"},
{
label: "Careers", href: "#"},
],
},
{
title: "Legal", items: [
{
label: "Privacy Policy", href: "#"},
{
label: "Terms of Service", href: "#"},
{
label: "Cookie Policy", href: "#"},
],
},
]}
copyrightText="© 2024 JobGeorgia. All rights reserved."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,103 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
export default function ManageJobsPage() {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{ name: "Home", id: "/" },
{ name: "Features", id: "/#features" },
{ name: "Jobs", id: "/#jobs" },
{ name: "Companies", id: "/#companies" },
{ name: "Pricing", id: "/#pricing" },
{ name: "Create Job", id: "/employer/create-job" },
{ name: "Manage Jobs", id: "/employer/manage-jobs" },
{ name: "Reviews", id: "/#testimonials" },
{ name: "FAQ", id: "/#faq" },
]}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "/#pricing" }}
/>
</div>
<main className="min-h-screen py-20 flex flex-col items-center justify-center">
<h1 className="text-4xl font-bold text-foreground">Employer: Manage Jobs</h1>
<p className="text-lg text-foreground mt-4">This is the Manage Jobs page for employers.</p>
</main>
<div id="footer" data-section="footer">
<FooterBaseReveal
logoText="JobGeorgia"
columns={[
{
title: "Platform", items: [
{
label: "Job Seekers", href: "/#features"},
{
label: "Employers", href: "/#features"},
{
label: "Recruiters", href: "/#features"},
{
label: "AI Features", href: "/#features"},
],
},
{
title: "Resources", items: [
{
label: "Featured Jobs", href: "/#jobs"},
{
label: "Featured Companies", href: "/#companies"},
{
label: "Pricing Plans", href: "/#pricing"},
{
label: "FAQ", href: "/#faq"},
],
},
{
title: "Company", items: [
{
label: "About Us", href: "#"},
{
label: "Contact Us", href: "#"},
{
label: "Blog", href: "#"},
{
label: "Careers", href: "#"},
],
},
{
title: "Legal", items: [
{
label: "Privacy Policy", href: "#"},
{
label: "Terms of Service", href: "#"},
{
label: "Cookie Policy", href: "#"},
],
},
]}
copyrightText="© 2024 JobGeorgia. All rights reserved."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -11,27 +11,19 @@ import { Open_Sans } from "next/font/google";
export const metadata: Metadata = {
title: 'JobGeorgia | SaaS Job Marketplace Platform for Georgia',
description: 'JobGeorgia is a premier SaaS job marketplace platform connecting job seekers, employers, and recruiters in Georgia with AI-powered job matching, resume analysis, and robust applicant management. Find your dream job or ideal candidate today.',
keywords: ["Job Marketplace, SaaS, Georgia, Job Search, Employers, Recruiters, AI, Resume Builder, Career Platform, Online Jobs, Georgian Jobs, Tech Jobs Georgia"],
title: 'JobGeorgia | Fast & SEO Optimized SaaS Job Marketplace for Georgia',
description: 'JobGeorgia is Georgia\'s premier, performance-optimized SaaS job marketplace platform. We connect top talent with leading companies using AI-powered job matching, advanced resume analysis, and robust applicant management for a fast, seamless, and SEO-friendly recruitment experience. Find your dream job or ideal candidate with lightning speed.',
keywords: ["Job Marketplace, SaaS, Georgia, Job Search, Employers, Recruiters, AI, Resume Builder, Career Platform, Online Jobs, Georgian Jobs, Tech Jobs Georgia, Performance Optimization, SEO Optimized, Fast Loading, Image Optimization, Caching Strategy, CDN Setup"],
openGraph: {
"title": "JobGeorgia | SaaS Job Marketplace Platform for Georgia",
"description": "Your premier platform for connecting top talent with leading companies in Georgia.",
"url": "https://www.jobgeorgia.ge",
"siteName": "JobGeorgia",
"images": [
"title": "JobGeorgia | Fast & SEO Optimized SaaS Job Marketplace for Georgia", "description": "Georgia's premier, performance-optimized platform connecting top talent with leading companies for a fast and seamless recruitment experience.", "url": "https://www.jobgeorgia.ge", "siteName": "JobGeorgia", "images": [
{
"url": "http://img.b2bpic.net/free-photo/education-skills-recruitment-word-search_53876-127810.jpg",
"alt": "JobGeorgia platform dashboard"
"url": "http://img.b2bpic.net/free-photo/education-skills-recruitment-word-search_53876-127810.jpg", "alt": "JobGeorgia platform dashboard"
}
],
"type": "website"
},
twitter: {
"card": "summary_large_image",
"title": "JobGeorgia | SaaS Job Marketplace Platform for Georgia",
"description": "Find your dream job or ideal candidate with AI-powered tools on JobGeorgia.",
"images": [
"card": "summary_large_image", "title": "JobGeorgia | Fast & SEO Optimized SaaS Job Marketplace for Georgia", "description": "Find your dream job or ideal candidate with AI-powered tools on JobGeorgia, optimized for speed and visibility.", "images": [
"http://img.b2bpic.net/free-photo/education-skills-recruitment-word-search_53876-127810.jpg"
]
},
@@ -42,8 +34,7 @@ export const metadata: Metadata = {
};
const openSans = Open_Sans({
variable: "--font-open-sans",
subsets: ["latin"],
variable: "--font-open-sans", subsets: ["latin"],
});
export default function RootLayout({

113
src/app/messaging/page.tsx Normal file
View File

@@ -0,0 +1,113 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import HeroBillboardDashboard from '@/components/sections/hero/HeroBillboardDashboard';
import { MessageSquare, Users, Paperclip, Bell } from "lucide-react";
export default function MessagingPage() {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{
name: "Home", id: "#home"
},
{
name: "Features", id: "#features"
},
{
name: "Messaging", id: "/messaging"
},
{
name: "Jobs", id: "#jobs"
},
{
name: "Companies", id: "#companies"
},
{
name: "Pricing", id: "#pricing"
},
{
name: "Reviews", id: "#testimonials"
},
{
name: "FAQ", id: "#faq"
},
]}
brandName="JobGeorgia"
button={{
text: "Get Started", href: "#pricing"
}}
/>
</div>
<div id="messaging" data-section="messaging">
<HeroBillboardDashboard
title="Real-time Messaging System"
description="Connect instantly with candidates and employers through our secure and intuitive messaging system, supporting real-time chat, file attachments, and notifications."
background={{ variant: 'radial-gradient' }}
tag="Communication"
tagIcon={MessageSquare}
tagAnimation="opacity"
buttons={[
{
text: "Start a New Chat", href: "#"
},
{
text: "View All Conversations", href: "#"
},
]}
buttonAnimation="slide-up"
dashboard={{
title: "Conversations", stats: [
{
title: "Unread Messages", values: [12, 12, 12],
valueSuffix: "", description: "Across all active chats"},
{
title: "File Attachments", values: [28, 28, 28],
valueSuffix: "", description: "Total files shared"},
{
title: "New Notifications", values: [5, 5, 5],
valueSuffix: "", description: "Recent activities"},
],
logoIcon: MessageSquare,
sidebarItems: [
{ icon: Users, active: true },
{ icon: MessageSquare },
{ icon: Paperclip },
{ icon: Bell },
],
searchPlaceholder: "Search conversations", buttons: [
{ text: "New Message", href: "#" },
{ text: "Filters", href: "#" },
],
chartTitle: "Daily Message Activity", chartData: [
{ value: 120 }, { value: 150 }, { value: 90 }, { value: 200 }, { value: 180 }, { value: 250 }, { value: 130 }
],
listItems: [
{ icon: Users, title: "Sarah Johnson - Interview Request", status: "10:30 AM" },
{ icon: MessageSquare, title: "Employer Support - Urgent", status: "Yesterday" },
{ icon: Paperclip, title: "CV.pdf sent to Tech Corp", status: "2 days ago" },
],
listTitle: "Recent Activities", imageSrc: "http://img.b2bpic.net/free-photo/social-network-digital-device-interface-chat-bubble_53876-127914.jpg", imageAlt: "Messaging system dashboard interface"}}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -251,6 +251,8 @@ export default function LandingPage() {
id: "q3", title: "Is my data and privacy secure on JobGeorgia?", content: "Absolutely. We implement robust security measures including JWT, Role-Based Access Control, password hashing, and advanced protections against common web vulnerabilities to keep your data safe."},
{
id: "q4", title: "Can I integrate my existing HR software?", content: "JobGeorgia is built with a flexible API, allowing for potential integrations with existing HR and applicant tracking systems. Please contact our support team for custom integration solutions."},
{
id: "q5", title: "How does JobGeorgia ensure platform reliability and scalability for high user volumes?", content: "JobGeorgia undergoes rigorous testing, including unit and integration tests, and regular security audits. Our production readiness involves comprehensive load testing and a robust scaling strategy designed to support over 100,000 active users, ensuring a stable and performant experience for everyone."}
]}
title="Frequently Asked Questions"
description="Find quick answers to the most common questions about JobGeorgia, our features, and how to get started on your career journey."

View File

@@ -0,0 +1,131 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import FaqBase from '@/components/sections/faq/FaqBase';
import FeatureCardNine from '@/components/sections/feature/FeatureCardNine';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
import HeroCarouselLogo from '@/components/sections/hero/heroCarouselLogo/HeroCarouselLogo';
import MetricCardSeven from '@/components/sections/metrics/MetricCardSeven';
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import PricingCardTwo from '@/components/sections/pricing/PricingCardTwo';
import ProductCardFour from '@/components/sections/product/ProductCardFour';
import SocialProofOne from '@/components/sections/socialProof/SocialProofOne';
import TestimonialCardFifteen from '@/components/sections/testimonial/TestimonialCardFifteen';
import LegalSection from '@/components/legal/LegalSection';
import { Award, Sparkles, Zap } from "lucide-react";
export default function PaymentSystemApiPage() {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{ name: "Home", id: "/" },
{ name: "Features", id: "#features" },
{ name: "Jobs", id: "#jobs" },
{ name: "Companies", id: "#companies" },
{ name: "Pricing", id: "#pricing" },
{ name: "Reviews", id: "#testimonials" },
{ name: "FAQ", id: "#faq" },
{ name: "Payment API", id: "/payment-system-api" }
]}
brandName="JobGeorgia"
button={{ text: "Get Started", href: "#pricing" }}
/>
</div>
<div id="payment-api-docs" data-section="payment-api-docs">
<LegalSection
layout="page"
title="Payment System API Endpoints"
subtitle="Comprehensive documentation for integrating with JobGeorgia's payment system."
sections={[
{
heading: "1. Create Subscription", content: [
{ type: "paragraph", text: "Endpoint: `POST /api/subscriptions`" },
{ type: "paragraph", text: "Description: Initiates a new subscription for a user based on a selected plan." },
{ type: "list", items: [
"Request Body: `{ userId: string, planId: string, paymentMethodId?: string }`", "Responses:", " `201 Created`: `{ subscriptionId: string, status: 'active' | 'pending', clientSecret?: string }` (clientSecret for SCA)", " `400 Bad Request`: Invalid input or plan", " `401 Unauthorized`: Missing or invalid authentication"
]},
]
},
{
heading: "2. Process Payment", content: [
{ type: "paragraph", text: "Endpoint: `POST /api/payments/process`" },
{ type: "paragraph", text: "Description: Processes a one-time payment or the first payment for a subscription using various providers." },
{ type: "list", items: [
"Request Body: `{ amount: number, currency: string, paymentMethod: 'stripe' | 'paypal' | 'bankOfGeorgia' | 'tbc', sourceId?: string, subscriptionId?: string, userId: string }`", "Responses:", " `200 OK`: `{ transactionId: string, status: 'succeeded' | 'pending' }`", " `400 Bad Request`: Invalid payment details", " `402 Payment Required`: Payment failed"
]},
]
},
{
heading: "3. Manage Subscriptions", content: [
{ type: "paragraph", text: "Endpoint: `GET /api/subscriptions/{id}`" },
{ type: "paragraph", text: "Description: Retrieves details of a specific subscription." },
{ type: "list", items: [
"Responses:", " `200 OK`: `{ subscription: { id: string, planId: string, status: 'active' | 'cancelled' | 'paused', startDate: string, endDate: string } }`", " `404 Not Found`: Subscription not found"
]},
{ type: "paragraph", text: "Endpoint: `PUT /api/subscriptions/{id}/cancel`" },
{ type: "paragraph", text: "Description: Cancels an active subscription." },
{ type: "list", items: [
"Responses:", " `200 OK`: `{ message: 'Subscription cancelled' }`"
]},
{ type: "paragraph", text: "Endpoint: `PUT /api/subscriptions/{id}/update-plan`" },
{ type: "paragraph", text: "Description: Updates the plan for an existing subscription." },
{ type: "list", items: [
"Request Body: `{ newPlanId: string }`", "Responses:", " `200 OK`: `{ message: 'Subscription plan updated' }`"
]},
]
},
{
heading: "4. Generate Invoices", content: [
{ type: "paragraph", text: "Endpoint: `GET /api/users/{userId}/invoices`" },
{ type: "paragraph", text: "Description: Retrieves a list of invoices for a specific user." },
{ type: "list", items: [
"Responses:", " `200 OK`: `{ invoices: Array<{ invoiceId: string, amount: number, currency: string, date: string, status: 'paid' | 'unpaid' | 'due', downloadUrl: string }> }`"
]},
{ type: "paragraph", text: "Endpoint: `GET /api/invoices/{id}/download`" },
{ type: "paragraph", text: "Description: Downloads a specific invoice." },
{ type: "list", items: [
"Responses:", " `200 OK`: File download (PDF/CSV)"
]},
]
},
{
heading: "5. Handle Refunds", content: [
{ type: "paragraph", text: "Endpoint: `POST /api/payments/{transactionId}/refund`" },
{ type: "paragraph", text: "Description: Initiates a refund for a given transaction." },
{ type: "list", items: [
"Request Body: `{ amount?: number, reason?: string }`", "Responses:", " `200 OK`: `{ refundId: string, status: 'pending' | 'succeeded' }`", " `400 Bad Request`: Invalid refund amount or reason", " `404 Not Found`: Transaction not found"
]},
]
},
{
heading: "6. Payment History", content: [
{ type: "paragraph", text: "Endpoint: `GET /api/users/{userId}/payment-history`" },
{ type: "paragraph", text: "Description: Retrieves a user's complete payment transaction history." },
{ type: "list", items: [
"Query Parameters: `?startDate={ISO_DATE}&endDate={ISO_DATE}&limit={NUMBER}&offset={NUMBER}`", "Responses:", " `200 OK`: `{ transactions: Array<{ transactionId: string, amount: number, currency: string, date: string, type: 'payment' | 'refund' | 'subscription', status: 'succeeded' | 'failed' | 'pending' }> }`"
]},
]
}
]}
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -0,0 +1,128 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import ReactLenis from "lenis/react";
import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen';
import SplitAbout from '@/components/sections/about/SplitAbout';
import FooterBaseReveal from '@/components/sections/footer/FooterBaseReveal';
import { Search, Database, Mail, Megaphone } from 'lucide-react';
export default function RecruiterSystemPage() {
return (
<ThemeProvider
defaultButtonVariant="elastic-effect"
defaultTextAnimation="entrance-slide"
borderRadius="soft"
contentWidth="medium"
sizing="mediumLargeSizeLargeTitles"
background="fluid"
cardStyle="gradient-bordered"
primaryButtonStyle="radial-glow"
secondaryButtonStyle="radial-glow"
headingFontWeight="bold"
>
<ReactLenis root>
<div id="nav" data-section="nav">
<NavbarStyleFullscreen
navItems={[
{
name: "Home", id: "#home"},
{
name: "Features", id: "#features"},
{
name: "Jobs", id: "#jobs"},
{
name: "Companies", id: "#companies"},
{
name: "Pricing", id: "#pricing"},
{
name: "Reviews", id: "#testimonials"},
{
name: "FAQ", id: "#faq"},
{
name: "Recruiter API", id: "/recruiter-system"}
]}
brandName="JobGeorgia"
button={{
text: "Get Started", href: "#pricing"}}
/>
</div>
<div id="recruiter-api" data-section="recruiter-api">
<SplitAbout
title="Recruiter System API Endpoints"
description="A comprehensive set of API endpoints designed to empower recruiters with robust tools for candidate management and recruitment campaign execution."
tag="API Documentation"
bulletPoints={[
{ title: "Search Candidates", description: "Efficiently search and filter candidates based on skills, experience, location, and other criteria.", icon: Search },
{ title: "Access Candidate Database", description: "Securely access and manage a centralized database of candidate profiles, resumes, and interaction history.", icon: Database },
{ title: "Contact Candidates", description: "Facilitate direct communication with candidates through integrated messaging and email functionalities.", icon: Mail },
{ title: "Manage Recruitment Campaigns", description: "Create, track, and optimize recruitment campaigns, including job posting distribution and performance analytics.", icon: Megaphone }
]}
imageSrc="http://img.b2bpic.net/free-photo/code-icon-laptop-screen_53876-146609.jpg"
imageAlt="Recruiter System API documentation"
mediaAnimation="slide-up"
textboxLayout="default"
useInvertedBackground={false}
imagePosition="left"
/>
</div>
<div id="footer" data-section="footer">
<FooterBaseReveal
logoText="JobGeorgia"
columns={[
{
title: "Platform", items: [
{
label: "Job Seekers", href: "#features"},
{
label: "Employers", href: "#features"},
{
label: "Recruiters", href: "#features"},
{
label: "AI Features", href: "#features"},
],
},
{
title: "Resources", items: [
{
label: "Featured Jobs", href: "#jobs"},
{
label: "Featured Companies", href: "#companies"},
{
label: "Pricing Plans", href: "#pricing"},
{
label: "FAQ", href: "#faq"},
],
},
{
title: "Company", items: [
{
label: "About Us", href: "#"},
{
label: "Contact Us", href: "#"},
{
label: "Blog", href: "#"},
{
label: "Careers", href: "#"},
],
},
{
title: "Legal", items: [
{
label: "Privacy Policy", href: "#"},
{
label: "Terms of Service", href: "#"},
{
label: "Cookie Policy", href: "#"},
],
},
]}
copyrightText="© 2024 JobGeorgia. All rights reserved."
/>
</div>
</ReactLenis>
</ThemeProvider>
);
}

View File

@@ -11,7 +11,7 @@ html {
body {
background-color: var(--background);
color: var(--foreground);
font-family: var(--font-font-family: var(--font-open-sans), sans-serif;), sans-serif;
font-family: var(--font-inter), sans-serif;), sans-serif;
position: relative;
min-height: 100vh;
overscroll-behavior: none;
@@ -24,5 +24,5 @@ h3,
h4,
h5,
h6 {
font-family: var(--font-font-family: var(--font-open-sans), sans-serif;), sans-serif;
font-family: var(--font-dm-sans), sans-serif;), sans-serif;
}

View File

@@ -10,15 +10,15 @@
--accent: #ffffff;
--background-accent: #ffffff; */
--background: #0a0a0a;
--card: #1a1a1a;
--background: #000000;
--card: #0c0c0c;
--foreground: #ffffff;
--primary-cta: #e34400;
--primary-cta-text: #ffffff;
--secondary-cta: #010101;
--primary-cta: #cee7ff;
--primary-cta-text: #000000;
--secondary-cta: #000000;
--secondary-cta-text: #ffffff;
--accent: #ff7b05;
--background-accent: #106efb;
--accent: #535353;
--background-accent: #CEE7FF;
/* text sizing - set by ThemeProvider */
/* --text-2xs: clamp(0.465rem, 0.62vw, 0.62rem);