{ "private": true, "dependencies": { "@apollo/client": "^4.0.0", "@floating-ui/react": "^0.24.3", "@linaria/core": "^6.2.0", "@linaria/react": "^6.2.1", "@radix-ui/colors": "^3.0.0", "@sniptt/guards": "^0.2.0", "@tabler/icons-react": "^3.31.0", "@wyw-in-js/babel-preset": "^1.0.6", "@wyw-in-js/vite": "^0.7.0", "archiver": "^7.0.1", "danger-plugin-todos": "^1.3.1", "date-fns": "^2.30.0", "date-fns-tz": "^2.0.0", "deep-equal": "^2.2.2", "file-type": "16.5.4", "framer-motion": "^11.18.0", "fuse.js": "^7.1.0", "googleapis": "105", "hex-rgb": "^5.0.0", "immer": "^10.1.1", "jotai": "^2.17.1", "libphonenumber-js": "^1.10.26", "lodash.camelcase": "^4.3.0", "lodash.chunk": "^4.2.0", "lodash.compact": "^3.0.1", "lodash.escaperegexp": "^4.1.2", "lodash.groupby": "^4.6.0", "lodash.identity": "^3.0.0", "lodash.isempty": "^4.4.0", "lodash.isequal": "^4.5.0", "lodash.isobject": "^3.0.2", "lodash.kebabcase": "^4.1.1", "lodash.mapvalues": "^4.6.0", "lodash.merge": "^4.6.2", "lodash.omit": "^4.5.0", "lodash.pickby": "^4.6.0", "lodash.snakecase": "^4.1.1", "lodash.upperfirst": "^4.3.1", "microdiff": "^1.3.2", "next-with-linaria": "^1.3.0", "planer": "^1.2.0", "pluralize": "^8.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-responsive": "^9.0.2", "react-router-dom": "^6.30.3", "react-tooltip": "^5.13.1", "remark-gfm": "^4.0.1", "rxjs": "^7.2.0", "semver": "^7.5.4", "slash": "^5.1.0", "temporal-polyfill": "^0.3.0", "ts-key-enum": "^2.0.12", "tslib": "^2.8.1", "type-fest": "4.10.1", "typescript": "5.9.2", "uuid": "^9.0.0", "vite-tsconfig-paths": "^4.2.1", "xlsx-ugnis": "^0.19.3", "zod": "^4.1.11" }, "devDependencies": { "@babel/core": "^7.14.5", "@babel/preset-react": "^7.14.5", "@babel/preset-typescript": "^7.24.6", "@chromatic-com/storybook": "^4.1.3", "@graphql-codegen/cli": "^3.3.1", "@graphql-codegen/client-preset": "^4.1.0", "@graphql-codegen/typescript": "^3.0.4", "@graphql-codegen/typescript-operations": "^3.0.4", "@graphql-codegen/typescript-react-apollo": "^3.3.7", "@nx/jest": "22.5.4", "@nx/js": "22.5.4", "@nx/react": "22.5.4", "@nx/storybook": "22.5.4", "@nx/vite": "22.5.4", "@nx/web": "22.5.4", "@oxlint/plugins": "^1.51.0", "@sentry/types": "^8", "@storybook-community/storybook-addon-cookie": "^5.0.0", "@storybook/addon-coverage": "^3.0.0", "@storybook/addon-docs": "^10.3.3", "@storybook/addon-links": "^10.3.3", "@storybook/addon-vitest": "^10.3.3", "@storybook/icons": "^2.0.1", "@storybook/react-vite": "^10.3.3", "@storybook/test-runner": "^0.24.2", "@swc-node/register": "^1.11.1", "@swc/cli": "^0.7.10", "@swc/core": "^1.15.11", "@swc/helpers": "~0.5.19", "@swc/jest": "^0.2.39", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", "@types/addressparser": "^1.0.3", "@types/bcrypt": "^5.0.0", "@types/bytes": "^3.1.1", "@types/chrome": "^0.0.267", "@types/deep-equal": "^1.0.1", "@types/fs-extra": "^11.0.4", "@types/graphql-fields": "^1.3.6", "@types/inquirer": "^9.0.9", "@types/jest": "^30.0.0", "@types/lodash.camelcase": "^4.3.7", "@types/lodash.compact": "^3.0.9", "@types/lodash.escaperegexp": "^4.1.9", "@types/lodash.groupby": "^4.6.9", "@types/lodash.identity": "^3.0.9", "@types/lodash.isempty": "^4.4.7", "@types/lodash.isequal": "^4.5.7", "@types/lodash.isobject": "^3.0.7", "@types/lodash.kebabcase": "^4.1.7", "@types/lodash.mapvalues": "^4.6.9", "@types/lodash.omit": "^4.5.9", "@types/lodash.pickby": "^4.6.9", "@types/lodash.snakecase": "^4.1.7", "@types/lodash.upperfirst": "^4.3.7", "@types/ms": "^0.7.31", "@types/node": "^24.0.0", "@types/passport-google-oauth20": "^2.0.11", "@types/passport-jwt": "^3.0.8", "@types/passport-microsoft": "^2.1.0", "@types/pluralize": "^0.0.33", "@types/react": "^18.2.39", "@types/react-datepicker": "^6.2.0", "@types/react-dom": "^18.2.15", "@types/supertest": "^2.0.11", "@types/uuid": "^9.0.2", "@typescript/native-preview": "^7.0.0-dev.20260116.1", "@vitejs/plugin-react-swc": "4.2.3", "@vitest/browser-playwright": "^4.0.18", "@vitest/coverage-istanbul": "^4.0.18", "@vitest/coverage-v8": "^4.0.18", "@yarnpkg/types": "^4.0.0", "chromatic": "^6.18.0", "concurrently": "^8.2.2", "danger": "^13.0.4", "dotenv-cli": "^7.4.4", "esbuild": "^0.25.10", "http-server": "^14.1.1", "jest": "29.7.0", "jest-environment-jsdom": "30.0.0-beta.3", "jest-environment-node": "^29.4.1", "jest-fetch-mock": "^3.0.3", "jsdom": "~22.1.0", "msw": "^2.12.7", "msw-storybook-addon": "^2.0.6", "nx": "22.5.4", "prettier": "^3.1.1", "raw-loader": "^4.0.2", "rimraf": "^5.0.5", "source-map-support": "^0.5.20", "storybook": "^10.3.3", "storybook-addon-mock-date": "2.0.0", "storybook-addon-pseudo-states": "^10.3.3", "supertest": "^6.1.3", "ts-jest": "^29.1.1", "ts-loader": "^9.2.3", "ts-node": "10.9.1", "tsc-alias": "^1.8.16", "tsconfig-paths": "^4.2.0", "tsx": "^4.17.0", "verdaccio": "^6.3.1", "vite": "^7.0.0", "vitest": "^4.0.18" }, "engines": { "node": "^24.5.0", "npm": "please-use-yarn", "yarn": ">=4.0.2" }, "license": "AGPL-3.0", "name": "twenty", "packageManager": "yarn@4.13.0", "resolutions": { "graphql": "16.8.1", "type-fest": "4.10.1", "typescript": "5.9.2", "nodemailer": "8.0.4", "graphql-redis-subscriptions/ioredis": "^5.6.0", "@lingui/core": "5.1.2", "@types/qs": "6.9.16", "@wyw-in-js/transform@npm:0.6.0": "patch:@wyw-in-js/transform@npm%3A0.7.0#~/.yarn/patches/@wyw-in-js-transform-npm-0.7.0-ba641dc99f.patch", "@wyw-in-js/transform@npm:0.7.0": "patch:@wyw-in-js/transform@npm%3A0.7.0#~/.yarn/patches/@wyw-in-js-transform-npm-0.7.0-ba641dc99f.patch" }, "version": "0.2.1", "nx": {}, "scripts": { "docs:generate": "tsx packages/twenty-docs/scripts/generate-docs-json.ts", "docs:generate-navigation-template": "tsx packages/twenty-docs/scripts/generate-navigation-template.ts", "docs:generate-paths": "tsx packages/twenty-docs/scripts/generate-documentation-paths.ts", "start": "npx concurrently --kill-others 'npx nx run-many -t start -p twenty-server twenty-front' 'npx wait-on tcp:3000 && npx nx run twenty-server:worker'" }, "workspaces": { "packages": [ "packages/twenty-front", "packages/twenty-server", "packages/twenty-emails", "packages/twenty-ui", "packages/twenty-utils", "packages/twenty-zapier", "packages/twenty-website", "packages/twenty-website-new", "packages/twenty-docs", "packages/twenty-e2e-testing", "packages/twenty-shared", "packages/twenty-sdk", "packages/twenty-front-component-renderer", "packages/twenty-client-sdk", "packages/twenty-apps", "packages/twenty-cli", "packages/create-twenty-app", "packages/twenty-oxlint-rules", "packages/twenty-companion" ] }, "prettier": { "singleQuote": true, "trailingComma": "all", "endOfLine": "lf" } }