diff --git a/apps/web/components/v2/apps/App.tsx b/apps/web/components/v2/apps/App.tsx index 3a5cd1e868..c4c211bead 100644 --- a/apps/web/components/v2/apps/App.tsx +++ b/apps/web/components/v2/apps/App.tsx @@ -106,10 +106,10 @@ const Component = ({ )}
-
+
{name} @@ -204,7 +204,7 @@ const Component = ({ )} -
{body}
+
{body}

{t("pricing")}

{price === 0 ? ( diff --git a/packages/app-store/apps.browser.generated.tsx b/packages/app-store/apps.browser.generated.tsx index a3de74c836..dfea6e2e2e 100644 --- a/packages/app-store/apps.browser.generated.tsx +++ b/packages/app-store/apps.browser.generated.tsx @@ -20,6 +20,7 @@ import { metadata as hubspotothercalendar_meta } from "./hubspotothercalendar/_m import { metadata as huddle01video_meta } from "./huddle01video/_metadata"; import { metadata as jitsivideo_meta } from "./jitsivideo/_metadata"; import { metadata as larkcalendar_meta } from "./larkcalendar/_metadata"; +import { metadata as n8n_meta } from "./n8n/_metadata"; import { metadata as office365calendar_meta } from "./office365calendar/_metadata"; import { metadata as office365video_meta } from "./office365video/_metadata"; import { metadata as ping_meta } from "./ping/_metadata"; @@ -53,6 +54,7 @@ export const appStoreMetadata = { huddle01video: huddle01video_meta, jitsivideo: jitsivideo_meta, larkcalendar: larkcalendar_meta, + n8n: n8n_meta, office365calendar: office365calendar_meta, office365video: office365video_meta, ping: ping_meta, diff --git a/packages/app-store/apps.server.generated.ts b/packages/app-store/apps.server.generated.ts index b53953f2f8..3fbd5a1954 100644 --- a/packages/app-store/apps.server.generated.ts +++ b/packages/app-store/apps.server.generated.ts @@ -17,6 +17,7 @@ export const apiHandlers = { huddle01video: import("./huddle01video/api"), jitsivideo: import("./jitsivideo/api"), larkcalendar: import("./larkcalendar/api"), + n8n: import("./n8n/api"), office365calendar: import("./office365calendar/api"), office365video: import("./office365video/api"), ping: import("./ping/api"), diff --git a/packages/app-store/n8n/README.mdx b/packages/app-store/n8n/README.mdx new file mode 100644 index 0000000000..9a37137c08 --- /dev/null +++ b/packages/app-store/n8n/README.mdx @@ -0,0 +1,25 @@ +--- +items: + - /api/app-store/n8n/1.png + - /api/app-store/n8n/2.png + - /api/app-store/n8n/3.png + - https://docs.n8n.io/_images/integrations/builtin/credentials/cal/getting-api-key.gif +--- + + + +

You can use these credentials to authenticate the following nodes with Cal.

+ +

Prerequisites

+

Using API keys

+

Your API requests are authenticated using API keys. Any request that doesn't include an API key will return an error.

+
    +
  1. Log into your Cal account.
  2. +
  3. Click on Settings.
  4. +
  5. There you will find the API keys section which allows you to generate a key for use. More information on this can be found on the Cal Authentication page.
  6. +
  7. Use API key in your Cal trigger node credentials in n8n.
  8. +
\ No newline at end of file diff --git a/packages/app-store/n8n/_metadata.ts b/packages/app-store/n8n/_metadata.ts new file mode 100644 index 0000000000..9c7f2aa320 --- /dev/null +++ b/packages/app-store/n8n/_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/n8n/api/add.ts b/packages/app-store/n8n/api/add.ts new file mode 100644 index 0000000000..deca8fbda3 --- /dev/null +++ b/packages/app-store/n8n/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: "https://n8n.io/integrations/817-cal-trigger/", + createCredential: ({ appType, user, slug }) => + createDefaultInstallation({ appType, userId: user.id, slug, key: {} }), +}; + +export default handler; diff --git a/packages/app-store/n8n/api/index.ts b/packages/app-store/n8n/api/index.ts new file mode 100644 index 0000000000..4c0d2ead01 --- /dev/null +++ b/packages/app-store/n8n/api/index.ts @@ -0,0 +1 @@ +export { default as add } from "./add"; diff --git a/packages/app-store/n8n/components/.gitkeep b/packages/app-store/n8n/components/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/app-store/n8n/config.json b/packages/app-store/n8n/config.json new file mode 100644 index 0000000000..5bca3fd84d --- /dev/null +++ b/packages/app-store/n8n/config.json @@ -0,0 +1,15 @@ +{ + "/*": "Don't modify slug - If required, do it using cli edit command", + "name": "n8n", + "slug": "n8n", + "type": "n8n_other", + "imageSrc": "/api/app-store/n8n/icon.svg", + "logo": "/api/app-store/n8n/icon.svg", + "url": "https://cal.com/apps/n8n", + "variant": "other", + "categories": ["other"], + "publisher": "Cal.com, Inc.", + "email": "help@cal.com", + "description": "Automate without limits. The workflow automation platform that doesn't box you in, that you never outgrow", + "__createdUsingCli": true +} diff --git a/packages/app-store/n8n/index.ts b/packages/app-store/n8n/index.ts new file mode 100644 index 0000000000..5d372ceda3 --- /dev/null +++ b/packages/app-store/n8n/index.ts @@ -0,0 +1,2 @@ +export * as api from "./api"; +export { metadata } from "./_metadata"; diff --git a/packages/app-store/n8n/package.json b/packages/app-store/n8n/package.json new file mode 100644 index 0000000000..325000f1fa --- /dev/null +++ b/packages/app-store/n8n/package.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json.schemastore.org/package.json", + "private": true, + "name": "@calcom/n8n", + "version": "0.0.0", + "main": "./index.ts", + "description": "Automate without limits. The workflow automation platform that doesn't box you in, that you never outgrow", + "dependencies": { + "@calcom/lib": "*" + }, + "devDependencies": { + "@calcom/types": "*" + } +} diff --git a/packages/app-store/n8n/static/1.png b/packages/app-store/n8n/static/1.png new file mode 100644 index 0000000000..4cc4562e3e Binary files /dev/null and b/packages/app-store/n8n/static/1.png differ diff --git a/packages/app-store/n8n/static/2.png b/packages/app-store/n8n/static/2.png new file mode 100644 index 0000000000..b8b82385e8 Binary files /dev/null and b/packages/app-store/n8n/static/2.png differ diff --git a/packages/app-store/n8n/static/3.png b/packages/app-store/n8n/static/3.png new file mode 100644 index 0000000000..e4c3ba6717 Binary files /dev/null and b/packages/app-store/n8n/static/3.png differ diff --git a/packages/app-store/n8n/static/4.gif b/packages/app-store/n8n/static/4.gif new file mode 100644 index 0000000000..92c6b65a6e Binary files /dev/null and b/packages/app-store/n8n/static/4.gif differ diff --git a/packages/app-store/n8n/static/icon.svg b/packages/app-store/n8n/static/icon.svg new file mode 100644 index 0000000000..0311686341 --- /dev/null +++ b/packages/app-store/n8n/static/icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/packages/prisma/seed-app-store.config.json b/packages/prisma/seed-app-store.config.json index d3b3431334..3574206843 100644 --- a/packages/prisma/seed-app-store.config.json +++ b/packages/prisma/seed-app-store.config.json @@ -53,5 +53,11 @@ "categories": ["other"], "slug": "raycast", "type": "raycast_other" + }, + { + "dirName": "n8n", + "categories": ["other"], + "slug": "n8n", + "type": "n8n_other" } ]