diff --git a/app/api/interests/utils.ts b/app/api/interests/utils.ts new file mode 100644 index 0000000..0654816 --- /dev/null +++ b/app/api/interests/utils.ts @@ -0,0 +1,13 @@ +import { promises as fs } from "fs"; +import path from "path"; +import type { Interest } from "./../../../components/types/interests"; + +export async function getInterestBySlug( + slug: string +): Promise { + const filePath = path.join(process.cwd(), "public", "interests.json"); + const file = await fs.readFile(filePath, "utf-8"); + const interests: Interest[] = JSON.parse(file); + + return interests.find((interest) => interest.slug === slug); +} diff --git a/app/careers/[slug]/page.tsx b/app/careers/[slug]/page.tsx new file mode 100644 index 0000000..4b4c0a0 --- /dev/null +++ b/app/careers/[slug]/page.tsx @@ -0,0 +1,54 @@ +import { notFound } from "next/navigation"; +import LinkButton from "@/components/linkButton"; + +const jobOpenings = [ + { + title: "Frontend-utvikler", + slug: "frontend-developer", + location: "Hjemmekontor", + type: "Fulltid", + description: + "Vi ser etter en frontend-utvikler med erfaring i React og Tailwind CSS.", + }, + { + title: "Backend-utvikler", + slug: "backend-developer", + location: "Oslo, Norge", + type: "Deltid", + description: + "Bli med i backend-teamet vårt og bygg skalerbare API-er med Node.js og PostgreSQL.", + }, +]; + +interface PageProps { + params: Promise<{ + slug: string; + }>; +} + +export default async function JobPage({ params }: PageProps) { + const { slug } = await params; + const job = jobOpenings.find((job) => job.slug === slug); + + if (!job) { + notFound(); + } + + return ( +
+
+

{job.title}

+

+ {job.location} · {job.type} +

+

{job.description}

+ + +
+
+ ); +} diff --git a/app/careers/page.tsx b/app/careers/page.tsx new file mode 100644 index 0000000..49ae1c5 --- /dev/null +++ b/app/careers/page.tsx @@ -0,0 +1,67 @@ +import LinkButton from "@/components/linkButton"; +import React from "react"; + +const jobOpenings = [ + { + title: "Frontend-kompis", + location: "Hjemmekontor", + type: "Fulltid", + description: + "Vi ser etter en frontend-utvikler med erfaring i React og Tailwind CSS.", + link: "/careers/frontend-developer", + }, + { + title: "Backend-kompis", + location: "Oslo, Norge", + type: "Deltid", + description: + "Bli med i backend-teamet vårt og bygg skalerbare API-er med Node.js og PostgreSQL.", + link: "/careers/backend-developer", + }, +]; + +export default function CareersPage() { + return ( +
+
+
+

Ledige stillinger

+ {jobOpenings.map((job, index) => ( +
+

{job.title}

+

+ {job.location} · {job.type} +

+

{job.description}

+ +
+ ))} +
+ +
+

+ Fant du ikke noe som passer? +

+

+ Vi er alltid på utkikk etter engasjerte mennesker. Send gjerne en + åpen søknad til{" "} + + jobs@kompis.com + + . +

+
+
+
+ ); +} diff --git a/components/footer.tsx b/components/footer.tsx index c367a0d..d6e67ff 100644 --- a/components/footer.tsx +++ b/components/footer.tsx @@ -8,15 +8,23 @@ export function Footer() { diff --git a/components/header.tsx b/components/header.tsx index 3b648e5..0b7ae43 100644 --- a/components/header.tsx +++ b/components/header.tsx @@ -39,6 +39,9 @@ export function Header() { const event = getEventById(parseInt(id)); setTitle(`${event?.hobby.infinitiv}${ending}`); setBade(false); + } else if (pathname.startsWith("/careers")) { + setTitle(`BLI JOBB${ending}`); + setBade(false); } else { setTitle(`...${ending.toUpperCase()}`); setBade(false);