diff --git a/src/app/api/listings/route.ts b/src/app/api/listings/route.ts
new file mode 100644
index 0000000..fa62dfd
--- /dev/null
+++ b/src/app/api/listings/route.ts
@@ -0,0 +1,36 @@
+import { NextRequest, NextResponse } from 'next/server';
+import prisma from '@/app/api/utils/prisma';
+
+export async function GET(req: NextRequest, res: NextResponse) {
+ let assistants = await prisma.assistant.findMany({
+ where: {
+ published: true
+ },
+ select: {
+ id: true,
+ object: true,
+ avatar: true,
+ profile: true,
+ modelId: true,
+ published: true,
+ authenticatedUsersOnly: true,
+ },
+ });
+ let assistantsCollection = assistants.map((assistant) => {
+ if (assistant.object) {
+ // @ts-ignore
+ assistant.object.profile = assistant.profile;
+ // @ts-ignore
+ assistant.object.modelId = assistant.modelId;
+ // @ts-ignore
+ assistant.object.published = assistant.published;
+ // @ts-ignore
+ assistant.object.avatar = assistant.avatar;
+ // @ts-ignore
+ assistant.object.authenticatedUsersOnly =
+ assistant.authenticatedUsersOnly;
+ }
+ return assistant.object;
+ });
+ return Response.json(assistantsCollection, { status: 200 });
+}
\ No newline at end of file
diff --git a/src/app/listings/ListingCard.tsx b/src/app/listings/ListingCard.tsx
new file mode 100644
index 0000000..32c3f63
--- /dev/null
+++ b/src/app/listings/ListingCard.tsx
@@ -0,0 +1,42 @@
+'use client'
+
+import { Assistant } from '@/app/types/assistant';
+import { Avatar, Button, Card } from 'flowbite-react';
+import { getImageHash } from '@/app/utils/hash';
+import React from 'react';
+
+export interface ListingCardProps {
+ listing: Assistant
+}
+
+export default function ListingCard(props:ListingCardProps) {
+ return
+ {props.listing.description}
+
+ By @santthosh
+
+ {props.listing.name}
+
+