diff --git a/packages/app-store/apps.metadata.generated.ts b/packages/app-store/apps.metadata.generated.ts index 3669e538a1..3e036aa4f3 100644 --- a/packages/app-store/apps.metadata.generated.ts +++ b/packages/app-store/apps.metadata.generated.ts @@ -42,6 +42,7 @@ import salesforce_config_json from "./salesforce/config.json"; import sendgrid_config_json from "./sendgrid/config.json"; import signal_config_json from "./signal/config.json"; import sirius_video_config_json from "./sirius_video/config.json"; +import skiff_config_json from "./skiff/config.json"; import { metadata as stripepayment__metadata_ts } from "./stripepayment/_metadata"; import sylapsvideo_config_json from "./sylapsvideo/config.json"; import { metadata as tandemvideo__metadata_ts } from "./tandemvideo/_metadata"; @@ -107,6 +108,7 @@ export const appStoreMetadata = { sendgrid: sendgrid_config_json, signal: signal_config_json, sirius_video: sirius_video_config_json, + skiff: skiff_config_json, stripepayment: stripepayment__metadata_ts, sylapsvideo: sylapsvideo_config_json, tandemvideo: tandemvideo__metadata_ts, diff --git a/packages/app-store/apps.server.generated.ts b/packages/app-store/apps.server.generated.ts index eb07707e87..9d2c8a32b0 100644 --- a/packages/app-store/apps.server.generated.ts +++ b/packages/app-store/apps.server.generated.ts @@ -42,6 +42,7 @@ export const apiHandlers = { sendgrid: import("./sendgrid/api"), signal: import("./signal/api"), sirius_video: import("./sirius_video/api"), + skiff: import("./skiff/api"), stripepayment: import("./stripepayment/api"), sylapsvideo: import("./sylapsvideo/api"), tandemvideo: import("./tandemvideo/api"), diff --git a/packages/app-store/skiff/DESCRIPTION.md b/packages/app-store/skiff/DESCRIPTION.md new file mode 100644 index 0000000000..519a9b409a --- /dev/null +++ b/packages/app-store/skiff/DESCRIPTION.md @@ -0,0 +1,20 @@ +--- +items: + - 1.png + - 2.png + - 3.png + - 4.png + - 5.png +--- + +{DESCRIPTION} + +Skiff is a privacy-first, end-to-end encrypted workspace with Mail, Pages, Drive, and Calendar applications. Skiff Calendar integrates with Cal.com, enabling you to schedule appointments, organize events, and use your preferred video conferencing product. + +## Features +- **Full workspace** — beyond email and calendar, Skiff enables writing and collaborating on end-to-end encrypted notes or wikis. You can also upload, preview, and share files. +- **Native applications** — Skiff has native macOS, Windows, iOS, and Android applications, ensuring you can stay on top of your schedule from any device. +- **Multiple accounts** — all Skiff products support multiple accounts, or sharing your entire team to collaborate inside one workspace. +- **Custom domains** - you can use your own domain name for free on Skiff to send and receive mail or calendar invites. +- **End-to-end encryption** — all data is encrypted on your device so that only you can access it. Skiff Mail is also open-source to ensure the highest level of transparency. +- **Complete privacy** - no trackers or ads, and your data is never sold. diff --git a/packages/app-store/skiff/api/add.ts b/packages/app-store/skiff/api/add.ts new file mode 100644 index 0000000000..a4cf4b3592 --- /dev/null +++ b/packages/app-store/skiff/api/add.ts @@ -0,0 +1,20 @@ +import { createDefaultInstallation } from "@calcom/app-store/_utils/installation"; +import type { AppDeclarativeHandler } from "@calcom/types/AppHandler"; + +import appConfig from "../config.json"; + +const handler: AppDeclarativeHandler = { + appType: appConfig.type, + variant: appConfig.variant, + slug: appConfig.slug, + supportsMultipleInstalls: false, + handlerType: "add", + redirect: { + newTab: true, + url: "https://skiff.com/blog/skiff-cal-com-launch", + }, + createCredential: ({ appType, user, slug, teamId }) => + createDefaultInstallation({ appType, userId: user.id, slug, key: {}, teamId }), +}; + +export default handler; diff --git a/packages/app-store/skiff/api/index.ts b/packages/app-store/skiff/api/index.ts new file mode 100644 index 0000000000..4c0d2ead01 --- /dev/null +++ b/packages/app-store/skiff/api/index.ts @@ -0,0 +1 @@ +export { default as add } from "./add"; diff --git a/packages/app-store/skiff/config.json b/packages/app-store/skiff/config.json new file mode 100644 index 0000000000..be427cd353 --- /dev/null +++ b/packages/app-store/skiff/config.json @@ -0,0 +1,19 @@ +{ + "/*": "Don't modify slug - If required, do it using cli edit command", + "name": "Skiff", + "slug": "skiff", + "type": "skiff_calendar", + "logo": "icon.svg", + "url": "https://skiff.com/blog/skiff-cal-com-launch", + "variant": "calendar", + "categories": [ + "calendar" + ], + "publisher": "Skiff World, Inc.", + "email": "hello@skiff.org", + "description": "End-to-end encrypted, private calendar, email, notes, and drive.", + "isTemplate": false, + "__createdUsingCli": true, + "__template": "link-as-an-app", + "dirName": "skiff" +} \ No newline at end of file diff --git a/packages/app-store/skiff/index.ts b/packages/app-store/skiff/index.ts new file mode 100644 index 0000000000..d7f3602204 --- /dev/null +++ b/packages/app-store/skiff/index.ts @@ -0,0 +1 @@ +export * as api from "./api"; diff --git a/packages/app-store/skiff/package.json b/packages/app-store/skiff/package.json new file mode 100644 index 0000000000..977586a282 --- /dev/null +++ b/packages/app-store/skiff/package.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://json.schemastore.org/package.json", + "private": true, + "name": "@calcom/skiff", + "version": "0.0.0", + "main": "./index.ts", + "dependencies": { + "@calcom/lib": "*" + }, + "devDependencies": { + "@calcom/types": "*" + }, + "description": "End-to-end encrypted, private calendar, email, notes, and drive." +} diff --git a/packages/app-store/skiff/static/1.png b/packages/app-store/skiff/static/1.png new file mode 100644 index 0000000000..45351a528f Binary files /dev/null and b/packages/app-store/skiff/static/1.png differ diff --git a/packages/app-store/skiff/static/2.png b/packages/app-store/skiff/static/2.png new file mode 100644 index 0000000000..a8cf90b5ad Binary files /dev/null and b/packages/app-store/skiff/static/2.png differ diff --git a/packages/app-store/skiff/static/3.png b/packages/app-store/skiff/static/3.png new file mode 100644 index 0000000000..0f702ffb74 Binary files /dev/null and b/packages/app-store/skiff/static/3.png differ diff --git a/packages/app-store/skiff/static/4.png b/packages/app-store/skiff/static/4.png new file mode 100644 index 0000000000..83cf413e93 Binary files /dev/null and b/packages/app-store/skiff/static/4.png differ diff --git a/packages/app-store/skiff/static/5.png b/packages/app-store/skiff/static/5.png new file mode 100644 index 0000000000..c70690e63a Binary files /dev/null and b/packages/app-store/skiff/static/5.png differ diff --git a/packages/app-store/skiff/static/icon.svg b/packages/app-store/skiff/static/icon.svg new file mode 100644 index 0000000000..eac0ab4445 --- /dev/null +++ b/packages/app-store/skiff/static/icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + +