* docs: improve English naturalness in API v2 documentation - Fix awkward API summary 'Find out when is an event type ready to be booked' to 'Get available time slots for an event type' - Correct 'setup' vs 'set up' usage throughout documentation - Fix OAuth capitalization consistency - Improve 'api' to 'API' capitalization in v2 docs - Enhance readability while preserving technical accuracy Fixes unnatural English phrasing in titles, headers, descriptions, and summaries across API v2 documentation files. Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * docs: add missing articles 'the' in API v2 documentation - Fix 'How to Set Up API' to 'How to Set Up the API' in titles - Add 'the' before 'API' in descriptions and summaries - Fix grammar error 'all you need to is' to 'all you need to do is' - Improve naturalness while maintaining technical accuracy Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * docs: fix unnatural English in API v2 @ApiOperation summaries - Fix grammatically incorrect 'conferencing apps oauths callback' to 'Conferencing app OAuth callback' - Replace 'ooo' with 'out-of-office' in user-facing summaries for clarity - Ensure consistent sentence case capitalization (only first letter capitalized) - Remove trailing periods from summaries for consistency - Fix awkward phrasing like 'Get by attribute id all of...' to more natural English - Revert 'Introduction to the API v2' back to 'Introduction to API v2' - Improve naturalness while maintaining technical accuracy Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * Update apps/api/v2/src/modules/slots/slots-2024-09-04/controllers/slots.controller.ts * Update docs/api-reference/v2/openapi.json * docs: fix setup/set up usage - use 'backend setup' (noun) not 'backend set up' (verb) Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * docs: fix setup/set up verb usage - use 'set up' (verb) not 'setup' (verb) - Fix 'You have to setup' → 'You have to set up' in quickstart.mdx - Fix 'Setup environment variables' → 'Set up environment variables' - Fix 'Setup root of your app' → 'Set up root of your app' - Fix 'prompted to setup' → 'prompted to set up' in setup.mdx Co-Authored-By: keith@cal.com <keithwillcode@gmail.com> * Ran v2 locally to regen the doc json files --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
A progressive Node.js framework for building efficient and scalable server-side applications.
Description
Cal.com is using the Nest framework TypeScript starter repository.
Installation
$ yarn install
Prisma setup
$ yarn prisma generate
Env setup
Copy .env.example to .env and fill values.
Add license Key to deployments table in DB
id, logo theme licenseKey agreedLicenseAt 1, null, null, 'c4234812-12ab-42s6-a1e3-55bedd4a5bb7', '2023-05-15 21:39:47.611'
your CALCOM_LICENSE_KEY env var need to contain the same value
.env CALCOM_LICENSE_KEY=c4234812-12ab-42s6-a1e3-55bedd4a5bb
Running the app
Development
$ yarn run start
OR if you don't want to use docker, you can run following command.
$ yarn dev:no-docker
Additionally you can run following command(in different terminal) to ensure that any change in any of the dependencies is rebuilt and detected. It watches platform-libraries, platform-constants, platform-enums, platform-utils, platform-types.
$ yarn run dev:build:watch
If you are making changes in packages/platform/libraries, you should run the following command too that would connect your local packages/platform/libraries to the api/v2
$ yarn local
watch mode
$ yarn run start:dev
production mode
$ yarn run start:prod
## Test
```bash
# unit tests
$ yarn run test
# e2e tests
$ yarn run test:e2e
# e2e tests in watch mode
$ yarn test:e2e:watch
# run specific e2e test file in watch mode
$ yarn test:e2e:watch --testPathPattern=filePath
# test coverage
$ yarn run test:cov
Conventions
Guards
- In case a guard would return "false" for "canActivate" instead throw ForbiddenException with an error message containing guard name and the error.
- In case a guard would return "false" for "canActivate" DO NOT cache the result in redis, because we don't want that someone is forbidden, updates whatever was the problem, and then has to wait for cache to expire. We only cache in redis guard results where "canAccess" is "true".
- If you use ApiAuthGuard but want that only specific auth method is allowed, for example, api key, then you also need to add
@ApiAuthGuardOnlyAllow(["API_KEY"])under the@UseGuards(ApiAuthGuard). Shortly, useApiAuthGuardOnlyAllowto specify which auth methods are allowed byApiAuthGuard. IfApiAuthGuardOnlyAllowis not used or nothing is passed to it or empty array it means that all auth methods are allowed.
Support
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.
Stay in touch
- Author - Kamil Myśliwiec
- Website - https://nestjs.com
- Twitter - @nestframework
License
Nest is MIT licensed.