chore/AppStore: Remove deprecated imageSrc and make the paths relative in logo (#8479)

* Remove depreated imageSrc and make the paths relative in logo

* Do logo replacement at a single place

* Make logo relative at other places

* Fix campfire page not working in dev environment
This commit is contained in:
Hariom Balhara 2023-04-26 16:33:34 +05:30 committed by GitHub
parent 543466f1b9
commit 51695ee79d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
103 changed files with 210 additions and 253 deletions

View File

@ -6,6 +6,7 @@ import path from "path";
import { z } from "zod";
import { getAppWithMetadata } from "@calcom/app-store/_appRegistry";
import { getAppAssetFullPath } from "@calcom/app-store/getAppAssetFullPath";
import prisma from "@calcom/prisma";
import type { inferSSRProps } from "@lib/types/inferSSRProps";
@ -108,9 +109,11 @@ export const getStaticProps = async (ctx: GetStaticPropsContext) => {
const { content, data } = sourceSchema.parse({ content: result.content, data: result.data });
if (data.items) {
data.items = data.items.map((item) => {
if (typeof item === "string" && !item.includes("/api/app-store")) {
// Make relative paths absolute
return `/api/app-store/${appDirname}/${item}`;
if (typeof item === "string") {
return getAppAssetFullPath(item, {
dirName: singleApp.dirName,
isTemplate: singleApp.isTemplate,
});
}
return item;
});

View File

@ -11,10 +11,6 @@ export async function getAppWithMetadata(app: { dirName: string }) {
// Let's not leak api keys to the front end
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { key, ...metadata } = appMetadata;
if (metadata.logo && !metadata.logo.includes("/api/app-store/")) {
const appDirName = `${metadata.isTemplate ? "templates" : ""}/${app.dirName}`;
metadata.logo = `/api/app-store/${appDirName}/${metadata.logo}`;
}
return metadata;
}

View File

@ -1,8 +1,8 @@
---
items:
- /api/app-store/amie/1.jpg
- /api/app-store/amie/2.jpg
- /api/app-store/amie/3.jpg
- 1.jpg
- 2.jpg
- 3.jpg
---
<iframe class="w-full aspect-video -mx-2" width="560" height="315" src="https://www.youtube.com/embed/OGe1NYKhZE8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

View File

@ -3,8 +3,7 @@
"name": "Amie",
"slug": "amie",
"type": "amie_other",
"imageSrc": "/api/app-store/amie/icon.svg",
"logo": "/api/app-store/amie/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/amie",
"variant": "other",
"categories": ["calendar"],

View File

@ -1,6 +1,7 @@
import type { AppMeta } from "@calcom/types/App";
import { appStoreMetadata as rawAppStoreMetadata } from "./apps.metadata.generated";
import { getAppAssetFullPath } from "./getAppAssetFullPath";
type RawAppStoreMetaData = typeof rawAppStoreMetadata;
type AppStoreMetaData = {
@ -8,12 +9,19 @@ type AppStoreMetaData = {
};
export const appStoreMetadata = {} as AppStoreMetaData;
for (const [key, value] of Object.entries(rawAppStoreMetadata)) {
appStoreMetadata[key as keyof typeof appStoreMetadata] = {
const dirName = "dirName" in value ? value.dirName : value.slug;
if (!dirName) {
throw new Error(`Couldn't derive dirName for app ${key}`);
}
const metadata = (appStoreMetadata[key as keyof typeof appStoreMetadata] = {
appData: null,
dirName: "dirName" in value ? value.dirName : value.slug,
dirName,
__template: "",
...value,
} as AppStoreMetaData[keyof AppStoreMetaData];
} as AppStoreMetaData[keyof AppStoreMetaData]);
metadata.logo = getAppAssetFullPath(metadata.logo, {
dirName,
isTemplate: metadata.isTemplate,
});
}

View File

@ -1,6 +1,6 @@
---
items:
- /api/app-store/applecalendar/1.jpg
- 1.jpg
---
Apple calendar runs both the macOS and iOS mobile operating systems. Offering online cloud backup of calendars using Apples iCloud service, it can sync with Google Calendar and Microsoft Exchange Server. Users can schedule events in their day that include time, location, duration, and extra notes.

View File

@ -8,11 +8,10 @@ export const metadata = {
installed: true,
type: "apple_calendar",
title: "Apple Calendar",
imageSrc: "/api/app-store/applecalendar/icon.svg",
variant: "calendar",
categories: ["calendar"],
category: "calendar",
logo: "/api/app-store/applecalendar/icon.svg",
logo: "icon.svg",
publisher: "Cal.com",
slug: "apple-calendar",
url: "https://cal.com/",

View File

@ -1,13 +1,13 @@
---
items:
- /api/app-store/around/1.jpg
- /api/app-store/around/2.jpg
- /api/app-store/around/3.jpg
- /api/app-store/around/4.jpg
- /api/app-store/around/5.jpg
- /api/app-store/around/6.jpg
- /api/app-store/around/7.jpg
- /api/app-store/around/8.jpg
- 1.jpg
- 2.jpg
- 3.jpg
- 4.jpg
- 5.jpg
- 6.jpg
- 7.jpg
- 8.jpg
---
Discover radically unique video calls designed to help hybrid-remote teams create, collaborate and celebrate together.

View File

@ -4,7 +4,7 @@
"title": "Around",
"slug": "around",
"type": "around_video",
"logo": "/api/app-store/around/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/around",
"variant": "conferencing",
"categories": ["video"],

View File

@ -1,6 +1,6 @@
---
items:
- /api/app-store/caldavcalendar/1.jpg
- 1.jpg
---
Caldav is a protocol that allows different clients/servers to access scheduling information on remote servers as well as schedule meetings with other users on the same server or other servers. It extends WebDAV specification and uses iCalendar format for the data.

View File

@ -8,15 +8,15 @@ export const metadata = {
installed: true,
type: "caldav_calendar",
title: "CalDav (Beta)",
imageSrc: "/api/app-store/caldavcalendar/icon.svg",
variant: "calendar",
category: "calendar",
categories: ["calendar"],
logo: "/api/app-store/caldavcalendar/icon.svg",
logo: "icon.svg",
publisher: "Cal.com",
slug: "caldav-calendar",
url: "https://cal.com/",
email: "ali@cal.com",
dirName: "caldavcalendar",
} as AppMeta;
export default metadata;

View File

@ -8,11 +8,10 @@ export const metadata = {
installed: true,
type: "caldav_calendar",
title: "CalDav (Beta)",
imageSrc: "/api/app-store/caldavcalendar/icon.svg",
variant: "calendar",
category: "calendar",
categories: ["calendar"],
logo: "/api/app-store/caldavcalendar/icon.svg",
logo: "icon.svg",
publisher: "Cal.com",
slug: "caldav-calendar",
url: "https://cal.com/",

View File

@ -1,12 +1,12 @@
---
items:
- /api/app-store/campfire/1.jpg
- /api/app-store/campfire/2.jpg
- /api/app-store/campfire/3.jpg
- /api/app-store/campfire/4.jpg
- 1.jpg
- 2.jpg
- 3.jpg
- 4.jpg
---
<iframe class="w-full aspect-video -mx-2" width="560" height="315" src="https://player.vimeo.com/video/683733529?app_id=122963&h=025a2fae94&referrer=https%3A%2F%2Fwww.campfire.to%2F" />
<iframe class="w-full aspect-video -mx-2" width="560" height="315" src="https://player.vimeo.com/video/683733529?app_id=122963&h=025a2fae94&referrer=https%3A%2F%2Fwww.campfire.to%2F" ></iframe>
## Feel connected with your remote team

View File

@ -3,8 +3,7 @@
"name": "Campfire",
"slug": "campfire",
"type": "campfire_video",
"imageSrc": "/api/app-store/campfire/icon.svg",
"logo": "/api/app-store/campfire/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/campfire",
"variant": "conferencing",
"categories": ["video"],

View File

@ -1,10 +1,10 @@
---
items:
- /api/app-store/closecom/1.jpg
- /api/app-store/closecom/2.jpg
- /api/app-store/closecom/3.jpg
- /api/app-store/closecom/4.jpg
- /api/app-store/closecom/5.jpg
- 1.jpg
- 2.jpg
- 3.jpg
- 4.jpg
- 5.jpg
---
- Close is a modern CRM with build-in sales communication tools for email, phone, SMS, and meetings.

View File

@ -4,8 +4,7 @@
"title": "Close.com",
"slug": "closecom",
"type": "closecom_other_calendar",
"imageSrc": "/api/app-store/closecom/icon.svg",
"logo": "/api/app-store/closecom/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/closecom",
"variant": "other",
"categories": ["other"],

View File

@ -3,7 +3,6 @@
"name": "Cron",
"slug": "cron",
"type": "cron_other",
"imageSrc": "logo.png",
"logo": "logo.png",
"url": "https://cal.com/apps/cron",
"variant": "other",

View File

@ -1,8 +1,8 @@
---
items:
- /api/app-store/dailyvideo/1.jpg
- /api/app-store/dailyvideo/2.jpg
- /api/app-store/dailyvideo/3.jpg
- 1.jpg
- 2.jpg
- 3.jpg
---
- **Recordings require a team plan**

View File

@ -7,11 +7,10 @@ export const metadata = {
description: _package.description,
installed: !!process.env.DAILY_API_KEY,
type: "daily_video",
imageSrc: "/api/app-store/dailyvideo/icon.svg",
variant: "conferencing",
url: "https://daily.co",
categories: ["video"],
logo: "/api/app-store/dailyvideo/icon.svg",
logo: "icon.svg",
publisher: "Cal.com",
category: "video",
slug: "daily-video",

View File

@ -3,8 +3,7 @@
"name": "Discord",
"slug": "discord",
"type": "discord_video",
"imageSrc": "/api/app-store/discord/icon.svg",
"logo": "/api/app-store/discord/icon.svg",
"logo": "icon.svg",
"url": "https://discord.com/",
"variant": "conferencing",
"categories": ["video"],

View File

@ -8,12 +8,11 @@ export const metadata = {
installed: true,
type: "exchange2013_calendar",
title: "Microsoft Exchange 2013 Calendar",
imageSrc: "/api/app-store/exchange2013calendar/icon.svg",
variant: "calendar",
category: "calendar",
categories: ["calendar"],
label: "Exchange Calendar",
logo: "/api/app-store/exchange2013calendar/icon.svg",
logo: "icon.svg",
publisher: "Cal.com",
slug: "exchange2013-calendar",
url: "https://cal.com/",

View File

@ -8,12 +8,11 @@ export const metadata = {
installed: true,
type: "exchange2016_calendar",
title: "Microsoft Exchange 2016 Calendar",
imageSrc: "/api/app-store/exchange2016calendar/icon.svg",
variant: "calendar",
category: "calendar",
categories: ["calendar"],
label: "Exchange Calendar",
logo: "/api/app-store/exchange2016calendar/icon.svg",
logo: "icon.svg",
publisher: "Cal.com",
slug: "exchange2016-calendar",
url: "https://cal.com/",

View File

@ -3,9 +3,9 @@
"title": "Microsoft Exchange",
"name": "Microsoft Exchange",
"slug": "exchange",
"dirName": "exchangecalendar",
"type": "exchange_calendar",
"imageSrc": "/api/app-store/exchangecalendar/icon.svg",
"logo": "/api/app-store/exchangecalendar/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/exchange",
"variant": "calendar",
"categories": ["calendar"],

View File

@ -1,7 +1,7 @@
---
items:
- /api/app-store/facetime/facetime1.png
- /api/app-store/facetime/facetime2.png
- facetime1.png
- facetime2.png
---
With FaceTime, its easy to stay in touch. You can make audio and video calls with up to 32 people, share your screen, enjoy films and music together, and more.

View File

@ -4,8 +4,7 @@
"title": "Facetime",
"slug": "facetime",
"type": "facetime_video",
"imageSrc": "/api/app-store/facetime/icon.svg",
"logo": "/api/app-store/facetime/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/facetime",
"variant": "conferencing",
"categories": ["video"],

View File

@ -1,6 +1,6 @@
---
items:
- /api/app-store/fathom/1.jpg
- 1.jpg
---
Fathom Analytics provides simple, privacy-focused website analytics. We're a GDPR-compliant, Google Analytics alternative.

View File

@ -3,8 +3,7 @@
"name": "Fathom",
"slug": "fathom",
"type": "fathom_analytics",
"imageSrc": "/api/app-store/fathom/icon.svg",
"logo": "/api/app-store/fathom/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/fathom",
"variant": "analytics",
"categories": ["analytics"],

View File

@ -1,11 +1,11 @@
---
description: Google Analytics is a web analytics service offered by Google that tracks and reports website traffic, currently as a platform inside the Google Marketing Platform brand.
items:
- /api/app-store/ga4/1.jpeg
- /api/app-store/ga4/2.jpeg
- /api/app-store/ga4/3.jpeg
- /api/app-store/ga4/4.jpeg
- /api/app-store/ga4/5.jpeg
- 1.jpeg
- 2.jpeg
- 3.jpeg
- 4.jpeg
- 5.jpeg
---
Google Analytics is a web analytics service offered by Google that tracks and reports website traffic, currently as a platform inside the Google Marketing Platform brand.

View File

@ -3,8 +3,7 @@
"name": "Google Analytics",
"slug": "ga4",
"type": "ga4_analytics",
"imageSrc": "/api/app-store/ga4/icon.svg",
"logo": "/api/app-store/ga4/icon.svg",
"logo": "icon.svg",
"url": "https://marketingplatform.google.com",
"variant": "analytics",
"categories": ["analytics"],

View File

@ -0,0 +1,10 @@
import type { App } from "@calcom/types/App";
export function getAppAssetFullPath(assetPath: string, metadata: Pick<App, "dirName" | "isTemplate">) {
const appDirName = `${metadata.isTemplate ? "templates/" : ""}${metadata.dirName}`;
let assetFullPath = assetPath;
if (!assetPath.startsWith("/app-store/") && !/^https?/.test(assetPath)) {
assetFullPath = `/app-store/${appDirName}/${assetPath}`;
}
return assetFullPath;
}

View File

@ -1,7 +1,7 @@
---
items:
- /api/app-store/giphy/GIPHY1.png
- /api/app-store/giphy/GIPHY2.png
- GIPHY1.png
- GIPHY2.png
---
An online database and search engine that allows users to search for and share short looping videos with no sound that resemble animated GIF files. GIPHY is your top source for the best & newest GIFs & Animated Stickers online. Find everything from funny GIFs, reaction GIFs, unique GIFs and more to add to your custom booking page. Located under advanced settings in each event type.

View File

@ -7,9 +7,7 @@ export const metadata = {
description: _package.description,
installed: true,
categories: ["other"],
// If using static next public folder, can then be referenced from the base URL (/).
imageSrc: "/api/app-store/giphy/icon.svg",
logo: "/api/app-store/giphy/icon.svg",
logo: "icon.svg",
publisher: "Cal.com",
slug: "giphy",
title: "Giphy",

View File

@ -1,7 +1,7 @@
---
items:
- /api/app-store/googlecalendar/GCal1.png
- /api/app-store/googlecalendar/GCal2.png
- GCal1.png
- GCal2.png
---
Google Calendar is a time management and scheduling service developed by Google. Allows users to create and edit events, with options available for type and time. Available to anyone that has a Gmail account on both mobile and web versions.

View File

@ -12,7 +12,7 @@ export const metadata = {
variant: "calendar",
category: "calendar",
categories: ["calendar"],
logo: "/api/app-store/googlecalendar/icon.svg",
logo: "icon.svg",
publisher: "Cal.com",
slug: "google-calendar",
url: "https://cal.com/",

View File

@ -1,7 +1,7 @@
---
items:
- /api/app-store/googlevideo/gmeet1.png
- /api/app-store/googlevideo/gmeet2.png
- gmeet1.png
- gmeet2.png
---
Google Meet is Google's web-based video conferencing platform, designed to compete with major conferencing platforms.

View File

@ -12,9 +12,8 @@ export const metadata = {
categories: ["video"],
type: "google_video",
title: "Google Meet",
imageSrc: "/api/app-store/googlevideo/logo.webp",
variant: "conferencing",
logo: "/api/app-store/googlevideo/logo.webp",
logo: "logo.webp",
publisher: "Cal.com",
url: "https://cal.com/",
isGlobal: false,

View File

@ -2,7 +2,6 @@
"name": "Google Tag Manager",
"slug": "gtm",
"type": "gtm_analytics",
"imageSrc": "icon.svg",
"logo": "icon.svg",
"url": "https://tagmanager.google.com",
"variant": "analytics",

View File

@ -1,6 +1,6 @@
---
items:
- /api/app-store/hubspot/hubspot01.webp
- hubspot01.webp
---
HubSpot is a cloud-based CRM designed to help align sales and marketing teams, foster sales enablement, boost ROI and optimize your inbound marketing strategy to generate more, qualified leads.

View File

@ -7,9 +7,8 @@ export const metadata = {
installed: !!process.env.HUBSPOT_CLIENT_ID,
description: _package.description,
type: "hubspot_other_calendar",
imageSrc: "/api/app-store/hubspot/icon.svg",
variant: "other_calendar",
logo: "/api/app-store/hubspot/icon.svg",
logo: "icon.svg",
publisher: "Cal.com",
url: "https://hubspot.com/",
categories: ["other"],

View File

@ -1,11 +1,11 @@
---
items:
- /api/app-store/huddle01video/1.png
- /api/app-store/huddle01video/2.png
- /api/app-store/huddle01video/3.png
- /api/app-store/huddle01video/4.png
- /api/app-store/huddle01video/5.png
- /api/app-store/huddle01video/6.png
- 1.png
- 2.png
- 3.png
- 4.png
- 5.png
- 6.png
---
Huddle01 is a new video conferencing software native to Web3 and is comparable to a decentralized version of Zoom. It supports conversations for NFT communities, DAOs, Builders and also has features such as token gating, NFTs as avatars, Web3 Login + ENS and recording over IPFS.

View File

@ -8,10 +8,9 @@ export const metadata = {
description: _package.description,
installed: true,
type: "huddle01_video",
imageSrc: "/api/app-store/huddle01video/icon.svg",
variant: "conferencing",
categories: ["video", "web3"],
logo: "/api/app-store/huddle01video/icon.svg",
logo: "icon.svg",
publisher: "huddle01.com",
url: "https://huddle01.com",
category: "web3",

View File

@ -1,6 +1,6 @@
---
items:
- /api/app-store/jitsivideo/jitsi1.jpg
- jitsi1.jpg
---
Jitsi is a free open-source video conferencing software for web and mobile. Make a call, launch on your own servers, integrate into your app, and more.

View File

@ -7,10 +7,9 @@ export const metadata = {
description: _package.description,
installed: true,
type: "jitsi_video",
imageSrc: "/api/app-store/jitsivideo/icon.svg",
variant: "conferencing",
categories: ["video"],
logo: "/api/app-store/jitsivideo/icon.svg",
logo: "icon.svg",
publisher: "Cal.com",
url: "https://jitsi.org/",
slug: "jitsi",

View File

@ -1,9 +1,9 @@
---
items:
- /api/app-store/larkcalendar/1.png
- /api/app-store/larkcalendar/2.png
- /api/app-store/larkcalendar/3.png
- /api/app-store/larkcalendar/4.png
- 1.png
- 2.png
- 3.png
- 4.png
---
<iframe class="w-full aspect-video" width="560" height="315" src="https://www.youtube.com/embed/ciqbZ466XSQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

View File

@ -8,10 +8,9 @@ export const metadata = {
installed: true,
type: "lark_calendar",
title: "Lark Calendar",
imageSrc: "/api/app-store/larkcalendar/icon.svg",
variant: "calendar",
categories: ["calendar"],
logo: "/api/app-store/larkcalendar/icon.svg",
logo: "icon.svg",
publisher: "Lark",
slug: "lark-calendar",
url: "https://larksuite.com/",

View File

@ -1,8 +1,8 @@
---
items:
- /api/app-store/n8n/1.png
- /api/app-store/n8n/2.png
- /api/app-store/n8n/3.png
- 1.png
- 2.png
- 3.png
- https://docs.n8n.io/_images/integrations/builtin/credentials/cal/getting-api-key.gif
---

View File

@ -3,8 +3,7 @@
"name": "n8n",
"slug": "n8n",
"type": "n8n_automation",
"imageSrc": "/api/app-store/n8n/icon.svg",
"logo": "/api/app-store/n8n/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/n8n",
"variant": "automation",
"categories": ["automation"],

View File

@ -1,9 +1,9 @@
---
items:
- /api/app-store/office365calendar/1.jpg
- /api/app-store/office365calendar/2.jpg
- /api/app-store/office365calendar/3.jpg
- /api/app-store/office365calendar/4.jpg
- 1.jpg
- 2.jpg
- 3.jpg
- 4.jpg
---
Microsoft Office 365 is a suite of apps that helps you stay connected with others and get things done. It includes but is not limited to Microsoft Word, PowerPoint, Excel, Teams, OneNote and OneDrive. Office 365 allows you to work remotely with others on a team and collaborate in an online environment. Both web versions and desktop/mobile applications are available.

View File

@ -7,13 +7,13 @@ export const metadata = {
description: _package.description,
type: "office365_calendar",
title: "Outlook Calendar",
imageSrc: "/api/app-store/office365calendar/icon.svg",
variant: "calendar",
category: "calendar",
categories: ["calendar"],
logo: "/api/app-store/office365calendar/icon.svg",
logo: "icon.svg",
publisher: "Cal.com",
slug: "office365-calendar",
dirName: "office365calendar",
url: "https://cal.com/",
email: "help@cal.com",
} as AppMeta;

View File

@ -1,10 +1,10 @@
---
items:
- /api/app-store/office365video/teams1.png
- /api/app-store/office365video/teams2.png
- /api/app-store/office365video/teams3.jpeg
- /api/app-store/office365video/teams4.png
- /api/app-store/office365video/teams5.png
- teams1.png
- teams2.png
- teams3.jpeg
- teams4.png
- teams5.png
---
Microsoft Teams is a business communication platform and collaborative workspace included in Microsoft 365. It offers workspace chat and video conferencing, file storage, and application integration. Both web versions and desktop/mobile applications are available. NOTE: MUST HAVE A WORK / SCHOOL ACCOUNT

View File

@ -2,9 +2,8 @@
"name": "Microsoft 365/Teams (Requires work/school account)",
"description": "Microsoft Teams is a business communication platform and collaborative workspace included in Microsoft 365. It offers workspace chat and video conferencing, file storage, and application integration. Both web versions and desktop/mobile applications are available. NOTE: MUST HAVE A WORK / SCHOOL ACCOUNT",
"type": "office365_video",
"imageSrc": "/api/app-store/office365video/icon.svg",
"variant": "conferencing",
"logo": "/api/app-store/office365video/icon.svg",
"logo": "icon.svg",
"publisher": "Cal.com",
"url": "https://www.microsoft.com/en-ca/microsoft-teams/group-chat-software",
"verified": true,

View File

@ -1,8 +1,8 @@
---
items:
- /api/app-store/ping/1.png
- /api/app-store/ping/2.png
- /api/app-store/ping/3.png
- 1.png
- 2.png
- 3.png
---
Ping.gg makes high quality video collaborations easier than ever. Think "Zoom for streamers and creators". Join a call in 3 clicks, manage audio and video like a pro, and copy-paste your guests straight into OBS

View File

@ -4,8 +4,7 @@
"title": "Ping.gg",
"slug": "ping",
"type": "ping_video",
"imageSrc": "/api/app-store/ping/icon.svg",
"logo": "/api/app-store/ping/icon.svg",
"logo": "icon.svg",
"url": "https://ping.gg",
"variant": "conferencing",
"categories": ["video"],

View File

@ -1,11 +1,11 @@
---
description: Connect APIs, remarkably fast. Stop writing boilerplate code, struggling with authentication and managing infrastructure. Start connecting APIs with code-level control when you need it — and no code when you don't
items:
- /api/app-store/pipedream/1.png
- /api/app-store/pipedream/2.png
- /api/app-store/pipedream/3.png
- /api/app-store/pipedream/4.png
- /api/app-store/pipedream/5.png
- 1.png
- 2.png
- 3.png
- 4.png
- 5.png
---
Connect APIs, remarkably fast. Stop writing boilerplate code, struggling with authentication and managing infrastructure. Start connecting APIs with code-level control when you need it — and no code when you don't

View File

@ -3,8 +3,7 @@
"name": "Pipedream",
"slug": "pipedream",
"type": "pipedream_automation",
"imageSrc": "/api/app-store/pipedream/icon.svg",
"logo": "/api/app-store/pipedream/icon.svg",
"logo": "icon.svg",
"url": "https://pipedream.com/apps/cal-com",
"variant": "automation",
"categories": ["automation"],

View File

@ -1,6 +1,6 @@
---
items:
- /api/app-store/plausible/1.jpg
- 1.jpg
---
Simple, privacy-friendly Google Analytics alternative.

View File

@ -3,8 +3,7 @@
"name": "Plausible",
"slug": "plausible",
"type": "plausible_analytics",
"imageSrc": "/api/app-store/plausible/icon.svg",
"logo": "/api/app-store/plausible/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/plausible",
"variant": "analytics",
"categories": ["analytics"],

View File

@ -3,8 +3,7 @@
"name": "QR Code",
"slug": "qr_code",
"type": "qr_code_other",
"imageSrc": "/api/app-store/qr_code/icon.svg",
"logo": "/api/app-store/qr_code/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/qr_code",
"variant": "other",
"categories": ["other"],

View File

@ -1,8 +1,8 @@
---
items:
- /api/app-store/rainbow/1.jpg
- /api/app-store/rainbow/2.jpg
- /api/app-store/rainbow/3.jpg
- 1.jpg
- 2.jpg
- 3.jpg
---
Token gate bookings based on NFTs, DAO tokens, and ERC-20 tokens. Rainbow supports dozens of trusted Ethereum wallet apps to verify token ownership. Available blockchains are Ethereum mainnet, Arbitrum, Optimism, and Polygon mainnet.

View File

@ -3,8 +3,7 @@
"name": "Rainbow",
"slug": "rainbow",
"type": "rainbow_web3",
"imageSrc": "/api/app-store/rainbow/icon.svg",
"logo": "/api/app-store/rainbow/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/rainbow",
"variant": "web3",
"categories": ["web3"],

View File

@ -1,9 +1,9 @@
---
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
- 1.png
- 2.png
- 3.png
- 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.

View File

@ -3,8 +3,7 @@
"name": "Raycast",
"slug": "raycast",
"type": "raycast_other",
"imageSrc": "/api/app-store/raycast/icon.svg",
"logo": "/api/app-store/raycast/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/raycast",
"variant": "other",
"categories": ["other"],

View File

@ -1,6 +1,6 @@
---
items:
- /api/app-store/riverside/riverside1.png
- riverside1.png
---
Your online recording studio. The easiest way to record podcasts and videos in studio quality from anywhere. All from the browser.

View File

@ -3,8 +3,7 @@
"name": "Riverside",
"slug": "riverside",
"type": "riverside_video",
"imageSrc": "/api/app-store/riverside/icon-dark.svg",
"logo": "/api/app-store/riverside/icon-dark.svg",
"logo": "icon-dark.svg",
"url": "https://cal.com/apps/riverside",
"variant": "conferencing",
"categories": ["video"],

View File

@ -1,8 +1,8 @@
---
items:
- /api/app-store/routing-forms/1.jpg
- /api/app-store/routing-forms/2.jpg
- /api/app-store/routing-forms/3.jpg
- 1.jpg
- 2.jpg
- 3.jpg
---
It would allow a booker to connect with the right person or choose the right event, faster. It would work by taking inputs from the booker and using that data to route to the correct booker/event as configured by Cal user

View File

@ -4,8 +4,7 @@
"title": "Routing Forms",
"slug": "routing-forms",
"type": "routing-forms_other",
"imageSrc": "/api/app-store/routing-forms/icon-dark.svg",
"logo": "/api/app-store/routing-forms/icon-dark.svg",
"logo": "icon-dark.svg",
"url": "https://cal.com/apps/routing-forms",
"variant": "other",
"categories": ["other"],

View File

@ -1,7 +1,7 @@
---
description: Salesforce (Sales Cloud) is a cloud-based application designed to help your salespeople sell smarter and faster by centralizing customer information, logging their interactions with your company, and automating many of the tasks salespeople do every day.
items:
- /api/app-store/salesforce/1.png
- 1.png
---
Salesforce (Sales Cloud) is a cloud-based application designed to help your salespeople sell smarter and faster by centralizing customer information, logging their interactions with your company, and automating many of the tasks salespeople do every day.

View File

@ -3,8 +3,7 @@
"name": "Salesforce",
"slug": "salesforce",
"type": "salesforce_other_calendar",
"imageSrc": "/api/app-store/salesforce/icon.png",
"logo": "/api/app-store/salesforce/icon.png",
"logo": "icon.png",
"url": "https://cal.com/apps/salesforce",
"variant": "other_calendar",
"categories": ["other"],

View File

@ -1,7 +1,7 @@
---
description: SendGrid delivers your transactional and marketing emails through the world's largest cloud-based email delivery platform.
items:
- /api/app-store/sendgrid/1.png
- 1.png
---
SendGrid delivers your transactional and marketing emails through the world's largest cloud-based email delivery platform.

View File

@ -3,8 +3,7 @@
"name": "Sendgrid",
"slug": "sendgrid",
"type": "sendgrid_other_calendar",
"imageSrc": "/api/app-store/sendgrid/logo.png",
"logo": "/api/app-store/sendgrid/logo.png",
"logo": "logo.png",
"url": "https://cal.com/apps/sendgrid",
"variant": "other_calendar",
"categories": ["other"],

View File

@ -1,8 +1,8 @@
---
description: Schedule a chat with your guests or have a Signal Video call.
items:
- /api/app-store/signal/1.jpg
- /api/app-store/signal/2.jpg
- 1.jpg
- 2.jpg
---
Schedule a chat with your guests or have a Signal Video call.

View File

@ -3,8 +3,7 @@
"name": "Signal",
"slug": "signal",
"type": "signal_video",
"imageSrc": "/api/app-store/signal/icon.svg",
"logo": "/api/app-store/signal/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/signal",
"variant": "conferencing",
"categories": ["video"],

View File

@ -1,9 +1,9 @@
---
description: Video meetings made for music. Create your own virtual music classroom, easily.
items:
- /api/app-store/sirius_video/1.jpg
- /api/app-store/sirius_video/2.jpg
- /api/app-store/sirius_video/3.jpg
- 1.jpg
- 2.jpg
- 3.jpg
---
Video meetings made for music. Create your own virtual music classroom, easily.

View File

@ -3,8 +3,7 @@
"name": "Sirius Video",
"slug": "sirius_video",
"type": "sirius_video_video",
"imageSrc": "/api/app-store/sirius_video/icon-dark.svg",
"logo": "/api/app-store/sirius_video/icon-dark.svg",
"logo": "icon-dark.svg",
"url": "https://cal.com/apps/sirius_video",
"variant": "conferencing",
"categories": ["video"],

View File

@ -1,10 +1,10 @@
---
items:
- /api/app-store/stripepayment/stripe1.jpg
- /api/app-store/stripepayment/stripe2.jpg
- /api/app-store/stripepayment/stripe3.jpg
- /api/app-store/stripepayment/stripe4.jpg
- /api/app-store/stripepayment/stripe5.jpg
- stripe1.jpg
- stripe2.jpg
- stripe3.jpg
- stripe4.jpg
- stripe5.jpg
---
Stripe provides payment infrastructure for everyone from startups to Fortune 500 companies. They provide payment processing software as well as application programming interfaces (APIs) for mobile applications as well as e-commerce websites processing payments from (but not limited to) credit cards, debit cards, digital wallets, Google Pay, Apple Pay, Bank Transfers, Alipay and WeChat.

View File

@ -13,8 +13,7 @@ export const metadata = {
slug: "stripe",
category: "payment",
categories: ["payment"],
logo: "/api/app-store/stripepayment/icon.svg",
imageSrc: "/api/app-store/stripepayment/icon.svg",
logo: "icon.svg",
publisher: "Cal.com",
title: "Stripe",
type: "stripe_payment",

View File

@ -4,7 +4,6 @@
"title": "Sylaps",
"slug": "sylapsvideo",
"type": "sylaps_video",
"imageSrc": "icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/sylaps",
"variant": "conferencing",

View File

@ -1,11 +1,11 @@
---
items:
- /api/app-store/tandemvideo/tandem1.jpg
- /api/app-store/tandemvideo/tandem2.jpg
- /api/app-store/tandemvideo/tandem3.jpg
- /api/app-store/tandemvideo/tandem4.jpg
- /api/app-store/tandemvideo/tandem5.jpg
- /api/app-store/tandemvideo/tandem6.jpg
- tandem1.jpg
- tandem2.jpg
- tandem3.jpg
- tandem4.jpg
- tandem5.jpg
- tandem6.jpg
---
Tandem is a new virtual office space that allows teams to effortlessly connect as though they are in a physical office, online. Through co-working rooms, available statuses, live real-time video call, and chat options, you can see whos around, talk and collaborate in one click. It works cross-platform with both desktop and mobile versions.

View File

@ -7,12 +7,11 @@ export const metadata = {
description: _package.description,
type: "tandem_video",
title: "Tandem Video",
imageSrc: "/api/app-store/tandemvideo/icon.svg",
variant: "conferencing",
categories: ["video"],
slug: "tandem",
category: "video",
logo: "/api/app-store/tandemvideo/icon.svg",
logo: "icon.svg",
publisher: "",
url: "",
isGlobal: false,

View File

@ -1,8 +1,8 @@
---
items:
- /api/app-store/telegram/1.jpg
- /api/app-store/telegram/2.jpg
- /api/app-store/telegram/3.jpg
- 1.jpg
- 2.jpg
- 3.jpg
---
Schedule a chat with your guests or have a Telegram Video call.

View File

@ -3,8 +3,7 @@
"name": "Telegram",
"slug": "telegram",
"type": "telegram_video",
"imageSrc": "/api/app-store/telegram/icon.svg",
"logo": "/api/app-store/telegram/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/telegram",
"variant": "conferencing",
"categories": ["video"],

View File

@ -2,8 +2,8 @@
description: Adds a link to copy Typeform Redirect URL to integrate with Routing Forms.
items:
- iframe: { src: https://www.youtube.com/embed/vcV-N2gLPZc }
- /api/app-store/typeform/copy-typeform-redirect-url.png
- /api/app-store/typeform/how-it-looks-in-typeform.png
- copy-typeform-redirect-url.png
- how-it-looks-in-typeform.png
---
<!-- Feel free to edit description or add other frontmatter. Frontmatter would be available in the components here as variables by same name -->

View File

@ -3,7 +3,7 @@
"name": "Typeform",
"slug": "typeform",
"type": "typeform_other",
"logo": "/api/app-store/typeform/icon-dark.svg",
"logo": "icon-dark.svg",
"url": "https://cal.com/apps/typeform",
"variant": "other",
"categories": ["other"],

View File

@ -19,10 +19,7 @@ type LocationOption = {
const ALL_APPS_MAP = Object.keys(appStoreMetadata).reduce((store, key) => {
const metadata = appStoreMetadata[key as keyof typeof appStoreMetadata] as AppMeta;
if (metadata.logo && !metadata.logo.includes("/")) {
const appDirName = `${metadata.isTemplate ? "templates" : ""}/${metadata.slug}`;
metadata.logo = `/api/app-store/${appDirName}/${metadata.logo}`;
}
store[key] = metadata;
// eslint-disable-next-line @typescript-eslint/ban-ts-comment

View File

@ -1,10 +1,10 @@
---
description: The world's fastest calendar, beautifully designed for a remote world
items:
- /api/app-store/vimcal/1.gif
- /api/app-store/vimcal/2.gif
- /api/app-store/vimcal/3.gif
- /api/app-store/vimcal/4.gif
- 1.gif
- 2.gif
- 3.gif
- 4.gif
---
The world's fastest calendar, beautifully designed for a remote world

View File

@ -3,8 +3,7 @@
"name": "Vimcal",
"slug": "vimcal",
"type": "vimcal_other",
"imageSrc": "/api/app-store/vimcal/icon.svg",
"logo": "/api/app-store/vimcal/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/vimcal",
"variant": "other",
"categories": ["calendar"],

View File

@ -8,9 +8,7 @@ export const metadata = {
installed: true,
category: "other",
categories: ["other"],
// If using static next public folder, can then be referenced from the base URL (/).
imageSrc: "/api/app-store/vital/icon.svg",
logo: "/api/app-store/vital/icon.svg",
logo: "icon.svg",
label: "Vital",
publisher: "Vital",
slug: "vital-automation",

View File

@ -1,7 +1,7 @@
---
items:
- /api/app-store/weather_in_your_calendar/1.jpeg
- /api/app-store/weather_in_your_calendar/2.jpeg
- 1.jpeg
- 2.jpeg
---
You can now get the weather forecast directly into your calendar. This local weather calendar uses emojis ⛅️ 🌧️ ☀️ 🌨️ to display a 16 days forecast from OpenWeatherMap. Enter your city, adjust according to your preferences and subscribe to your calendar.

View File

@ -3,8 +3,7 @@
"name": "Weather in your Calendar",
"slug": "weather_in_your_calendar",
"type": "weather_in_your_calendar_other",
"imageSrc": "/api/app-store/weather_in_your_calendar/icon.gif",
"logo": "/api/app-store/weather_in_your_calendar/icon.gif",
"logo": "icon.gif",
"url": "https://weather-in-calendar.com",
"variant": "other",
"categories": ["other"],

View File

@ -1,8 +1,8 @@
---
items:
- /api/app-store/whatsapp/1.jpg
- /api/app-store/whatsapp/2.jpg
- /api/app-store/whatsapp/3.jpg
- 1.jpg
- 2.jpg
- 3.jpg
---
Schedule a chat with your guests or have a WhatsApp Video call.

View File

@ -3,8 +3,7 @@
"name": "WhatsApp",
"slug": "whatsapp",
"type": "whatsapp_video",
"imageSrc": "/api/app-store/whatsapp/icon.svg",
"logo": "/api/app-store/whatsapp/icon.svg",
"logo": "icon.svg",
"url": "https://cal.com/apps/whatsapp",
"variant": "conferencing",
"categories": ["video"],

View File

@ -1,7 +1,7 @@
---
items:
- /api/app-store/whereby/whereby1.webp
- /api/app-store/whereby/whereby2.webp
- whereby1.webp
- whereby2.webp
---
Whereby's the easiest way to connect over video with no app or software download required. Connect with anyone, anywhere with zero hassle.

View File

@ -4,8 +4,7 @@
"title": "Whereby",
"slug": "whereby",
"type": "whereby_video",
"imageSrc": "/api/app-store/whereby/icon-dark.svg",
"logo": "/api/app-store/whereby/icon-dark.svg",
"logo": "icon-dark.svg",
"url": "https://cal.com/apps/whereby",
"variant": "conferencing",
"categories": ["video"],

View File

@ -1,6 +1,6 @@
---
items:
- /api/app-store/wipemycalother/1.jpg
- 1.jpg
---
<iframe class="w-full aspect-video" width="560" height="315" src="https://www.youtube.com/embed/lPO6SAjkKrQ?start=235" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

View File

@ -9,8 +9,7 @@ export const metadata = {
category: "other",
categories: ["other"],
// If using static next public folder, can then be referenced from the base URL (/).
imageSrc: "/api/app-store/wipemycalother/icon-dark.svg",
logo: "/api/app-store/wipemycalother/icon-dark.svg",
logo: "icon-dark.svg",
publisher: "Cal.com",
slug: "wipe-my-cal",
title: "Wipe my cal",

View File

@ -3,8 +3,7 @@
"name": "Wordpress",
"slug": "wordpress",
"type": "wordpress_other",
"imageSrc": "/api/app-store/wordpress/icon-dark.svg",
"logo": "/api/app-store/wordpress/icon-dark.svg",
"logo": "icon-dark.svg",
"url": "https://github.com/calcom/wp-plugin",
"variant": "other",
"categories": ["other"],

View File

@ -1,7 +1,7 @@
---
items:
- /api/app-store/zapier/1.jpg
- /api/app-store/zapier/2.jpg
- 1.jpg
- 2.jpg
---
Workflow automation for everyone. Use the Cal.com Zapier app to automate your workflows when a booking is created, rescheduled, cancelled or when a meeting ended.<br /><br />**After Installation:** Have you lost your API key? You can always generate a new key on the <a href="/apps/zapier/setup">**<ins>Zapier Setup Page</ins>**</a>

View File

@ -8,8 +8,7 @@ export const metadata = {
installed: true,
category: "automation",
categories: ["automation"],
imageSrc: "/api/app-store/zapier/icon.svg",
logo: "/api/app-store/zapier/icon.svg",
logo: "icon.svg",
publisher: "Cal.com",
slug: "zapier",
title: "Zapier",

View File

@ -3,7 +3,6 @@
"name": "ZohoCRM",
"slug": "zohocrm",
"type": "zohocrm_other_calendar",
"imageSrc": "icon.png",
"logo": "icon.png",
"url": "https://cal.com/apps/zohocrm",
"variant": "other",

View File

@ -1,12 +1,12 @@
---
items:
- /api/app-store/zoomvideo/zoom1.jpg
- /api/app-store/zoomvideo/zoom2.png
- /api/app-store/zoomvideo/zoom3.png
- /api/app-store/zoomvideo/zoom4.png
- /api/app-store/zoomvideo/zoom5.jpg
- /api/app-store/zoomvideo/zoom6.png
- /api/app-store/zoomvideo/zoom7.png
- zoom1.jpg
- zoom2.png
- zoom3.png
- zoom4.png
- zoom5.jpg
- zoom6.png
- zoom7.png
---
Zoom is a secure and reliable video platform that supports all of your online communication needs. It can provide everything from one on one meetings, chat, phone, webinars, and large-scale online events. Available with both desktop, web, and mobile versions.

Some files were not shown because too many files have changed in this diff Show More