diff --git a/src/lib/components/TripCard.svelte b/src/lib/components/TripCard.svelte
index fa7c652..2c291e2 100644
--- a/src/lib/components/TripCard.svelte
+++ b/src/lib/components/TripCard.svelte
@@ -58,6 +58,10 @@
>
+
diff --git a/src/routes/api/trip/+server.ts b/src/routes/api/trip/+server.ts
new file mode 100644
index 0000000..3073abd
--- /dev/null
+++ b/src/routes/api/trip/+server.ts
@@ -0,0 +1,51 @@
+import { db } from "$lib/db/db.server";
+import { adventureTable, userPlannedTrips } from "$lib/db/schema";
+import type { Adventure, Trip } from "$lib/utils/types";
+import { json, type RequestEvent, type RequestHandler } from "@sveltejs/kit";
+import { and, eq } from "drizzle-orm";
+
+/**
+ * Handles the GET request for retrieving a trip.
+ * @param {Request} request - The request object.
+ * @param {Response} response - The response object.
+ * @returns {Promise} - A promise that resolves when the request is handled.
+ */
+export const GET: RequestHandler = async ({ url, locals }) => {
+ const id = url.searchParams.get("id");
+ const user = locals.user;
+
+ if (!user) {
+ return json({ error: "Unauthorized" }, { status: 401 });
+ }
+
+ if (!id) {
+ return json({ error: "Missing adventure ID" }, { status: 400 });
+ }
+
+ const trip = await db
+ .select()
+ .from(userPlannedTrips)
+ .where(
+ and(
+ eq(userPlannedTrips.id, Number(id)), // Convert id to number
+ eq(userPlannedTrips.userId, user.id)
+ )
+ )
+ .limit(1)
+ .execute();
+
+ if (trip.length === 0) {
+ return json({ error: "Trip not found" }, { status: 404 });
+ }
+
+ JSON.stringify(
+ trip.map((r) => {
+ const adventure: Trip = r as Trip;
+ })
+ );
+
+ // console.log("GET /api/adventure?id=", id);
+ // console.log("User:", user);
+
+ return json({ trip }, { status: 200 });
+};
diff --git a/src/routes/trip/[id]/+page.server.ts b/src/routes/trip/[id]/+page.server.ts
new file mode 100644
index 0000000..d0ebb4d
--- /dev/null
+++ b/src/routes/trip/[id]/+page.server.ts
@@ -0,0 +1,32 @@
+import { redirect } from "@sveltejs/kit";
+import type { PageServerLoad } from "./$types";
+import { db } from "$lib/db/db.server";
+import { and, eq } from "drizzle-orm";
+import { adventureTable, userPlannedTrips } from "$lib/db/schema";
+
+export const load: PageServerLoad = (async (event) => {
+ if (!event.locals.user) {
+ return redirect(302, "/login");
+ }
+
+ let adventureUserId: any[] = await db
+ .select({ userId: userPlannedTrips.userId })
+ .from(userPlannedTrips)
+ .where(eq(userPlannedTrips.id, Number(event.params.id)))
+ .limit(1)
+ .execute();
+
+ console.log(adventureUserId);
+
+ if (
+ adventureUserId &&
+ adventureUserId[0]?.userId !== event.locals.user.id &&
+ adventureUserId !== null
+ ) {
+ return redirect(302, "/log");
+ }
+
+ let trip = await event.fetch(`/api/trip?id=${event.params.id}`);
+
+ return { trip: await trip.json() };
+}) satisfies PageServerLoad;
diff --git a/src/routes/trip/[id]/+page.svelte b/src/routes/trip/[id]/+page.svelte
new file mode 100644
index 0000000..758cf1e
--- /dev/null
+++ b/src/routes/trip/[id]/+page.svelte
@@ -0,0 +1,27 @@
+
+
+
+ {#if trip}
+ {trip.name}
+ {trip.description}
+ {trip.startDate}
+ {trip.endDate}
+ {/if}
+