aboutsummaryrefslogtreecommitdiffstats
path: root/packages/api
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-07-02 00:08:51 +0000
committerMohamed Bassem <me@mbassem.com>2025-07-04 16:27:29 +0000
commitf5e737bf9645271f8525070f9ba6de1f476fafd9 (patch)
treefd99f88429d31a19750d7518a2a84d2c61a275db /packages/api
parent474ca7f221de4aa918e9ce658fe285e25191f628 (diff)
downloadkarakeep-f5e737bf9645271f8525070f9ba6de1f476fafd9.tar.zst
refactor: Move the trpc endpoint to hono
Diffstat (limited to 'packages/api')
-rw-r--r--packages/api/index.ts2
-rw-r--r--packages/api/package.json1
-rw-r--r--packages/api/routes/trpc.ts28
3 files changed, 31 insertions, 0 deletions
diff --git a/packages/api/index.ts b/packages/api/index.ts
index 5147ea37..ab7cdbe2 100644
--- a/packages/api/index.ts
+++ b/packages/api/index.ts
@@ -12,6 +12,7 @@ import lists from "./routes/lists";
import publicRoute from "./routes/public";
import rss from "./routes/rss";
import tags from "./routes/tags";
+import trpc from "./routes/trpc";
import users from "./routes/users";
const v1 = new Hono<{
@@ -43,6 +44,7 @@ const app = new Hono<{
await next();
})
.use(trpcAdapter)
+ .route("/trpc", trpc)
.route("/v1", v1)
.route("/assets", assets)
.route("/public", publicRoute);
diff --git a/packages/api/package.json b/packages/api/package.json
index d51b108b..54656e64 100644
--- a/packages/api/package.json
+++ b/packages/api/package.json
@@ -13,6 +13,7 @@
"test": "vitest"
},
"dependencies": {
+ "@hono/trpc-server": "^0.4.0",
"@hono/zod-validator": "^0.5.0",
"@karakeep/db": "workspace:*",
"@karakeep/shared": "workspace:*",
diff --git a/packages/api/routes/trpc.ts b/packages/api/routes/trpc.ts
new file mode 100644
index 00000000..3d83f64a
--- /dev/null
+++ b/packages/api/routes/trpc.ts
@@ -0,0 +1,28 @@
+import { trpcServer } from "@hono/trpc-server";
+import { Hono } from "hono";
+
+import { Context } from "@karakeep/trpc";
+import { appRouter } from "@karakeep/trpc/routers/_app";
+
+const trpc = new Hono<{
+ Variables: {
+ ctx: Context;
+ };
+}>().use(
+ "/*",
+ trpcServer({
+ endpoint: "/api/trpc",
+ router: appRouter,
+ createContext: (_, c) => {
+ return c.var.ctx;
+ },
+ onError: ({ path, error }) => {
+ if (process.env.NODE_ENV === "development") {
+ console.error(`❌ tRPC failed on ${path}`);
+ }
+ console.error(error);
+ },
+ }),
+);
+
+export default trpc;