LogoLogo
Log in
  • Introduction
    • Welcome
    • Quick Start
      • Sign up for a Cal.com account
      • Complete your onboarding
      • Self-hosting
        • Installation
          • Ultimate
          • Platform
            • Get access to the API
            • API submodule
        • Install apps
          • Google
          • Microsoft
          • Zoom
          • Daily
          • HubSpot
          • Stripe
          • Sendgrid
          • Twilio
        • E2E testing
        • Upgrading
        • Docker
        • Vercel
        • Database migrations
        • SSO setup
  • Core Features
    • Event types
      • Secret events
      • Location of the event
      • Availability schedule
      • Multiple durations
      • Event buffer
      • Custom time-slot intervals
      • Custom event name in the booking
      • Minimum notice
      • Booking frequency
      • Limit future bookings
      • Add events to calendar
      • Additional inputs
      • Requires confirmation
      • Hide notes in calendar
      • Require additional notes
      • Booking success URL
      • Single use private links
      • Offer seats
      • Recurring events
      • Disable guests
    • Bookings
      • Paid bookings
    • Availability
      • Multiple time slots per day
      • Date overrides
      • Multiple schedules
    • App Store
      • Apps
        • Calendar apps
        • Video apps
        • Payment apps
        • Workflow apps
        • Analytics apps
        • Web3 apps
        • Miscellaneous apps
    • Webhooks
    • Embed
      • Install with JavaScript
      • Install with React
      • Set up your embed
    • New Docs Embed
      • Adding embed to your webpage
      • Embed Snippet Generator
      • Embed events
      • Embed instructions
      • Adding slots to your email
    • Dynamic group links
    • Customization
    • i18n Internationalization
  • Enterprise Features
    • Teams
      • Team workflows
      • Round-robin scheduling
      • Collective events
      • Advanced routing forms
    • Workflows
    • API
      • Quick start
        • Testing API locally
        • Hosted API through Cal.com
      • Authentication
      • Errors
      • Rate limits
      • Versioning
      • Types
      • API reference
        • Attendees
        • Availabilities
        • Booking References
        • Bookings
        • Custom inputs
        • Destination calendars
        • Event types
        • Memberships
        • Payments
        • Schedules
        • Selected calendars
        • Teams
        • Users
        • Webhooks
    • Admin
  • Knowledgebase
    • Glossary
  • How To Guides
    • Acquire and manage a license key
    • Adding your first app
    • Creating a secret event type
    • Creating your first event type
    • How to add a location to your event type
    • How to add custom CSS
    • How to build an app
      • Build a greeter app
    • How to connect apple calendar with calcom
    • How to troubleshoot symbolic link issues on Windows
    • How to set buffer time
    • How to set up requires confirmation
    • How to set time-slot intervals
    • How to set up an event type to receive payments
    • How to test API in a local instance
    • How to use open-source scheduling infrastructure with HubSpot
    • How to white label the self hosted instance
    • Setting up your availability
      • Adding date override
    • Quick actions using command bar
Powered by GitBook
LogoLogo

Solutions

  • Individual
  • Teams
  • Ultimate
  • Platform

Follow us

  • Twitter
  • LinkedIn

Copyright 2023 Cal.com, Inc. All rights reserved.

On this page
  • Steps in creating an app
  • Structure
  • Other Commands
  • Important Points
  • Publishing Your App to the Cal.com App Store

Was this helpful?

  1. How To Guides

How to build an app

Since Cal.com is open source we encourage developers to create new apps for others to use. This guide is to help you get started.

You can create an app by simply running the following command. It creates a new directory under packages/app-store/

yarn app-store create

You just need to provide a few inputs and then you will have your app created within a few seconds. See, how you can build a very simple app that greets your users.

Steps in creating an app

  • Create the app using the create command

  • The app can be installed now. But at this moment it isn't doing anything. It is just installed and ready to do what you want it to do.

  • There is pretty much no restriction on what an App can do. Some of the examples are:

    • Hooking into existing functionalities to enhance them - In all these cases you need to first check if the app is installed or not. There is useApp(appSlug) react hook to do that. It gives you the app details if the app is installed.

    • Apps that need to connect with third parties like Google Calendar, Apple Calendar, Google Meet.

    • A super powerful app that has its own data and pages - Routing Forms App is a great example of this.

    • There are so many powerful apps already in the App Store for time. You can get an idea of what the apps can do from it.

Structure

All apps can be found under packages/app-store. In this folder is _baseApp which shows the general structure of an app.

├──_example
|   ├──config.json -> Autogenerated by cli. You are free to edit it.
|   ├──api
|   |   ├──add.ts -> Autogenerated by cli. You would want to edit it if your app needs to connect with a third party
|
|   ├──components
|
|   ├──static -> Add all static assets here
|   |   ├──icon.svg -> This is used as the logo for your App.

|   ├──index.ts
|   ├──package.json
|   ├──.env.example -> Specify the environmental variables (ex. auth token, API secrets) that your app will need if it's applicable
|   ├──README.mdx -> Customize your app description. You can add an image slider as well.

Other Commands

Deleting an app:

yarn app-store delete --slug APP_NAME

Editing an app:

yarn app-store edit --slug APP_NAME

Important Points

  • Make sure to have yarn app-store:watch command running when developing an app so that autogenerated files are always up to date.

  • If app-store cli fails at this step, try to run this command manually first. Solve that problem and then re-run cli. The command can fail because there are Prisma migrations that can't be applied automatically.

  • When you edit an app following things aren't updated.

    • README.mdx - It would still have the old description. Feel free to edit it manually.

Publishing Your App to the Cal.com App Store

Once your app is working in your environment, you can publish it to Cal.com App Store by opening a PR here.

If you need any help feel free to join us on Slack

PreviousHow to add custom CSSNextBuild a greeter app

Last updated 2 years ago

Was this helpful?

A sample failure in create command