diff --git a/.gitignore b/.gitignore
index fd3dbb5..b9f8d23 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,3 +34,5 @@ yarn-error.log*
# typescript
*.tsbuildinfo
next-env.d.ts
+
+.env
\ No newline at end of file
diff --git a/README.md b/README.md
index c403366..a885fe5 100644
--- a/README.md
+++ b/README.md
@@ -1,36 +1,9 @@
-This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
+# Next.js 14 Job Board
-## Getting Started
+This tutorial project focuses heavily on **Next.js server actions**.
-First, run the development server:
+It shows how to use server actions from server components, from client components, with and without React Hook Form, and how to achieve **progressive enhancement** with the `useFormStatus` & `useFormState` hooks.
-```bash
-npm run dev
-# or
-yarn dev
-# or
-pnpm dev
-# or
-bun dev
-```
+Watch the tutorial for this project on YouTube: https://www.youtube.com/watch?v=XD5FpbVpWzk
-Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
-
-You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
-
-This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
-
-## Learn More
-
-To learn more about Next.js, take a look at the following resources:
-
-- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
-- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
-
-You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
-
-## Deploy on Vercel
-
-The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
-
-Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
+
diff --git a/next.config.js b/next.config.js
index 767719f..0c89f98 100644
--- a/next.config.js
+++ b/next.config.js
@@ -1,4 +1,12 @@
/** @type {import('next').NextConfig} */
-const nextConfig = {}
+const nextConfig = {
+ images: {
+ remotePatterns: [
+ {
+ hostname: "rqcoa3ubmzn9qpsj.public.blob.vercel-storage.com",
+ },
+ ],
+ },
+};
-module.exports = nextConfig
+module.exports = nextConfig;
diff --git a/package.json b/package.json
index 97f700d..5570ce9 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,8 @@
"build": "next build",
"start": "next start",
"lint": "next lint",
- "seed": "node scripts/seed.js"
+ "seed": "node scripts/seed.js",
+ "postinstall": "prisma generate"
},
"dependencies": {
"@clerk/nextjs": "^4.29.1",
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
new file mode 100644
index 0000000..24bf142
--- /dev/null
+++ b/prisma/schema.prisma
@@ -0,0 +1,33 @@
+// This is your Prisma schema file,
+// learn more about it in the docs: https://pris.ly/d/prisma-schema
+
+generator client {
+ provider = "prisma-client-js"
+ previewFeatures = ["fullTextSearch"]
+}
+
+datasource db {
+ provider = "postgresql"
+ url = env("POSTGRES_PRISMA_URL")
+ directUrl = env("POSTGRES_URL_NON_POOLING")
+}
+
+model Job {
+ id Int @id @default(autoincrement())
+ slug String @unique
+ title String
+ type String
+ locationType String
+ location String?
+ description String?
+ salary Int
+ companyName String
+ applicationEmail String?
+ applicationUrl String?
+ companyLogoUrl String?
+ approved Boolean @default(false)
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+
+ @@map("jobs")
+}
diff --git a/src/app/admin/AdminNavbar.tsx b/src/app/admin/AdminNavbar.tsx
new file mode 100644
index 0000000..b80fc5e
--- /dev/null
+++ b/src/app/admin/AdminNavbar.tsx
@@ -0,0 +1,34 @@
+"use client";
+
+import { useClerk } from "@clerk/nextjs";
+import Link from "next/link";
+import { useRouter } from "next/navigation";
+
+export default function AdminNavbar() {
+ const { user, signOut } = useClerk();
+ const router = useRouter();
+
+ return (
+