aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2026-02-01 11:01:54 +0000
committerMohamed Bassem <me@mbassem.com>2026-02-01 11:01:54 +0000
commitcc638c2a996a5487b101b1306c524eaaf8802604 (patch)
tree1413b7cf0098bdfcdc7a7116631fbdc6116e49de
parent453331c629cfb22aed42876a88eb0d2ce16c8f44 (diff)
downloadkarakeep-cc638c2a996a5487b101b1306c524eaaf8802604.tar.zst
chore: add an endpoint for propagating client configs to the mobile app
-rw-r--r--packages/shared/types/config.ts29
-rw-r--r--packages/trpc/routers/_app.ts2
-rw-r--r--packages/trpc/routers/config.ts10
3 files changed, 41 insertions, 0 deletions
diff --git a/packages/shared/types/config.ts b/packages/shared/types/config.ts
new file mode 100644
index 00000000..bd4310f9
--- /dev/null
+++ b/packages/shared/types/config.ts
@@ -0,0 +1,29 @@
+import { z } from "zod";
+
+export const zClientConfigSchema = z.object({
+ publicUrl: z.string(),
+ publicApiUrl: z.string(),
+ demoMode: z
+ .object({
+ email: z.string().optional(),
+ password: z.string().optional(),
+ })
+ .optional(),
+ auth: z.object({
+ disableSignups: z.boolean(),
+ disablePasswordAuth: z.boolean(),
+ }),
+ turnstile: z
+ .object({
+ siteKey: z.string(),
+ })
+ .nullable(),
+ inference: z.object({
+ isConfigured: z.boolean(),
+ inferredTagLang: z.string(),
+ enableAutoTagging: z.boolean(),
+ enableAutoSummarization: z.boolean(),
+ }),
+ serverVersion: z.string().optional(),
+ disableNewReleaseCheck: z.boolean(),
+});
diff --git a/packages/trpc/routers/_app.ts b/packages/trpc/routers/_app.ts
index bae69130..9e20bb7e 100644
--- a/packages/trpc/routers/_app.ts
+++ b/packages/trpc/routers/_app.ts
@@ -4,6 +4,7 @@ import { apiKeysAppRouter } from "./apiKeys";
import { assetsAppRouter } from "./assets";
import { backupsAppRouter } from "./backups";
import { bookmarksAppRouter } from "./bookmarks";
+import { configAppRouter } from "./config";
import { feedsAppRouter } from "./feeds";
import { highlightsAppRouter } from "./highlights";
import { importSessionsRouter } from "./importSessions";
@@ -35,6 +36,7 @@ export const appRouter = router({
invites: invitesAppRouter,
publicBookmarks: publicBookmarks,
subscriptions: subscriptionsRouter,
+ config: configAppRouter,
});
// export type definition of API
export type AppRouter = typeof appRouter;
diff --git a/packages/trpc/routers/config.ts b/packages/trpc/routers/config.ts
new file mode 100644
index 00000000..8d09a2ce
--- /dev/null
+++ b/packages/trpc/routers/config.ts
@@ -0,0 +1,10 @@
+import { clientConfig } from "@karakeep/shared/config";
+import { zClientConfigSchema } from "@karakeep/shared/types/config";
+
+import { publicProcedure, router } from "../index";
+
+export const configAppRouter = router({
+ clientConfig: publicProcedure
+ .output(zClientConfigSchema)
+ .query(() => clientConfig),
+});