diff --git a/app/(root)/jobs/loading.tsx b/app/(root)/jobs/loading.tsx
new file mode 100644
index 0000000..e9377db
--- /dev/null
+++ b/app/(root)/jobs/loading.tsx
@@ -0,0 +1,29 @@
+import LocalSearchbar from "@/components/shared/search/LocalSearchbar";
+import { Skeleton } from "@/components/ui/skeleton";
+
+const Loading = () => {
+ return (
+
+ Jobs
+
+
+
+
+
+
+
+ {[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map((item) => (
+
+ ))}
+
+
+ );
+};
+
+export default Loading;
diff --git a/app/(root)/jobs/page.tsx b/app/(root)/jobs/page.tsx
new file mode 100644
index 0000000..5c4ef4b
--- /dev/null
+++ b/app/(root)/jobs/page.tsx
@@ -0,0 +1,73 @@
+import UserCard from "@/components/cards/UserCard";
+import Filter from "@/components/shared/Filter";
+import NoResults from "@/components/shared/NoResults";
+import Pagination from "@/components/shared/Pagination";
+import LocalSearchbar from "@/components/shared/search/LocalSearchbar";
+import { UserFilters } from "@/constants/filters";
+import { getAllUsers } from "@/lib/actions/user.action";
+import { SearchParamsProps } from "@/types";
+import { Metadata } from "next";
+
+import {
+ fetchCountries,
+ fetchJobs,
+ fetchLocation,
+} from "@/lib/actions/job.action";
+
+import { Job } from "@/types";
+import JobsFilter from "@/components/jobs/JobsFilter";
+import JobCard from "@/components/cards/JobCard";
+
+interface JobsPageProps {
+ searchParams: {
+ q: string;
+ location: string;
+ page: string;
+ };
+}
+
+export const metadata: Metadata = {
+ title: "Jobs | Dev Overflow",
+};
+
+export default async function JobsPage({ searchParams }: JobsPageProps) {
+ const userLocation = await fetchLocation();
+
+ const jobs = await fetchJobs({
+ query:
+ `${searchParams.q},${searchParams.location}` ??
+ `Software Engineer in ${userLocation}`,
+ page: searchParams.page ?? 1,
+ });
+
+ const countries = await fetchCountries();
+ const page = parseInt(searchParams.page ?? 1);
+
+ return (
+ <>
+
Jobs
+
+
+
+
+
+
+ {jobs && jobs.length > 0 ? (
+ jobs.map((job: Job, index: number) => (
+
+ ))
+ ) : (
+
+ )}
+
+
+ >
+ );
+}
diff --git a/app/layout.tsx b/app/layout.tsx
index e3ffc05..c4df074 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -4,6 +4,8 @@ import type { Metadata } from "next";
import "./globals.css";
import "../styles/prism.css";
import { ThemeProvider } from "@/context/ThemeProvider";
+import { SpeedInsights } from "@vercel/speed-insights/next";
+import { Analytics } from "@vercel/analytics/react";
const inter = Inter({
subsets: ["latin"],
@@ -42,7 +44,11 @@ export default function RootLayout({
},
}}
>
- {children}
+
+ {children}
+
+
+