diff options
| author | Mohamed Bassem <me@mbassem.com> | 2026-02-01 11:01:54 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2026-02-01 11:01:54 +0000 |
| commit | cc638c2a996a5487b101b1306c524eaaf8802604 (patch) | |
| tree | 1413b7cf0098bdfcdc7a7116631fbdc6116e49de | |
| parent | 453331c629cfb22aed42876a88eb0d2ce16c8f44 (diff) | |
| download | karakeep-cc638c2a996a5487b101b1306c524eaaf8802604.tar.zst | |
chore: add an endpoint for propagating client configs to the mobile app
| -rw-r--r-- | packages/shared/types/config.ts | 29 | ||||
| -rw-r--r-- | packages/trpc/routers/_app.ts | 2 | ||||
| -rw-r--r-- | packages/trpc/routers/config.ts | 10 |
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), +}); |
