diff --git a/src/routes/(app)/links/+page.svelte b/src/routes/(app)/links/+page.svelte
index 8695809..151fd38 100644
--- a/src/routes/(app)/links/+page.svelte
+++ b/src/routes/(app)/links/+page.svelte
@@ -1,12 +1,66 @@
-
Links
+
+
Links
+
+
+
+ Add Shortner
+
+
+
+ Add Shortener
+
+ Create A New Shortner Here. Click Add To Save.
+
+
+
+
+
+
+
+
+
{#if data.shorteners.length > 0}
diff --git a/src/routes/api/shortener/+server.ts b/src/routes/api/shortener/+server.ts
new file mode 100644
index 0000000..04bbce1
--- /dev/null
+++ b/src/routes/api/shortener/+server.ts
@@ -0,0 +1,61 @@
+import { z } from 'zod'
+import type { RequestHandler } from './$types'
+import { db } from '$lib/db'
+import { getUserFromSessionToken } from '$lib/server/auth'
+import { shortener } from '$lib/db/schema'
+import { nanoid } from 'nanoid'
+
+export const GET: RequestHandler = async () => {
+ return new Response()
+}
+
+const shortenerInsertSchema = z.object({
+ link: z.string().url(),
+})
+
+export const POST: RequestHandler = async (event) => {
+ const body = await event.request.json()
+
+ const shortenerInsert = shortenerInsertSchema.safeParse(body)
+
+ if (!shortenerInsert.success) {
+ return new Response(
+ JSON.stringify({
+ success: false,
+ message: 'Invalid Link',
+ }),
+ )
+ }
+
+ const token = event.cookies.get('token')
+
+ if (!token) {
+ return new Response(
+ JSON.stringify({
+ success: false,
+ message: 'Invalid User',
+ }),
+ )
+ }
+
+ const user = await getUserFromSessionToken(token)
+
+ if (!user) {
+ return new Response(
+ JSON.stringify({
+ success: false,
+ message: 'Invalid User',
+ }),
+ )
+ }
+
+ const code = nanoid(8)
+
+ await db.insert(shortener).values({
+ link: shortenerInsert.data.link,
+ userId: user,
+ code: code,
+ })
+
+ return new Response(JSON.stringify(body))
+}