Files
Benny Joo ab21c7f805 refactor: Cal.diy (#28903)
* feat: Cal.diy — community-driven MIT-licensed fork of Cal.com

This squashed commit contains all Cal.diy changes applied on top of calcom/cal.com main:

- Rebrand Cal.com to Cal.diy across the entire codebase
- Remove Enterprise Edition (EE) features, license checks, and AGPL restrictions
- Switch license from AGPL-3.0 to MIT
- Remove docs/ directory (migrated to Nextra at cal.diy)
- Remove dead code: org tests, EE tips, platform nav, premium username, SAML/SSO, etc.
- Clean up .env.example for self-hosted Cal.diy
- Update Docker image references to calcom/cal.diy
- Update README, CONTRIBUTING.md, and issue templates for Cal.diy community fork
- Add PR welcome bot for Cal.diy contributors
- Fix API v2 breaking changes oasdiff ignore entries
- Replace Blacksmith CI runners with default GitHub Actions

3893 files changed, 20789 insertions(+), 411020 deletions(-)

Co-Authored-By: benny@cal.com <sldisek783@gmail.com>

* refactor: remove org-specific /organizations/:orgId endpoints from API v2 atoms controllers (#1701)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: revert Cal.diy Inc to Cal.com, Inc. in license files, copyright notices, and package metadata (#1702)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* rip out org related comments in api v2

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-04-15 09:52:36 -03:00

454 lines
13 KiB
JSON

{
"$schema": "https://biomejs.dev/schemas/2.3.10/schema.json",
"root": true,
"assist": {
"actions": {
"source": {
"organizeImports": {
"level": "on",
"options": {
"groups": [
["**/__mocks__/**", "**/bookingScenario*"],
[":PACKAGE_WITH_PROTOCOL:", ":PACKAGE:"],
["@calcom/**", "@ee/**"],
["@lib/**", "@components/**", "@server/**", "@trpc/**"],
"~/**",
":PATH:"
]
}
}
}
},
"enabled": true
},
"css": {
"parser": {
"tailwindDirectives": true
}
},
"formatter": {
"includes": [
"**/*",
"!packages/ui/components/icon/dynamicIconImports.tsx"
],
"lineWidth": 110,
"indentStyle": "space",
"indentWidth": 2,
"lineEnding": "lf"
},
"files": {
"includes": [
"**/*",
"!!**/node_modules",
"!!**/.next",
"!!**/.turbo",
"!!**/dist",
"!!**/build",
"!!**/public",
"!!**/*.d.ts",
"!!public",
"!!apps/web/public/embed",
"!!packages/prisma/zod",
"!!packages/prisma/enums",
"!!*.lock",
"!!*.log",
"!!.gitignore",
"!!.npmignore",
"!!.prettierignore",
"!!.eslintignore",
"!!.DS_Store",
"!!coverage",
"!!lint-results",
"!!test-results",
"!!packages/lib/raqb/resolveQueryValue.test.ts",
"!!packages/ui/components/editor/plugins/ToolbarPlugin.tsx",
"!!packages/embeds/embed-core/src/lib/domUtils.ts"
],
"maxSize": 2097152
},
"javascript": {
"parser": {
"unsafeParameterDecoratorsEnabled": true
},
"formatter": {
"arrowParentheses": "always",
"bracketSpacing": true,
"bracketSameLine": true,
"quoteStyle": "double",
"jsxQuoteStyle": "double",
"semicolons": "always",
"trailingCommas": "es5"
}
},
"linter": {
"enabled": true,
"domains": {
"next": "recommended",
"react": "recommended"
},
"rules": {
"recommended": true,
"a11y": "off"
}
},
"overrides": [
{
"includes": ["**/*.tsx"],
"javascript": {
"jsxRuntime": "transparent"
}
},
{
"includes": ["apps/web/app/**/page.tsx", "apps/web/app/**/layout.tsx", "apps/web/app/pages/**/*.tsx"],
"linter": {
"rules": {
"style": {
"noDefaultExport": "off"
}
}
}
},
{
"includes": ["**/*"],
"linter": {
"rules": {
"nursery": {
"useQwikValidLexicalScope": "off",
"useExplicitType": "info",
"noReactForwardRef": "warn",
"noTernary": "info",
"noUnresolvedImports": "warn",
"useSortedClasses": {
"level": "warn",
"options": {
"attributes": ["className", "classList"],
"functions": ["clsx", "cva", "cn", "tw"]
}
}
},
"correctness": {
"useImportExtensions": "warn",
"noProcessGlobal": "warn",
"useExhaustiveDependencies": "warn",
"noUnknownProperty": "warn",
"noUnreachable": "warn",
"noEmptyPattern": "warn",
"noSwitchDeclarations": "warn",
"useHookAtTopLevel": "warn",
"useJsxKeyInIterable": "warn",
"noUnsafeOptionalChaining": "warn"
},
"style": {
"useExportsLast": "warn",
"noProcessEnv": "warn",
"useNodejsImportProtocol": "error",
"noNestedTernary": "warn"
},
"complexity": {
"noExcessiveLinesPerFunction": {
"level": "warn",
"options": {
"maxLines": 100,
"skipBlankLines": true
}
}
},
"performance": {
"noImgElement": "warn"
},
"suspicious": {
"noDoubleEquals": "warn",
"noAssignInExpressions": "warn",
"noExplicitAny": "warn",
"useIterableCallbackReturn": "warn",
"noImplicitAnyLet": "warn",
"noRedeclare": "warn",
"noControlCharactersInRegex": "warn",
"noArrayIndexKey": "warn",
"noShadowRestrictedNames": "warn",
"noAsyncPromiseExecutor": "warn"
},
"security": {
"noBlankTarget": "warn",
"noDangerouslySetInnerHtml": "warn"
}
}
}
},
{
"includes": ["packages/embeds/embed-core/**/*.{ts,tsx,js,jsx}"],
"linter": {
"rules": {
"style": {
"useNodejsImportProtocol": "off",
"noProcessEnv": "off"
},
"correctness": {
"noProcessGlobal": "off"
}
}
}
},
{
"includes": ["apps/api/v2/**/*.ts", "apps/api/v2/**/*.controller.ts"],
"linter": {
"rules": {
"style": {
"useImportType": "off"
},
"correctness": {
"noProcessGlobal": "off"
}
}
}
},
{
"includes": [
"apps/api/v2/src/config/app.ts",
"apps/api/v2/src/main.ts",
"apps/api/v2/src/bootstrap.ts",
"apps/api/v2/src/config/env.ts",
"apps/api/v2/src/env.ts",
"apps/api/v2/test/setEnvVars.ts"
],
"linter": {
"rules": {
"style": {
"noProcessEnv": "off"
}
}
}
},
{
"includes": ["**/*.test.ts", "**/*.test.tsx", "**/*.spec.ts", "**/*.e2e-spec.ts", "**/*.integration-test.ts"],
"linter": {
"rules": {
"complexity": {
"useArrowFunction": "off",
"noExcessiveLinesPerFunction": "off"
}
}
}
},
{
"includes": ["packages/lib/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
"linter": {
"rules": {
"style": {
"noRestrictedImports": {
"level": "error",
"options": {
"patterns": [
{
"group": ["../app-store/**"],
"message": "lib package should not import from app-store to avoid circular dependencies."
},
{
"group": ["../features/**"],
"message": "lib package should not import from features to avoid circular dependencies."
},
{
"group": ["../trpc/**"],
"message": "lib package should not import from trpc to avoid circular dependencies."
},
{
"group": ["@trpc/server"],
"message": "lib package should not import from @trpc/server to avoid circular dependencies."
}
]
}
}
}
}
}
},
{
"includes": [
"packages/lib/**/*repository*.{ts,tsx,js,jsx}",
"packages/lib/**/*Repository*.{ts,tsx,js,jsx}",
"packages/lib/**/repository/**/*.{ts,tsx,js,jsx}",
"packages/lib/**/repositories/**/*.{ts,tsx,js,jsx}"
],
"linter": {
"rules": {
"style": {
"useFilenamingConvention": {
"level": "error",
"options": {
"match": "REPOSITORY-FILES-NOT-ALLOWED-IN-PACKAGES-LIB[.](.+)",
"filenameCases": ["camelCase"]
}
}
}
}
}
},
{
"includes": ["packages/app-store/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
"linter": {
"rules": {
"style": {
"noRestrictedImports": {
"level": "error",
"options": {
"patterns": [
{
"group": ["../features/**"],
"message": "app-store package should not import from features to avoid circular dependencies."
},
{
"group": ["../trpc/**"],
"message": "app-store package should not import from trpc to avoid circular dependencies."
}
]
}
}
}
}
}
},
{
"includes": ["packages/features/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
"linter": {
"rules": {
"style": {
"noRestrictedImports": {
"level": "error",
"options": {
"patterns": [
{
"group": ["../trpc/**"],
"message": "features package should not import from trpc to avoid circular dependencies."
},
{
"group": ["@calcom/web", "@calcom/web/**"],
"message": "features package should not import from @calcom/web to avoid circular dependencies."
},
{
"group": ["../../apps/web/**"],
"message": "features package should not import from apps/web to avoid circular dependencies."
}
]
}
}
}
}
}
},
{
"includes": ["packages/trpc/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
"linter": {
"rules": {
"style": {
"noRestrictedImports": {
"level": "error",
"options": {
"patterns": [
{
"group": ["../apps/web/**"],
"message": "trpc package should not import from apps/web to avoid circular dependencies."
}
]
}
}
}
}
}
},
{
"includes": ["packages/testing/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
"linter": {
"rules": {
"style": {
"noRestrictedImports": {
"level": "error",
"options": {
"patterns": [
{
"group": ["@calcom/web", "@calcom/web/**"],
"message": "testing package should not import from @calcom/web to avoid circular dependencies."
},
{
"group": ["@calcom/features", "@calcom/features/**"],
"message": "testing package should not import from @calcom/features to avoid circular dependencies."
},
{
"group": ["../../apps/web/**"],
"message": "testing package should not import from apps/web to avoid circular dependencies."
},
{
"group": ["../features/**"],
"message": "testing package should not import from features to avoid circular dependencies."
}
]
}
}
}
}
}
},
{
"includes": ["packages/platform/atoms/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
"linter": {
"rules": {
"correctness": {
"noProcessGlobal": "off"
},
"style": {
"noRestrictedImports": {
"level": "error",
"options": {
"patterns": [
{
"group": ["@calcom/trpc", "@calcom/trpc/**"],
"message": "atoms package should not import from @calcom/trpc."
},
{
"group": ["../../trpc", "../../trpc/**"],
"message": "atoms package should not import from trpc."
}
]
}
}
}
}
}
},
{
"includes": ["apps/api/v2/**/*.{ts,tsx,js,jsx,mts,mjs,cjs,cts}"],
"linter": {
"rules": {
"style": {
"noRestrictedImports": {
"level": "error",
"options": {
"patterns": [
{
"group": [
"@calcom/*",
"@calcom/**",
"!@calcom/platform-constants",
"!@calcom/platform-constants/**",
"!@calcom/platform-enums",
"!@calcom/platform-enums/**",
"!@calcom/platform-libraries",
"!@calcom/platform-libraries/**",
"!@calcom/platform-types",
"!@calcom/platform-types/**",
"!@calcom/platform-utils",
"!@calcom/platform-utils/**",
"!@calcom/prisma",
"!@calcom/prisma/**"
],
"message": "API v2 should only import from @calcom/platform-constants, @calcom/platform-enums, @calcom/platform-libraries, @calcom/platform-types, @calcom/platform-utils, and @calcom/prisma. Other @calcom packages are not allowed."
}
]
}
}
}
}
}
}
]
}