Something went wrong. Try again.
🔥 🔥 🔥 A Free & Self-hostable Airtable Alternative nocodb.com
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471import type { FormDefinition, IntegrationsType, SyncCategory } from 'nocodb-sdk'import type { VNode } from '@vue/runtime-dom'import type { CSSProperties, FunctionalComponent, SVGAttributes } from 'nuxt/dist/app/compat/capi'import { ClientType, IntegrationCategoryType, SyncDataType } from '#imports'
export const integrationsInitialized = ref(false)export interface IntegrationItemType { title: string icon: FunctionalComponent<SVGAttributes, {}, any, {}> | VNode sub_type: SyncDataType | ClientType type: IntegrationCategoryType | IntegrationsType isAvailable?: boolean iconStyle?: CSSProperties isOssOnly?: boolean /** EE-only data source (e.g. MSSQL, Oracle) — hidden in CE; in EE gated by its paid add-on. */ isEeOnly?: boolean subtitle?: string dynamic?: boolean hidden?: boolean form?: FormDefinition sync_category?: SyncCategory}
export interface IntegrationCategoryItemType { title: string subtitle: string value: IntegrationCategoryType isAvailable?: boolean teleEventName?: IntegrationCategoryType}
export const integrationCategories: IntegrationCategoryItemType[] = [ { title: 'labels.database', subtitle: 'objects.integrationCategories.databaseSubtitle', value: IntegrationCategoryType.DATABASE, isAvailable: true, }, { title: 'objects.integrationCategories.ai', subtitle: 'objects.integrationCategories.ai', value: IntegrationCategoryType.AI, isAvailable: true, }, { title: 'Auth Provider', subtitle: 'Auth', value: IntegrationCategoryType.AUTH, isAvailable: true, }, { title: 'objects.integrationCategories.communication', subtitle: 'objects.integrationCategories.communicationSubtitle', value: IntegrationCategoryType.COMMUNICATION, }, { title: 'objects.integrationCategories.spreadSheet', subtitle: 'objects.integrationCategories.spreadSheetSubtitle', value: IntegrationCategoryType.SPREAD_SHEET, teleEventName: IntegrationCategoryType.OTHERS, }, { title: 'objects.integrationCategories.projectManagement', subtitle: 'objects.integrationCategories.projectManagementSubtitle', value: IntegrationCategoryType.PROJECT_MANAGEMENT, }, { title: 'objects.integrationCategories.ticketing', subtitle: 'objects.integrationCategories.ticketingSubtitle', value: IntegrationCategoryType.TICKETING, }, { title: 'objects.integrationCategories.crm', subtitle: 'objects.integrationCategories.crmSubtitle', value: IntegrationCategoryType.CRM, }, { title: 'objects.integrationCategories.marketing', subtitle: 'objects.integrationCategories.marketingSubtitle', value: IntegrationCategoryType.MARKETING, }, { title: 'objects.integrationCategories.ats', subtitle: 'objects.integrationCategories.atsSubtitle', value: IntegrationCategoryType.ATS, }, { title: 'objects.integrationCategories.development', subtitle: 'objects.integrationCategories.developmentSubtitle', value: IntegrationCategoryType.DEVELOPMENT, }, { title: 'objects.integrationCategories.finance', subtitle: 'objects.integrationCategories.financeSubtitle', value: IntegrationCategoryType.FINANCE, }, { title: 'labels.storage', subtitle: 'objects.integrationCategories.storageSubtitle', value: IntegrationCategoryType.STORAGE, }, { title: 'objects.integrationCategories.others', subtitle: 'objects.integrationCategories.othersSubtitle', value: IntegrationCategoryType.OTHERS, },]
export const allIntegrations: IntegrationItemType[] = [ // Database { title: 'objects.syncData.nocodb', sub_type: SyncDataType.NOCODB, icon: iconMap.nocodbPg, type: IntegrationCategoryType.DATABASE, isAvailable: true, iconStyle: { width: '32px', height: '32px', }, }, { title: 'objects.syncData.mysql', sub_type: ClientType.MYSQL, icon: iconMap.mysql, type: IntegrationCategoryType.DATABASE, isAvailable: true, iconStyle: { width: '32px', height: '32px', }, }, { title: 'objects.syncData.postgreSQL', sub_type: ClientType.PG, icon: iconMap.postgreSql, type: IntegrationCategoryType.DATABASE, isAvailable: true, }, { title: 'objects.syncData.sqlite', sub_type: ClientType.SQLITE, icon: iconMap.sqlServer, type: IntegrationCategoryType.DATABASE, isAvailable: true, isOssOnly: true, }, { title: 'objects.syncData.mssql', sub_type: ClientType.MSSQL, icon: iconMap.mssqlServer, type: IntegrationCategoryType.DATABASE, isAvailable: true, isEeOnly: true, }, { title: 'objects.syncData.oracle', sub_type: ClientType.ORACLE, icon: iconMap.oracle, type: IntegrationCategoryType.DATABASE, isAvailable: true, isEeOnly: true, }, // Temp removed // { // title: 'objects.syncData.snowflake', // sub_type: ClientType.SNOWFLAKE, // icon: iconMap.snowflake, // type: IntegrationCategoryType.DATABASE, // }, // { // title: 'objects.syncData.dataBricks', // sub_type: ClientType.DATABRICKS, // icon: iconMap.dataBricks, // type: IntegrationCategoryType.DATABASE, // },
// Communication { title: 'general.slack', sub_type: SyncDataType.SLACK, icon: iconMap.slack, type: IntegrationCategoryType.COMMUNICATION, iconStyle: { width: '32px', height: '32px', }, }, { title: 'general.discord', sub_type: SyncDataType.DISCORD, icon: iconMap.ncDiscord, type: IntegrationCategoryType.COMMUNICATION, iconStyle: { width: '32px', height: '32px', }, }, { title: 'general.twilio', sub_type: SyncDataType.TWILLO, icon: iconMap.twilio, type: IntegrationCategoryType.COMMUNICATION, iconStyle: { width: '32px', height: '32px', }, },
{ title: 'objects.syncData.microsoftOutlook', sub_type: SyncDataType.MICROSOFT_OUTLOOK, icon: iconMap.microsoftOutlook, type: IntegrationCategoryType.COMMUNICATION, }, { title: 'general.microsoftTeams', sub_type: SyncDataType.MICROSOFT_TEAMS, icon: iconMap.microsoftTeams, type: IntegrationCategoryType.COMMUNICATION, iconStyle: { width: '32px', height: '32px', }, }, { title: 'objects.syncData.gmail', sub_type: SyncDataType.GMAIL, icon: iconMap.gmail, type: IntegrationCategoryType.COMMUNICATION, }, { title: 'objects.syncData.telegram', sub_type: SyncDataType.TELEGRAM, icon: iconMap.telegram, type: IntegrationCategoryType.COMMUNICATION, }, { title: 'objects.syncData.whatsapp', sub_type: SyncDataType.WHATSAPP, icon: iconMap.whatsappSolid, type: IntegrationCategoryType.COMMUNICATION, iconStyle: { width: '32px', height: '32px', }, },
// Project Management { title: 'objects.syncData.asana', sub_type: SyncDataType.ASANA, icon: iconMap.asana, type: IntegrationCategoryType.PROJECT_MANAGEMENT, }, { title: 'objects.syncData.jira', sub_type: SyncDataType.JIRA, icon: iconMap.jira, type: IntegrationCategoryType.PROJECT_MANAGEMENT, }, { title: 'objects.syncData.miro', sub_type: SyncDataType.MIRO, icon: iconMap.miro, type: IntegrationCategoryType.PROJECT_MANAGEMENT, },
{ title: 'objects.syncData.trello', sub_type: SyncDataType.TRELLO, icon: iconMap.trello, type: IntegrationCategoryType.PROJECT_MANAGEMENT, },
// CRM { title: 'objects.syncData.salesforce', sub_type: SyncDataType.SALESFORCE, icon: iconMap.salesforce, type: IntegrationCategoryType.CRM, }, { title: 'objects.syncData.hubspot', sub_type: SyncDataType.HUBSPOT, icon: iconMap.hubspot, type: IntegrationCategoryType.CRM, }, { title: 'objects.syncData.pipedrive', sub_type: SyncDataType.PIPEDRIVE, icon: iconMap.pipedrive, type: IntegrationCategoryType.CRM, }, { title: 'objects.syncData.microsoftDynamics365', sub_type: SyncDataType.MICROSOFT_DYNAMICS_365, icon: iconMap.microsoftDynamics365, type: IntegrationCategoryType.CRM, }, { title: 'objects.syncData.zohoCrm', sub_type: SyncDataType.ZOHO_CRM, icon: iconMap.zohoCrm, type: IntegrationCategoryType.CRM, },
// Marketing { title: 'objects.syncData.hubspot', sub_type: SyncDataType.HUBSPOT, icon: iconMap.hubspot, type: IntegrationCategoryType.MARKETING, }, { title: 'objects.syncData.mailchimp', sub_type: SyncDataType.MAILCHIMP, icon: iconMap.mailchimp, type: IntegrationCategoryType.MARKETING, }, { title: 'objects.syncData.surveyMonkey', sub_type: SyncDataType.SURVEYMONKEY, icon: iconMap.surveyMonkey, type: IntegrationCategoryType.MARKETING, }, { title: 'objects.syncData.typeform', sub_type: SyncDataType.TYPEFORM, icon: iconMap.typeform, type: IntegrationCategoryType.MARKETING, },
// ATS { title: 'objects.syncData.workday', sub_type: SyncDataType.WORKDAY, icon: iconMap.workday, type: IntegrationCategoryType.ATS, }, { title: 'objects.syncData.greenhouse', sub_type: SyncDataType.GREENHOUSE, icon: iconMap.greenhouse, type: IntegrationCategoryType.ATS, }, { title: 'objects.syncData.lever', sub_type: SyncDataType.LEVER, icon: iconMap.lever, type: IntegrationCategoryType.ATS, },
// Development { title: 'objects.syncData.bitbucket', sub_type: SyncDataType.BITBUCKET, icon: iconMap.bitBucket, type: IntegrationCategoryType.DEVELOPMENT, }, { title: 'objects.syncData.github', sub_type: SyncDataType.GITHUB, icon: iconMap.githubSolid, type: IntegrationCategoryType.DEVELOPMENT, }, { title: 'objects.syncData.gitlab', sub_type: SyncDataType.GITLAB, icon: iconMap.gitlab, type: IntegrationCategoryType.DEVELOPMENT, },
// Finance { title: 'objects.syncData.stripe', sub_type: SyncDataType.STRIPE, icon: iconMap.stripe, type: IntegrationCategoryType.FINANCE, }, { title: 'objects.syncData.quickbooks', sub_type: SyncDataType.QUICKBOOKS, icon: iconMap.quickbooks, type: IntegrationCategoryType.FINANCE, },
// Ticketing { title: 'objects.syncData.freshdesk', sub_type: SyncDataType.FRESHDESK, icon: iconMap.freshdesk, type: IntegrationCategoryType.TICKETING, }, { title: 'objects.syncData.intercom', sub_type: SyncDataType.INTERCOM, icon: iconMap.intercom, type: IntegrationCategoryType.TICKETING, }, { title: 'objects.syncData.zendesk', sub_type: SyncDataType.ZENDESK, icon: iconMap.zendesk, type: IntegrationCategoryType.TICKETING, }, { title: 'objects.syncData.salesforce', subtitle: 'objects.syncData.serviceCloud', sub_type: SyncDataType.SALESFORCE_SERVICE_CLOUD, icon: iconMap.salesforce, type: IntegrationCategoryType.TICKETING, }, { title: 'objects.syncData.hubspot', subtitle: 'objects.syncData.serviceHub', sub_type: SyncDataType.HUBSPOT_SERVICE_HUB, icon: iconMap.hubspot, type: IntegrationCategoryType.TICKETING, },
// Storage { title: 'objects.syncData.box', sub_type: SyncDataType.BOX, icon: iconMap.box, type: IntegrationCategoryType.STORAGE }, { title: 'objects.syncData.dropbox', sub_type: SyncDataType.DROPBOX, icon: iconMap.dropbox, type: IntegrationCategoryType.STORAGE, }, { title: 'objects.syncData.googleDrive', sub_type: SyncDataType.GOOGLE_DRIVE, icon: iconMap.googleDrive, type: IntegrationCategoryType.STORAGE, },
// Spreadsheet { title: 'objects.syncData.appleNumbers', sub_type: SyncDataType.APPLE_NUMBERS, icon: iconMap.appleSolid, type: IntegrationCategoryType.SPREAD_SHEET, }, { title: 'objects.syncData.microsoftExcel', sub_type: SyncDataType.MICROSOFT_EXCEL, icon: iconMap.microsoftExcel, type: IntegrationCategoryType.SPREAD_SHEET, }, { title: 'objects.syncData.googleSheets', sub_type: SyncDataType.GOOGLE_SHEETS, icon: iconMap.googleSheet, type: IntegrationCategoryType.SPREAD_SHEET, },
// Others // { // title: 'objects.syncData.googleCalendar', // sub_type: SyncDataType.GOOGLE_CALENDAR, // icon: iconMap.googleCalendar, // type: IntegrationCategoryType.OTHERS, // },]
export const allIntegrationsMapBySubType = allIntegrations.reduce((acc, integration) => { acc[integration.sub_type] = integration
return acc}, {} as Record<(typeof allIntegrations)[number]['sub_type'], IntegrationItemType>)