diff --git a/.env.example b/.env.example index 14a7a32f42..ebe8537385 100644 --- a/.env.example +++ b/.env.example @@ -82,6 +82,7 @@ SEND_FEEDBACK_EMAIL= # Used for email reminders in workflows and internal sync services SENDGRID_API_KEY= SENDGRID_EMAIL= +NEXT_PUBLIC_SENDGRID_SENDER_NAME= # Twilio # Used to send SMS reminders in workflows @@ -89,6 +90,7 @@ TWILIO_SID= TWILIO_TOKEN= TWILIO_MESSAGING_SID= TWILIO_PHONE_NUMBER= +# For NEXT_PUBLIC_SENDER_ID only letters, numbers and spaces are allowed (max. 11 characters) NEXT_PUBLIC_SENDER_ID= TWILIO_VERIFY_SID= diff --git a/.gitignore b/.gitignore index be21d9cdd8..87edce7909 100644 --- a/.gitignore +++ b/.gitignore @@ -80,3 +80,10 @@ apps/storybook/build-storybook.log # Snaplet .snaplet/snapshots .snaplet/structure.d.ts + +# Submodules +.gitmodules +apps/api +apps/website +apps/console +apps/auth diff --git a/.gitmodules b/.gitmodules index dcf17ed005..04640456ce 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,12 +1,12 @@ -[submodule "apps/console"] - path = apps/console - url = https://github.com/calcom/console.git - branch = main [submodule "apps/api"] path = apps/api - url = https://github.com/calcom/api.git + url = git@github.com:calcom/api.git branch = main [submodule "apps/website"] path = apps/website - url = https://github.com/calcom/website.git + url = git@github.com:calcom/website.git + branch = main +[submodule "apps/console"] + path = apps/console + url = git@github.com:calcom/console.git branch = main diff --git a/README.md b/README.md index 8e9743c44e..91c08baffc 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Product Hunt Uptime Github Stars - Hacker News + Hacker News License Commits-per-month Pricing @@ -57,9 +57,29 @@ Calendly and other scheduling tools are awesome. It made our lives massively eas That's where Cal.com comes in. Self-hosted or hosted by us. White-label by design. API-driven and ready to be deployed on your own domain. Full control of your events and data. -## Product of the Month: April 2021 +## Recognition -#### Support us on [Product Hunt](https://www.producthunt.com/posts/calendso?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-calendso) +#### Hacker News + + + Featured on Hacker News + + + + Featured on Hacker News + + + + +#### [Product Hunt](https://www.producthunt.com/posts/calendso?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-calendso) Cal.com - The open source Calendly alternative | Product Hunt Cal.com - The open source Calendly alternative | Product Hunt Cal.com - The open source Calendly alternative | Product Hunt @@ -305,6 +325,12 @@ Currently Vercel Pro Plan is required to be able to Deploy this application with See the [roadmap project](https://cal.com/roadmap) for a list of proposed features (and known issues). You can change the view to see planned tagged releases. + + +## Repo Activity + + + ## Contributing @@ -405,17 +431,6 @@ following 9. Click the "Save" button at the bottom footer. 10. You're good to go. Now you can see any booking in Cal.com created as a meeting in HubSpot for your contacts. -### Obtaining Vital API Keys - -1. Open [Vital](https://tryvital.io/) and click Get API Keys. -1. Create a team with the team name you desire -1. Head to the configuration section on the sidebar of the dashboard -1. Click on API keys and you'll find your sandbox `api_key`. -1. Copy your `api_key` to `VITAL_API_KEY` in the .env.appStore file. -1. Open [Vital Webhooks](https://app.tryvital.io/team/{team_id}/webhooks) and add `/api/integrations/vital/webhook` as webhook for connected applications. -1. Select all events for the webhook you interested, e.g. `sleep_created` -1. Copy the webhook secret (`sec...`) to `VITAL_WEBHOOK_SECRET` in the .env.appStore file. - ## Workflows ### Setting up SendGrid for Email reminders @@ -425,6 +440,7 @@ following 3. Copy API key to your .env file into the SENDGRID_API_KEY field 4. Go to Settings -> Sender Authentication and verify a single sender 5. Copy the verified E-Mail to your .env file into the SENDGRID_EMAIL field +6. Add your custom sender name to the .env file into the NEXT_PUBLIC_SENDGRID_SENDER_NAME field (fallback is Cal.com) ### Setting up Twilio for SMS reminders diff --git a/apps/storybook/.gitignore b/apps/storybook/.gitignore index a547bf36d8..8c444bd2f4 100644 --- a/apps/storybook/.gitignore +++ b/apps/storybook/.gitignore @@ -8,6 +8,7 @@ pnpm-debug.log* lerna-debug.log* node_modules +storybook-static dist dist-ssr *.local @@ -21,4 +22,4 @@ dist-ssr *.ntvs* *.njsproj *.sln -*.sw? +*.sw? \ No newline at end of file diff --git a/apps/storybook/.storybook/main.js b/apps/storybook/.storybook/main.js index caeb2ac6ab..ae653ae06e 100644 --- a/apps/storybook/.storybook/main.js +++ b/apps/storybook/.storybook/main.js @@ -12,13 +12,15 @@ module.exports = { "@storybook/addon-links", "@storybook/addon-essentials", "@storybook/addon-interactions", + "storybook-addon-rtl-direction", "storybook-react-i18next", - { + "storybook-addon-next", + /*{ name: "storybook-addon-next", options: { nextConfigPath: path.resolve(__dirname, "../../web/next.config.js"), }, - }, + },*/ ], framework: "@storybook/react", core: { @@ -69,5 +71,5 @@ module.exports = { return config; }, - typescript: { reactDocgen: 'react-docgen' } + typescript: { reactDocgen: "react-docgen" }, }; diff --git a/apps/storybook/next.config.js b/apps/storybook/next.config.js new file mode 100644 index 0000000000..605a550c9b --- /dev/null +++ b/apps/storybook/next.config.js @@ -0,0 +1,45 @@ +const withBundleAnalyzer = require("@next/bundle-analyzer"); + +const withTM = require("next-transpile-modules")([ + "@calcom/app-store", + "@calcom/dayjs", + "@calcom/emails", + "@calcom/trpc", + "@calcom/embed-core", + "@calcom/embed-react", + "@calcom/features", + "@calcom/lib", + "@calcom/prisma", + "@calcom/ui", +]); +const glob = require("glob"); + +const plugins = []; +plugins.push(withTM, withBundleAnalyzer({ enabled: process.env.ANALYZE === "true" })); + +/** @type {import("next").NextConfig} */ +const nextConfig = { + reactStrictMode: true, + images: { + domains: ["www.datocms-assets.com"], + formats: ["image/avif", "image/webp"], + }, + typescript: { + ignoreBuildErrors: true, + }, + experimental: { images: { allowFutureImage: true } }, + eslint: { + ignoreDuringBuilds: true, + }, + webpack: (config, { isServer }) => { + if (!isServer) { + // don't resolve 'fs' module on the client to prevent this error on build --> Error: Can't resolve 'fs' + config.resolve.fallback = { + fs: false, + }; + } + return config; + }, +}; + +module.exports = () => plugins.reduce((acc, next) => next(acc), nextConfig); diff --git a/apps/storybook/package.json b/apps/storybook/package.json index 1b50f91c9a..d20d281bd9 100644 --- a/apps/storybook/package.json +++ b/apps/storybook/package.json @@ -22,7 +22,8 @@ "@radix-ui/react-tooltip": "^1.0.0", "next": "^13.1.1", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "storybook-addon-rtl-direction": "^0.0.19" }, "devDependencies": { "@babel/core": "^7.19.6", diff --git a/apps/web/components/AddToHomescreen.tsx b/apps/web/components/AddToHomescreen.tsx index fe3296c86a..bae44edf0a 100644 --- a/apps/web/components/AddToHomescreen.tsx +++ b/apps/web/components/AddToHomescreen.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; import { useLocale } from "@calcom/lib/hooks/useLocale"; -import { Icon } from "@calcom/ui"; +import { FiX } from "@calcom/ui/components/icon"; export default function AddToHomescreen() { const { t } = useLocale(); @@ -40,7 +40,7 @@ export default function AddToHomescreen() { type="button" className="-mr-1 flex rounded-md p-2 hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-white"> {t("dismiss")} -