Initial commit of Vellum, an event photo product for guest uploads, host moderation, and original-quality galleries.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-07 19:36:14 -04:00
co-authored by Cursor
commit 27e2f196eb
149 changed files with 13847 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
"use client";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { httpBatchLink } from "@trpc/client";
import { createTRPCReact } from "@trpc/react-query";
import { useState } from "react";
import superjson from "superjson";
import type { AppRouter } from "@/server/api/root";
export const api = createTRPCReact<AppRouter>();
export function TRPCReactProvider({
children,
}: {
children: React.ReactNode;
}) {
const [queryClient] = useState(() => new QueryClient());
const [trpcClient] = useState(() =>
api.createClient({
links: [
httpBatchLink({
transformer: superjson,
url: "/api/trpc",
}),
],
}),
);
return (
<QueryClientProvider client={queryClient}>
<api.Provider client={trpcClient} queryClient={queryClient}>
{children}
</api.Provider>
</QueryClientProvider>
);
}
+17
View File
@@ -0,0 +1,17 @@
import "server-only";
import { headers } from "next/headers";
import { appRouter } from "@/server/api/root";
import { createTRPCContext } from "@/server/api/trpc";
import { publicAppOrigin } from "@/server/public-app-url";
export async function createServerCaller() {
const requestHeaders = await headers();
const host = requestHeaders.get("host") ?? "localhost:3000";
const protocol = requestHeaders.get("x-forwarded-proto") ?? "http";
const context = await createTRPCContext({
headers: requestHeaders,
requestOrigin: publicAppOrigin(`${protocol}://${host}`),
});
return appRouter.createCaller(context);
}