Closes #9151 ## Description This PR automatically sets a workspace's logo based on the user's work email domain during signup. When a user creates a new workspace using their work email (e.g., @airbnb.com), the system will fetch and set their company logo from twenty-icons.com as the default workspace logo. ## Implementation Details - Added a new `CompanyEnrichmentService` to handle company-related data enrichment - Created a modular architecture that supports future enrichment features (e.g., company name, details) - Integrated with existing work email detection - Maintains user ability to override the logo later ## Testing https://github.com/user-attachments/assets/f7855c99-462a-4053-9e52-29649e954275 I tested the following scenarios: - Signing up with a work email (e.g., @company.com) → Logo is automatically set - Signing up with a personal email (e.g., @gmail.com) → No logo is set - User can still upload a custom logo after automatic setting ## Technical Notes - Uses existing `isWorkEmail` utility - Structured for future extensibility (additional company data enrichment) - No breaking changes to existing functionality --------- Co-authored-by: Félix Malfait <felix@twenty.com>
111 lines
2.6 KiB
Plaintext
111 lines
2.6 KiB
Plaintext
{
|
|
"folders": [
|
|
{
|
|
"name": "ROOT",
|
|
"path": "../"
|
|
},
|
|
{
|
|
"name": "packages/twenty-chrome-extension",
|
|
"path": "../packages/twenty-chrome-extension"
|
|
},
|
|
{
|
|
"name": "packages/twenty-docker",
|
|
"path": "../packages/twenty-docker"
|
|
},
|
|
{
|
|
"name": "packages/twenty-front",
|
|
"path": "../packages/twenty-front"
|
|
},
|
|
{
|
|
"name": "packages/twenty-ui",
|
|
"path": "../packages/twenty-ui"
|
|
},
|
|
{
|
|
"name": "packages/twenty-emails",
|
|
"path": "../packages/twenty-emails"
|
|
},
|
|
{
|
|
"name": "packages/twenty-shared",
|
|
"path": "../packages/twenty-shared"
|
|
},
|
|
{
|
|
"name": "packages/twenty-server",
|
|
"path": "../packages/twenty-server"
|
|
},
|
|
{
|
|
"name": "packages/twenty-utils",
|
|
"path": "../packages/twenty-utils"
|
|
},
|
|
{
|
|
"name": "packages/twenty-zapier",
|
|
"path": "../packages/twenty-zapier"
|
|
},
|
|
{
|
|
"name": "tools/eslint-rules",
|
|
"path": "../tools/eslint-rules"
|
|
},
|
|
],
|
|
"settings": {
|
|
"editor.formatOnSave": false,
|
|
"files.eol": "auto",
|
|
"[typescript]": {
|
|
"editor.formatOnSave": false,
|
|
"editor.codeActionsOnSave": {
|
|
"source.fixAll.eslint": "explicit",
|
|
"source.addMissingImports": "always"
|
|
}
|
|
},
|
|
"[javascript]": {
|
|
"editor.formatOnSave": false,
|
|
"editor.codeActionsOnSave": {
|
|
"source.fixAll.eslint": "explicit",
|
|
"source.addMissingImports": "always"
|
|
}
|
|
},
|
|
"[typescriptreact]": {
|
|
"editor.formatOnSave": false,
|
|
"editor.codeActionsOnSave": {
|
|
"source.fixAll.eslint": "explicit",
|
|
"source.addMissingImports": "always"
|
|
}
|
|
},
|
|
"[json]": {
|
|
"editor.formatOnSave": true
|
|
},
|
|
"javascript.format.enable": false,
|
|
"typescript.format.enable": false,
|
|
"cSpell.enableFiletypes": [
|
|
"!javascript",
|
|
"!json",
|
|
"!typescript",
|
|
"!typescriptreact",
|
|
"md",
|
|
"mdx"
|
|
],
|
|
"cSpell.words": [
|
|
"twentyhq"
|
|
],
|
|
"typescript.preferences.importModuleSpecifier": "non-relative",
|
|
"[javascript][typescript][typescriptreact]": {
|
|
"editor.codeActionsOnSave": {
|
|
"source.fixAll.eslint": "explicit",
|
|
"source.addMissingImports": "always"
|
|
}
|
|
},
|
|
"search.exclude": {
|
|
"**/.yarn": true,
|
|
},
|
|
"files.exclude": {
|
|
"packages/": true
|
|
},
|
|
"jest.runMode": "on-demand",
|
|
"jest.disabledWorkspaceFolders": [
|
|
"ROOT",
|
|
"packages/twenty-zapier",
|
|
"packages/twenty-docker",
|
|
"packages/twenty-utils",
|
|
"packages/twenty-postgres"
|
|
]
|
|
}
|
|
}
|