calcom/cal.diy

Scheduling infrastructure for absolutely everyone.

GitHub에서 열기 ↗ next-authnextjsopen-sourcepostgresqlprismat3-stacktailwindcsstrpcturborepotypescriptzod
46,266
GitHub 스타
14,413
포크
TypeScript
언어
MIT
라이선스
2026.07.09
최근 푸시
2026.04.30
별표한 날

AI 분석

설치 난이도: 어려움
큐레이터 노트
개인 프로젝트나 소규모 팀이 자체 호스팅으로 일정 관리 시스템을 구축하려는 경우 적합합니다. 특히 Cal.com의 엔터프라이즈 기능이 필요 없고 완전한 오픈 소스 솔루션을 원하는 개발자에게 좋은 선택입니다.

강점

  • 완전한 MIT 라이선스로 상업적 제약 없이 자유롭게 사용 및 수정 가능
  • Cal.com의 엔터프라이즈 기능을 제거하여 가볍고 단순한 구조
  • 커뮤니티 주도로 개발되어 기여가 활발하고 투명함

약점

  • 공식 호스팅 버전이 없어 자체 호스팅에 대한 높은 기술적 부담
  • 엔터프라이즈 기능(Teams, Organizations, SSO 등)이 완전히 제거되어 대규모 조직에는 부적합
  • README가 일부 잘려 있어 전체 문서를 확인하기 어려움

주의사항

  • 비프로덕션 용도로만 권장되며, 프로덕션 사용 시 충분한 테스트와 보안 검토 필요
  • 자체 호스팅에는 서버 관리, 데이터베이스 관리, 보안 설정에 대한 고급 지식이 필요
  • Windows 사용자는 심볼릭 링크 관련 추가 설정이 필요할 수 있음

시작 가이드

  • README의 전체 내용을 확인하고 설치 가이드를 꼼꼼히 읽어보세요.
  • 로컬 개발 환경에 Docker와 PostgreSQL을 준비한 후 yarn dx로 빠르게 테스트해보세요.
  • 프로덕션 사용을 고려한다면 Cal.com의 공식 호스팅 또는 엔터프라이즈 옵션을 검토하세요.

README 한국어 번역

이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.

[!WARNING]

사용에 따른 책임은 본인에게 있습니다. Cal.diy는 Cal.com의 오픈 소스 커뮤니티 에디션으로, 자체 호스팅을 원하는 사용자를 위한 것입니다. 개인적이고 비프로덕션 용도로만 사용하는 것을 엄격히 권장합니다. 모든 설치 및 구성 단계를 신중히 검토하세요. 자체 호스팅에는 서버 관리, 데이터베이스 관리, 민감한 데이터 보안에 대한 고급 지식이 필요합니다. 이러한 책임을 감당할 수 있는 경우에만 진행하세요.

[!TIP]

상업용 및 엔터프라이즈급 스케줄링 인프라가 필요하다면 Cal.diy가 아닌 Cal.com을 사용하세요. 당사가 호스팅하거나 온프레미스 엔터프라이즈 액세스 초대를 받으려면 <a href="https://cal.com/sales">https://cal.com/sales</a>를 방문하세요.

<!-- 프로젝트 로고 --> <p align="center"> <a href="https://github.com/calcom/cal.diy"> <img src="https://user-images.githubusercontent.com/8019099/210054112-5955e812-a76e-4160-9ddd-58f2c72f1cce.png" alt="로고"> </a>

<h3 align="center">Cal.diy</h3>

<p align="center"> 커뮤니티 주도의 오픈 소스 스케줄링 플랫폼. <br /> <a href="https://github.com/calcom/cal.diy"><strong>GitHub</strong></a> <br /> <a href="https://github.com/calcom/cal.diy/issues">이슈</a> &middot; <a href="./CONTRIBUTING.md">기여하기</a> </p> </p>

<p align="center"> <a href="https://github.com/calcom/cal.diy/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-purple" alt="라이선스"></a> <a href="https://github.com/calcom/cal.diy/stargazers"><img src="https://img.shields.io/github/stars/calcom/cal.diy" alt="Github 별"></a> <a href="https://github.com/calcom/cal.diy/pulse"><img src="https://img.shields.io/github/commit-activity/m/calcom/cal.diy" alt="월별 커밋"></a> <a href="https://hub.docker.com/r/calcom/cal.diy"><img src="https://img.shields.io/docker/pulls/calcom/cal.diy" alt="Docker Pulls"></a> <a href="https://github.com/calcom/cal.diy/issues?q=is:issue+is:open+label:%22%F0%9F%99%8B%F0%9F%8F%BB%E2%80%8D%E2%99%82%EF%B8%8Fhelp+wanted%22"><img src="https://img.shields.io/badge/Help%20Wanted-Contribute-blue"></a> <a href="https://contributor-covenant.org/version/1/4/code-of-conduct/"><img src="https://img.shields.io/badge/Contributor%20Covenant-1.4-purple" /></a> </p>

<!-- 프로젝트 소개 -->

Cal.diy 소개

<img width="100%" alt="예약 화면" src="https://github.com/calcom/cal.diy/assets/8019099/407e727e-ff19-4ca4-bcae-049dca05cf02">

Cal.diy는 커뮤니티 주도의 완전 오픈 소스 스케줄링 플랫폼입니다. Cal.com의 포크로, 모든 엔터프라이즈/상용 코드가 제거되었습니다.

Cal.diy는 100% MIT 라이선스이며 독점적인 "Enterprise Edition" 기능이 없습니다. 개인 및 자체 호스팅 사용자가 상업적 종속성 없이 스케줄링 인프라를 완전히 제어할 수 있도록 설계되었습니다.

Cal.com과의 차이점

  • 엔터프라이즈 기능 없음 — Teams, Organizations, Insights, Workflows, SSO/SAML 등 EE 전용 기능이 제거되었습니다.
  • 라이선스 키 불필요 — 모든 기능이 기본적으로 작동하며 Cal.com 계정이나 라이선스가 필요하지 않습니다.
  • 100% 오픈 소스 — 전체 코드베이스가 MIT 라이선스로 제공되며 "Open Core" 분할이 없습니다.
  • 커뮤니티 유지보수 — 기여를 환영하며 이 프로젝트에 직접 반영됩니다 (CONTRIBUTING.md 참조).

참고: Cal.diy는 자체 호스팅 프로젝트입니다. 호스팅 또는 관리형 버전은 없습니다. 사용자가 자신의 인프라에서 실행합니다.

사용된 기술

<!-- 시작하기 -->

시작하기

로컬 복사본을 실행하려면 다음 간단한 단계를 따르세요.

사전 요구사항

Cal.diy를 실행하는 데 필요한 것들입니다.

  • Node.js (버전: >=18.x)
  • PostgreSQL (버전: >=13.x)
  • Yarn (권장)

사용 가능한 통합 기능을 활성화하려면 각각에 대한 추가 자격 증명을 얻어야 할 수 있습니다. 자세한 내용은 아래 통합 섹션에서 확인할 수 있습니다.

개발

설정

  1. 저장소를 클론합니다 (또는 https://github.com/calcom/cal.diy/fork 에서 포크)
   git clone https://github.com/calcom/cal.diy.git

Windows 사용자는 관리자 권한으로 Git Bash에서 다음 명령을 실행하세요:

git clone -c core.symlinks=true https://github.com/calcom/cal.diy.git

  1. 프로젝트 폴더로 이동합니다
   cd cal.diy
  1. yarn으로 패키지를 설치합니다
   yarn
  1. .env 파일을 설정합니다
  • .env.example.env로 복사합니다.
  • openssl rand -base64 32를 사용하여 키를 생성하고 .env 파일의 NEXTAUTH_SECRET에 추가합니다.
  • openssl rand -base64 24를 사용하여 키를 생성하고 .env 파일의 CALENDSOENCRYPTIONKEY에 추가합니다.

Windows 사용자: Prisma 오류(unexpected character / in variable name)를 방지하려면 packages/prisma/.env 심볼릭 링크를 실제 복사본으로 교체하세요:

>

```sh

# Git Bash / WSL

rm packages/prisma/.env && cp.env packages/prisma/.env

```

  1. Node 설정

Node 버전이 프로젝트 요구사항을 충족하지 않는 경우 "nvm"(Node Version Manager)을 사용하여 필요한 버전의 Node를 사용할 수 있습니다:

   nvm use

먼저 특정 버전을 설치한 후 사용해야 할 수도 있습니다:

   nvm install && nvm use

nvm은 여기에서 설치할 수 있습니다.

yarn dx로 빠른 시작

- Docker 및 Docker Compose가 설치되어 있어야 합니다.

- 로컬 Postgres 인스턴스와 몇 가지 테스트 사용자를 시작합니다. 자격 증명은 콘솔에 기록됩니다.

yarn dx

생성되는 기본 자격 증명:

이메일 비밀번호 역할
[email protected] free 무료 사용자
[email protected] pro 프로 사용자
[email protected] trial 체험 사용자
[email protected] ADMINadmin2022! 관리자 사용자
[email protected] onboarding 온보딩 미완료

이 자격 증명 중 하나를 사용하여 http://localhost:3000에 로그인할 수 있습니다.

팁: 시드된 사용자 전체 목록과 세부 정보를 보려면 yarn db-studio를 실행하고 http://localhost:5555를 방문하세요.

개발 팁

  1. 셸 스크립트에 export NODE_OPTIONS="--max-old-space-size=16384"를 추가하여 Node 프로세스의 메모리 제한을 늘리세요. 또는 앱을 실행하기 전에 터미널에서 이 명령을 실행할 수 있습니다. 16384를 Node 프로세스에 할당할 RAM 용량으로 바꾸세요.
  1. .env 파일에 NEXTPUBLICLOGGER_LEVEL={level}을 추가하여 모든 tRPC 쿼리 및 뮤테이션의 로깅 상세도를 제어하세요.

{level}은 다음 중 하나일 수 있습니다:

0 (silly) \ 1 (trace) \ 2 (debug) \ 3 (info) \ 4 (warn) \ 5 (error) \ 6 (fatal)

.env 파일에 NEXTPUBLICLOGGER_LEVEL={level}을 설정하면 해당 레벨 이상의 로그가 활성화됩니다. 예를 들어:

  • NEXTPUBLICLOGGER_LEVEL=2로 설정하면 레벨 2(debug)부터 위로 로그가 기록됩니다. 즉, 레벨 2(debug), 3(info), 4(warn), 5(error), 6(fatal)이 기록됩니다.
  • NEXTPUBLICLOGGER_LEVEL=3으로 설정하면 레벨 3(info)부터 위로 로그가 기록됩니다. 즉, 레벨 3(info), 4(warn), 5(error), 6(fatal)이 기록되고 레벨 2(debug)와 레벨 1(trace)은 무시됩니다.
echo 'NEXT_PUBLIC_LOGGER_LEVEL=3' >>.env

예를 들어 Logger 레벨을 info로 설정합니다.

Gitpod 설정

  1. 아래 버튼을 클릭하여 Gitpod에서 이 프로젝트를 엽니다.
  1. 그러면 필요한 모든 종속성이 이미 설치된 완전히 구성된 워크스페이스가 브라우저에서 열립니다.

!Open in Gitpod

수동 설정

  1. .env 파일에서 환경 변수를 구성합니다. <user>, <pass>, <db-host>, <db-port>를 해당 값으로 바꾸세요.
   DATABASE_URL='postgresql://<user>:<pass>@<db-host>:<db-port>'

<details> <summary>DATABASE_URL을 구성하는 방법을 모르는 경우, 여기에서 빠른 로컬 DB를 생성하는 단계를 따르세요.</summary>

  1. PostgreSQL을 다운로드하고 로컬에 설치합니다 (아직 없는 경우).
  1. createDB <DB 이름>을 실행하여 로컬 DB를 생성합니다.
  1. 이제 생성한 DB로 psql 셸을 엽니다: psql -h localhost -U postgres -d <DB 이름>
  1. psql 셸에서 \conninfo를 실행하면 다음 정보를 얻을 수 있습니다.

!image

  1. 이제 모든 정보를 추출하여 DATABASE_URL에 추가합니다. URL은 다음과 같습니다:

postgresql://postgres:postgres@localhost:5432/Your-DB-Name. 포트는 구성 가능하며 5432일 필요는 없습니다.

</details>

로컬 DB를 생성하지 않으려면 railway.app, Northflank 또는 render와 같은 서비스를 고려할 수도 있습니다.

  1. .env에서 DATABASE_URL을 복사하여 .env.appStore에 붙여넣습니다.
  1. Prisma 스키마(packages/prisma/schema.prisma에 있음)를 사용하여 데이터베이스를 설정합니다.

개발 환경에서는 다음을 실행합니다:

   yarn workspace @calcom/prisma db-migrate

프로덕션 환경에서는 다음을 실행합니다:

   yarn workspace @calcom/prisma db-deploy
  1. mailhog를 실행하여 개발 중에 전송된 이메일을 확인합니다.

참고: E2ETESTMAILHOG_ENABLED가 "1"로 설정된 경우 필요합니다.

   docker pull mailhog/mailhog
   docker run -d -p 8025:8025 -p 1025:1025 mailhog/mailhog
  1. (개발 모드에서) 실행합니다.
   yarn dev

첫 번째 사용자 설정

방법 1
  1. Prisma Studio를 열어 데이터베이스 내용을 보거나 수정합니다:
   yarn db-studio
  1. User 모델을 클릭하여 새 사용자 레코드를 추가합니다.
  2. email, username, password 필드를 채우고 metadata를 빈 {}로 설정한 후 (비밀번호는 BCrypt로 암호화하는 것을 잊지 마세요) Save 1 Record를 클릭하여 첫 번째 사용자를 생성합니다.

새 사용자는 기본적으로 TRIAL 요금제로 설정됩니다. packages/prisma/schema.prisma 파일에서 이 동작을 필요에 맞게 조정할 수 있습니다.

  1. 브라우저에서 http://localhost:3000을 열고 방금 생성한 첫 번째 사용자로 로그인합니다.
방법 2

다음을 실행하여 로컬 DB를 시드합니다:

cd packages/prisma
yarn db-seed

위 명령은 로컬 DB에 더미 사용자를 채웁니다.

E2E 테스트

환경 변수 NEXTAUTH_URL이 올바른 값으로 설정되어 있는지 확인하세요. 로컬에서 실행하는 경우 .env.example 문서에 언급된 대로 값은 http://localhost:3000이어야 합니다.

# 터미널에서 다음을 실행:
yarn test-e2e

# 마지막 HTML 보고서를 열려면 다음을 실행:
yarn playwright show-report test-results/reports/playwright-html-report

문제 해결

E2E 테스트 브라우저가 설치되지 않음

npx playwright install을 실행하여 테스트 브라우저를 다운로드하고 yarn test-e2e 실행 시 아래 오류를 해결하세요:

Executable doesn't exist at /Users/alice/Library/Caches/ms-playwright/chromium-1048/chrome-mac/Chromium.app/Contents/MacOS/Chromium

이전 버전에서 업그레이드

  1. 현재 버전을 풀합니다:
   git pull
  1. 종속성이 추가/업데이트/제거되었는지 확인합니다:
   yarn
  1. 데이터베이스 마이그레이션을 적용합니다:

[...truncated...]

원본 저장소: calcom/cal.diy

라이선스: MIT

게재 제외를 원하시면 삭제 요청을 보내주세요.