From 18067770083e0c28c4df5a13e4512309b7f4768b Mon Sep 17 00:00:00 2001 From: Ido Bouskila <94786579+IdoBouskila@users.noreply.github.com> Date: Fri, 29 Nov 2024 15:28:00 +0200 Subject: [PATCH] feature(client): setup `tRPC` in front-end (#15) * fix(server): update import path for fetchExternalData * wip * feature(client): set-up `tRPC` in front-end --- client/.env.example | 1 + client/src/main.tsx | 19 ++++++++++++++++++- client/src/utils/trpc.ts | 4 ++++ server/index.ts | 6 ++++-- .../fetchers}/fetch-external-data.ts | 0 server/utils/fetchers/fetchers.ts | 2 +- 6 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 client/.env.example create mode 100644 client/src/utils/trpc.ts rename server/{ => utils/fetchers}/fetch-external-data.ts (100%) diff --git a/client/.env.example b/client/.env.example new file mode 100644 index 0000000..345a9b1 --- /dev/null +++ b/client/.env.example @@ -0,0 +1 @@ +VITE_API_URL = http://localhost:3000 \ No newline at end of file diff --git a/client/src/main.tsx b/client/src/main.tsx index 3fde218..4494b8e 100644 --- a/client/src/main.tsx +++ b/client/src/main.tsx @@ -1,9 +1,26 @@ import App from './app.tsx'; import { StrictMode } from 'react'; +import { trpc } from './utils/trpc.ts'; import { createRoot } from 'react-dom/client'; +import { httpBatchLink } from '@trpc/react-query'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; + +const queryClient = new QueryClient(); + +const trpcClient = trpc.createClient({ + links: [ + httpBatchLink({ + url: import.meta.env.VITE_API_URL, + }), + ], +}); createRoot(document.getElementById('root')!).render( - + + + + + ); diff --git a/client/src/utils/trpc.ts b/client/src/utils/trpc.ts new file mode 100644 index 0000000..d011b58 --- /dev/null +++ b/client/src/utils/trpc.ts @@ -0,0 +1,4 @@ +import type { AppRouter } from '@server/index.ts'; +import { createTRPCReact } from '@trpc/react-query'; + +export const trpc = createTRPCReact(); diff --git a/server/index.ts b/server/index.ts index 4381470..3e570a1 100644 --- a/server/index.ts +++ b/server/index.ts @@ -18,7 +18,9 @@ const appRouter = router({ const server = createHTTPServer({ router: appRouter, - middleware: cors(), + middleware: cors({ origin: '*' }), }); -server.listen(process.env.PORT || 3001); +server.listen(process.env.PORT || 3000, () => { + console.log(`🚀 Server ready at http://localhost:${ process.env.PORT || 3000 }`); +}); diff --git a/server/fetch-external-data.ts b/server/utils/fetchers/fetch-external-data.ts similarity index 100% rename from server/fetch-external-data.ts rename to server/utils/fetchers/fetch-external-data.ts diff --git a/server/utils/fetchers/fetchers.ts b/server/utils/fetchers/fetchers.ts index 3e64484..2d73c60 100644 --- a/server/utils/fetchers/fetchers.ts +++ b/server/utils/fetchers/fetchers.ts @@ -1,4 +1,4 @@ -import fetchExternalData from '../../fetch-external-data'; +import fetchExternalData from './fetch-external-data'; type ExternalSearchResponse = Array<{ id: number;