cal.pub0.org/packages/app-store/vital
Joe Au-Yeung 7b4add5e88 Create vital app 2022-03-10 10:20:38 -05:00
..
api Create vital app 2022-03-10 10:20:38 -05:00
lib Create vital app 2022-03-10 10:20:38 -05:00
static Create vital app 2022-03-10 10:20:38 -05:00
README.DRAFT.md Create vital app 2022-03-10 10:20:38 -05:00
index.ts Create vital app 2022-03-10 10:20:38 -05:00
package.json Create vital app 2022-03-10 10:20:38 -05:00

README.DRAFT.md

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.

Structure

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

_example
| index.ts
| package.json
| .env.example
|
|---api
| | example.ts
| | index.ts
|
|---lib
| | adaptor.ts
| | index.ts
|
|---static
| | icon.svg

Getting Started

In the package.json name your package appropriately and list the dependencies needed for the package.

Next in the .env.example specify the environmental variables (ex. auth token, API secrets) that your app will need. In a comment add a link to instructions on how to obtain the credentials. Create a .env with your the filled in environmental variables.

In index.js fill out the meta data that will be rendered on the app page. Under packages/app-store/index.ts, import your app and add it under appStore. Your app should now appear in the app store.

Under the /api folder, this is where any API calls that are associated with your app will be handled. Since cal.com uses Next.js we use dynamic API routes. In this example if we want to hit /api/example.ts the route would be {BASE_URL}/api/integrations/_example/example. Export your endpoints in an index.ts file under /api folder and import them in your main index.ts file.

The /lib folder is where the functions of your app live. For example, when creating a booking with a MS Teams link the function to make the call to grab the link lives in the /lib folder. Export your endpoints in an index.ts file under /lib folder and import them in your main index.ts file.

The /static folder is where your assets live.

If you need any help feel free to join us on Slack: https://cal.com/slack