diff --git a/packages/app-store/apps.browser.generated.tsx b/packages/app-store/apps.browser.generated.tsx
index f9a0c9d264..a3de74c836 100644
--- a/packages/app-store/apps.browser.generated.tsx
+++ b/packages/app-store/apps.browser.generated.tsx
@@ -24,6 +24,7 @@ import { metadata as office365calendar_meta } from "./office365calendar/_metadat
import { metadata as office365video_meta } from "./office365video/_metadata";
import { metadata as ping_meta } from "./ping/_metadata";
import { metadata as rainbow_meta } from "./rainbow/_metadata";
+import { metadata as raycast_meta } from "./raycast/_metadata";
import { metadata as riverside_meta } from "./riverside/_metadata";
import { metadata as slackmessaging_meta } from "./slackmessaging/_metadata";
import { metadata as stripepayment_meta } from "./stripepayment/_metadata";
@@ -56,6 +57,7 @@ export const appStoreMetadata = {
office365video: office365video_meta,
ping: ping_meta,
rainbow: rainbow_meta,
+ raycast: raycast_meta,
riverside: riverside_meta,
slackmessaging: slackmessaging_meta,
stripepayment: stripepayment_meta,
diff --git a/packages/app-store/apps.server.generated.ts b/packages/app-store/apps.server.generated.ts
index ace3a83441..b53953f2f8 100644
--- a/packages/app-store/apps.server.generated.ts
+++ b/packages/app-store/apps.server.generated.ts
@@ -21,6 +21,7 @@ export const apiHandlers = {
office365video: import("./office365video/api"),
ping: import("./ping/api"),
rainbow: import("./rainbow/api"),
+ raycast: import("./raycast/api"),
riverside: import("./riverside/api"),
slackmessaging: import("./slackmessaging/api"),
stripepayment: import("./stripepayment/api"),
diff --git a/packages/app-store/raycast/README.mdx b/packages/app-store/raycast/README.mdx
new file mode 100644
index 0000000000..f3cd261231
--- /dev/null
+++ b/packages/app-store/raycast/README.mdx
@@ -0,0 +1,11 @@
+---
+items:
+ - /api/app-store/raycast/1.png
+ - /api/app-store/raycast/2.png
+ - /api/app-store/raycast/3.png
+ - /api/app-store/raycast/4.png
+---
+
+
+
+Quickly share your Cal.com meeting links with Raycast. Requires Raycast.com to be installed. You can create an API token in your Developer Cal.com Settings.
diff --git a/packages/app-store/raycast/_metadata.ts b/packages/app-store/raycast/_metadata.ts
new file mode 100644
index 0000000000..9c7f2aa320
--- /dev/null
+++ b/packages/app-store/raycast/_metadata.ts
@@ -0,0 +1,10 @@
+import type { AppMeta } from "@calcom/types/App";
+
+import config from "./config.json";
+
+export const metadata = {
+ category: "other",
+ ...config,
+} as AppMeta;
+
+export default metadata;
diff --git a/packages/app-store/raycast/api/add.ts b/packages/app-store/raycast/api/add.ts
new file mode 100644
index 0000000000..53ca89baec
--- /dev/null
+++ b/packages/app-store/raycast/api/add.ts
@@ -0,0 +1,17 @@
+import { AppDeclarativeHandler } from "@calcom/types/AppHandler";
+
+import { createDefaultInstallation } from "../../_utils/installation";
+import appConfig from "../config.json";
+
+const handler: AppDeclarativeHandler = {
+ // Instead of passing appType and slug from here, api/integrations/[..args] should be able to derive and pass these directly to createCredential
+ appType: appConfig.type,
+ slug: appConfig.slug,
+ supportsMultipleInstalls: false,
+ handlerType: "add",
+ redirectUrl: "raycast://extensions/eluce2/cal-com-share-meeting-links?source=webstore",
+ createCredential: ({ appType, user, slug }) =>
+ createDefaultInstallation({ appType, userId: user.id, slug, key: {} }),
+};
+
+export default handler;
diff --git a/packages/app-store/raycast/api/index.ts b/packages/app-store/raycast/api/index.ts
new file mode 100644
index 0000000000..4c0d2ead01
--- /dev/null
+++ b/packages/app-store/raycast/api/index.ts
@@ -0,0 +1 @@
+export { default as add } from "./add";
diff --git a/packages/app-store/raycast/components/.gitkeep b/packages/app-store/raycast/components/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/packages/app-store/raycast/config.json b/packages/app-store/raycast/config.json
new file mode 100644
index 0000000000..2a4205df77
--- /dev/null
+++ b/packages/app-store/raycast/config.json
@@ -0,0 +1,15 @@
+{
+ "/*": "Don't modify slug - If required, do it using cli edit command",
+ "name": "Raycast",
+ "slug": "raycast",
+ "type": "raycast_other",
+ "imageSrc": "/api/app-store/raycast/icon.svg",
+ "logo": "/api/app-store/raycast/icon.svg",
+ "url": "https://cal.com/apps/raycast",
+ "variant": "other",
+ "categories": ["other"],
+ "publisher": "eluce2",
+ "email": "info@restlessmindstech.com",
+ "description": "Quickly share your Cal.com meeting links with Raycast",
+ "__createdUsingCli": true
+}
diff --git a/packages/app-store/raycast/index.ts b/packages/app-store/raycast/index.ts
new file mode 100644
index 0000000000..5d372ceda3
--- /dev/null
+++ b/packages/app-store/raycast/index.ts
@@ -0,0 +1,2 @@
+export * as api from "./api";
+export { metadata } from "./_metadata";
diff --git a/packages/app-store/raycast/package.json b/packages/app-store/raycast/package.json
new file mode 100644
index 0000000000..62261964a1
--- /dev/null
+++ b/packages/app-store/raycast/package.json
@@ -0,0 +1,14 @@
+{
+ "$schema": "https://json.schemastore.org/package.json",
+ "private": true,
+ "name": "@calcom/raycast",
+ "version": "0.0.0",
+ "main": "./index.ts",
+ "description": "Quickly share your Cal.com meeting links with Raycast",
+ "dependencies": {
+ "@calcom/lib": "*"
+ },
+ "devDependencies": {
+ "@calcom/types": "*"
+ }
+}
diff --git a/packages/app-store/raycast/static/1.png b/packages/app-store/raycast/static/1.png
new file mode 100644
index 0000000000..ed6d9dbc31
Binary files /dev/null and b/packages/app-store/raycast/static/1.png differ
diff --git a/packages/app-store/raycast/static/2.png b/packages/app-store/raycast/static/2.png
new file mode 100644
index 0000000000..4999fc77f0
Binary files /dev/null and b/packages/app-store/raycast/static/2.png differ
diff --git a/packages/app-store/raycast/static/3.png b/packages/app-store/raycast/static/3.png
new file mode 100644
index 0000000000..7ce81d7b14
Binary files /dev/null and b/packages/app-store/raycast/static/3.png differ
diff --git a/packages/app-store/raycast/static/4.png b/packages/app-store/raycast/static/4.png
new file mode 100644
index 0000000000..959889103b
Binary files /dev/null and b/packages/app-store/raycast/static/4.png differ
diff --git a/packages/app-store/raycast/static/icon.svg b/packages/app-store/raycast/static/icon.svg
new file mode 100644
index 0000000000..f1b07924e6
--- /dev/null
+++ b/packages/app-store/raycast/static/icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/packages/prisma/seed-app-store.config.json b/packages/prisma/seed-app-store.config.json
index b1a7f6fa6e..d3b3431334 100644
--- a/packages/prisma/seed-app-store.config.json
+++ b/packages/prisma/seed-app-store.config.json
@@ -47,5 +47,11 @@
"categories": ["web3"],
"slug": "rainbow",
"type": "rainbow_web3"
+ },
+ {
+ "dirName": "raycast",
+ "categories": ["other"],
+ "slug": "raycast",
+ "type": "raycast_other"
}
]