diff --git a/src/app/providers/QueryProvider.svelte b/src/app/providers/QueryProvider.svelte
new file mode 100644
index 0000000..f9237b6
--- /dev/null
+++ b/src/app/providers/QueryProvider.svelte
@@ -0,0 +1,17 @@
+
+
+
+ {@render children?.()}
+
diff --git a/src/shared/api/queryClient.ts b/src/shared/api/queryClient.ts
new file mode 100644
index 0000000..da8baf1
--- /dev/null
+++ b/src/shared/api/queryClient.ts
@@ -0,0 +1,26 @@
+import { QueryClient } from '@tanstack/query-core';
+
+/**
+ * Query client instance
+ */
+export const queryClient = new QueryClient({
+ defaultOptions: {
+ queries: {
+ /**
+ * Default staleTime: 5 minutes
+ */
+ staleTime: 5 * 60 * 1000,
+ /**
+ * Default gcTime: 10 minutes
+ */
+ gcTime: 10 * 60 * 1000,
+ refetchOnWindowFocus: false,
+ refetchOnMount: true,
+ retry: 3,
+ /**
+ * Exponential backoff
+ */
+ retryDelay: attemptIndex => Math.min(1000 * 2 ** attemptIndex, 30000),
+ },
+ },
+});