diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index dee956b2c..c2890fd6e 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,8 +1,8 @@ # this docker compose is for development purposes. -# use it to run a development environnement locally without pulling pre-built images from cloud +# use it to run a development environnement locally without pulling pre-built images from cloud name: panora -version: '3.8' +version: "3.8" services: postgres: @@ -29,95 +29,92 @@ services: build: context: ./ dockerfile: ./packages/api/Dockerfile.dev - environment: - DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB}?ssl=false - DISTRIBUTION: ${DISTRIBUTION} - JWT_SECRET: ${JWT_SECRET} - REDIS_HOST: redis - ENCRYPT_CRYPTO_SECRET_KEY: ${ENCRYPT_CRYPTO_SECRET_KEY} - HUBSPOT_CRM_CLIENT_ID: ${HUBSPOT_CRM_CLIENT_ID} - HUBSPOT_CRM_CLIENT_SECRET: ${HUBSPOT_CRM_CLIENT_SECRET} - ATTIO_CRM_CLIENT_ID: ${ATTIO_CRM_CLIENT_ID} - ATTIO_CRM_CLIENT_SECRET: ${ATTIO_CRM_CLIENT_SECRET} - ZOHO_CRM_CLIENT_ID: ${ZOHO_CRM_CLIENT_ID} - ZOHO_CRM_CLIENT_SECRET: ${ZOHO_CRM_CLIENT_SECRET} - PIPEDRIVE_CRM_CLIENT_ID: ${PIPEDRIVE_CRM_CLIENT_ID} - PIPEDRIVE_CRM_CLIENT_SECRET: ${PIPEDRIVE_CRM_CLIENT_SECRET} - ZENDESK_CRM_CLIENT_ID: ${ZENDESK_CRM_CLIENT_ID} - ZENDESK_CRM_CLIENT_SECRET: ${ZENDESK_CRM_CLIENT_SECRET} - OAUTH_REDIRECT_BASE: ${OAUTH_REDIRECT_BASE} - ZENDESK_TICKETING_CLIENT_ID: ${ZENDESK_TICKETING_CLIENT_ID} - ZENDESK_TICKETING_CLIENT_SECRET: ${ZENDESK_TICKETING_CLIENT_SECRET} - ZENDESK_TICKETING_SUBDOMAIN: ${ZENDESK_TICKETING_SUBDOMAIN} - FRONT_TICKETING_CLIENT_ID: ${FRONT_TICKETING_CLIENT_ID} - FRONT_TICKETING_CLIENT_SECRET: ${FRONT_TICKETING_CLIENT_SECRET} - CLICKUP_TICKETING_CLIENT_ID: ${CLICKUP_TICKETING_CLIENT_ID} - CLICKUP_TICKETING_CLIENT_SECRET: ${CLICKUP_TICKETING_CLIENT_SECRET} - GITHUB_TICKETING_CLIENT_ID: ${GITHUB_TICKETING_CLIENT_ID} - GITHUB_TICKETING_CLIENT_SECRET: ${GITHUB_TICKETING_CLIENT_SECRET} - GITLAB_TICKETING_CLIENT_ID: ${GITLAB_TICKETING_CLIENT_ID} - GITLAB_TICKETING_CLIENT_SECRET: ${GITLAB_TICKETING_CLIENT_SECRET} - GORGIAS_TICKETING_CLIENT_ID: ${GORGIAS_TICKETING_CLIENT_ID} - GORGIAS_TICKETING_CLIENT_SECRET: ${GORGIAS_TICKETING_CLIENT_SECRET} - GORGIAS_TICKETING_SUBDOMAIN: ${GORGIAS_TICKETING_SUBDOMAIN} - JIRA_TICKETING_CLIENT_ID: ${JIRA_TICKETING_CLIENT_ID} - JIRA_TICKETING_CLIENT_SECRET: ${JIRA_TICKETING_CLIENT_SECRET} - JIRA_SERVICE_MGMT_TICKETING_CLIENT_ID: ${JIRA_SERVICE_MGMT_TICKETING_CLIENT_ID} - JIRA_SERVICE_MGMT_TICKETING_CLIENT_SECRET: ${JIRA_SERVICE_MGMT_TICKETING_CLIENT_SECRET} - LINEAR_TICKETING_CLIENT_ID: ${LINEAR_TICKETING_CLIENT_ID} - LINEAR_TICKETING_CLIENT_SECRET: ${LINEAR_TICKETING_CLIENT_SECRET} - ACCELO_CRM_CLIENT_ID: ${ACCELO_CRM_CLIENT_ID} - ACCELO_CRM_CLIENT_SECRET: ${ACCELO_CRM_CLIENT_SECRET} - ACCELO_CRM_SUBDOMAIN: ${ACCELO_CRM_SUBDOMAIN} - CAPSULE_CRM_CLIENT_ID: ${CAPSULE_CRM_CLIENT_ID} - CAPSULE_CRM_CLIENT_SECRET: ${CAPSULE_CRM_CLIENT_SECRET} - CLOSE_CRM_CLIENT_ID: ${CLOSE_CRM_CLIENT_ID} - CLOSE_CRM_CLIENT_SECRET: ${CLOSE_CRM_CLIENT_SECRET} - COPPER_CRM_CLIENT_ID: ${COPPER_CRM_CLIENT_ID} - COPPER_CRM_CLIENT_SECRET: ${COPPER_CRM_CLIENT_SECRET} - KEAP_CRM_CLIENT_ID: ${KEAP_CRM_CLIENT_ID} - KEAP_CRM_CLIENT_SECRET: ${KEAP_CRM_CLIENT_SECRET} - TEAMLEADER_CRM_CLIENT_ID: ${TEAMLEADER_CRM_CLIENT_ID} - TEAMLEADER_CRM_CLIENT_SECRET: ${TEAMLEADER_CRM_CLIENT_SECRET} - TEAMWORK_CRM_CLIENT_ID: ${TEAMWORK_CRM_CLIENT_ID} - TEAMWORK_CRM_CLIENT_SECRET: ${TEAMWORK_CRM_CLIENT_SECRET} - AHA_TICKETING_CLIENT_ID: ${AHA_TICKETING_CLIENT_ID} - AHA_TICKETING_CLIENT_SECRET: ${AHA_TICKETING_CLIENT_SECRET} - AHA_TICKETING_SUBDOMAIN: ${AHA_TICKETING_SUBDOMAIN} - WRIKE_TICKETING_CLOUD_CLIENT_ID: ${WRIKE_TICKETING_CLOUD_CLIENT_ID} - WRIKE_TICKETING_CLOUD_CLIENT_SECRET: ${WRIKE_TICKETING_CLOUD_CLIENT_SECRET} - ASANA_TICKETING_CLOUD_CLIENT_ID: ${ASANA_TICKETING_CLOUD_CLIENT_ID} - ASANA_TICKETING_CLOUD_CLIENT_SECRET: ${ASANA_TICKETING_CLOUD_CLIENT_SECRET} - PENNYLANE_ACCOUNTING_CLOUD_CLIENT_ID: ${PENNYLANE_ACCOUNTING_CLOUD_CLIENT_ID} - PENNYLANE_ACCOUNTING_CLOUD_CLIENT_SECRET: ${PENNYLANE_ACCOUNTING_CLOUD_CLIENT_SECRET} - FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_ID: ${FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_ID} - FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET: ${FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET} - FREEAGENT_ACCOUNTING_CLOUD_CLIENT_ID: ${FREEAGENT_ACCOUNTING_CLOUD_CLIENT_ID} - FREEAGENT_ACCOUNTING_CLOUD_CLIENT_SECRET: ${FREEAGENT_ACCOUNTING_CLOUD_CLIENT_SECRET} - SAGE_ACCOUNTING_CLOUD_CLIENT_ID: ${SAGE_ACCOUNTING_CLOUD_CLIENT_ID} - SAGE_ACCOUNTING_CLOUD_CLIENT_SECRET: ${SAGE_ACCOUNTING_CLOUD_CLIENT_SECRET} - MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_ID: ${MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_ID} - MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_SECRET: ${MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_SECRET} - QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_ID: ${QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_ID} - QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET: ${QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET} - WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_ID: ${WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_ID} - WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_SECRET: ${WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_SECRET} - GETRESPONSE_MARKETING_AUTOMATION_CLOUD_CLIENT_ID: ${GETRESPONSE_MARKETING_AUTOMATION_CLOUD_CLIENT_ID} - GETRESPONSE_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET: ${GETRESPONSE_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET} - MAILCHIMP_MARKETING_AUTOMATION_CLOUD_CLIENT_ID: ${MAILCHIMP_MARKETING_AUTOMATION_CLOUD_CLIENT_ID} - MAILCHIMP_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET: ${MAILCHIMP_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET} - PODIUM_MARKETING_AUTOMATION_CLOUD_CLIENT_ID: ${PODIUM_MARKETING_AUTOMATION_CLOUD_CLIENT_ID} - PODIUM_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET: ${PODIUM_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET} - - - - restart: - unless-stopped + environment: + DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB}?ssl=false + DISTRIBUTION: ${DISTRIBUTION} + JWT_SECRET: ${JWT_SECRET} + REDIS_HOST: redis + ENCRYPT_CRYPTO_SECRET_KEY: ${ENCRYPT_CRYPTO_SECRET_KEY} + HUBSPOT_CRM_CLOUD_CLIENT_ID: ${HUBSPOT_CRM_CLOUD_CLIENT_ID} + HUBSPOT_CRM_CLOUD_CLIENT_SECRET: ${HUBSPOT_CRM_CLOUD_CLIENT_SECRET} + ATTIO_CRM_CLOUD_CLIENT_ID: ${ATTIO_CRM_CLOUD_CLIENT_ID} + ATTIO_CRM_CLOUD_CLIENT_SECRET: ${ATTIO_CRM_CLOUD_CLIENT_SECRET} + ZOHO_CRM_CLOUD_CLIENT_ID: ${ZOHO_CRM_CLOUD_CLIENT_ID} + ZOHO_CRM_CLOUD_CLIENT_SECRET: ${ZOHO_CRM_CLOUD_CLIENT_SECRET} + PIPEDRIVE_CRM_CLOUD_CLIENT_ID: ${PIPEDRIVE_CRM_CLOUD_CLIENT_ID} + PIPEDRIVE_CRM_CLOUD_CLIENT_SECRET: ${PIPEDRIVE_CRM_CLOUD_CLIENT_SECRET} + ZENDESK_CRM_CLOUD_CLIENT_ID: ${ZENDESK_CRM_CLOUD_CLIENT_ID} + ZENDESK_CRM_CLOUD_CLIENT_SECRET: ${ZENDESK_CRM_CLOUD_CLIENT_SECRET} + OAUTH_REDIRECT_BASE: ${OAUTH_REDIRECT_BASE} + ZENDESK_TICKETING_CLOUD_CLIENT_ID: ${ZENDESK_TICKETING_CLOUD_CLIENT_ID} + ZENDESK_TICKETING_CLOUD_CLIENT_SECRET: ${ZENDESK_TICKETING_CLOUD_CLIENT_SECRET} + ZENDESK_TICKETING_CLOUD_SUBDOMAIN: ${ZENDESK_TICKETING_CLOUD_SUBDOMAIN} + FRONT_TICKETING_CLOUD_CLIENT_ID: ${FRONT_TICKETING_CLOUD_CLIENT_ID} + FRONT_TICKETING_CLOUD_CLIENT_SECRET: ${FRONT_TICKETING_CLOUD_CLIENT_SECRET} + CLICKUP_TICKETING_CLOUD_CLIENT_ID: ${CLICKUP_TICKETING_CLOUD_CLIENT_ID} + CLICKUP_TICKETING_CLOUD_CLIENT_SECRET: ${CLICKUP_TICKETING_CLOUD_CLIENT_SECRET} + GITHUB_TICKETING_CLOUD_CLIENT_ID: ${GITHUB_TICKETING_CLOUD_CLIENT_ID} + GITHUB_TICKETING_CLOUD_CLIENT_SECRET: ${GITHUB_TICKETING_CLOUD_CLIENT_SECRET} + GITLAB_TICKETING_CLOUD_CLIENT_ID: ${GITLAB_TICKETING_CLOUD_CLIENT_ID} + GITLAB_TICKETING_CLOUD_CLIENT_SECRET: ${GITLAB_TICKETING_CLOUD_CLIENT_SECRET} + GORGIAS_TICKETING_CLOUD_CLIENT_ID: ${GORGIAS_TICKETING_CLOUD_CLIENT_ID} + GORGIAS_TICKETING_CLOUD_CLIENT_SECRET: ${GORGIAS_TICKETING_CLOUD_CLIENT_SECRET} + GORGIAS_TICKETING_CLOUD_SUBDOMAIN: ${GORGIAS_TICKETING_CLOUD_SUBDOMAIN} + JIRA_TICKETING_CLOUD_CLIENT_ID: ${JIRA_TICKETING_CLOUD_CLIENT_ID} + JIRA_TICKETING_CLOUD_CLIENT_SECRET: ${JIRA_TICKETING_CLOUD_CLIENT_SECRET} + JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_ID: ${JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_ID} + JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_SECRET: ${JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_SECRET} + LINEAR_TICKETING_CLOUD_CLIENT_ID: ${LINEAR_TICKETING_CLOUD_CLIENT_ID} + LINEAR_TICKETING_CLOUD_CLIENT_SECRET: ${LINEAR_TICKETING_CLOUD_CLIENT_SECRET} + ACCELO_CRM_CLOUD_CLIENT_ID: ${ACCELO_CRM_CLOUD_CLIENT_ID} + ACCELO_CRM_CLOUD_CLIENT_SECRET: ${ACCELO_CRM_CLOUD_CLIENT_SECRET} + ACCELO_CRM_CLOUD_SUBDOMAIN: ${ACCELO_CRM_CLOUD_SUBDOMAIN} + CAPSULE_CRM_CLOUD_CLIENT_ID: ${CAPSULE_CRM_CLOUD_CLIENT_ID} + CAPSULE_CRM_CLOUD_CLIENT_SECRET: ${CAPSULE_CRM_CLOUD_CLIENT_SECRET} + CLOSE_CRM_CLOUD_CLIENT_ID: ${CLOSE_CRM_CLOUD_CLIENT_ID} + CLOSE_CRM_CLOUD_CLIENT_SECRET: ${CLOSE_CRM_CLOUD_CLIENT_SECRET} + COPPER_CRM_CLOUD_CLIENT_ID: ${COPPER_CRM_CLOUD_CLIENT_ID} + COPPER_CRM_CLOUD_CLIENT_SECRET: ${COPPER_CRM_CLOUD_CLIENT_SECRET} + KEAP_CRM_CLOUD_CLIENT_ID: ${KEAP_CRM_CLOUD_CLIENT_ID} + KEAP_CRM_CLOUD_CLIENT_SECRET: ${KEAP_CRM_CLOUD_CLIENT_SECRET} + TEAMLEADER_CRM_CLOUD_CLIENT_ID: ${TEAMLEADER_CRM_CLOUD_CLIENT_ID} + TEAMLEADER_CRM_CLOUD_CLIENT_SECRET: ${TEAMLEADER_CRM_CLOUD_CLIENT_SECRET} + TEAMWORK_CRM_CLOUD_CLIENT_ID: ${TEAMWORK_CRM_CLOUD_CLIENT_ID} + TEAMWORK_CRM_CLOUD_CLIENT_SECRET: ${TEAMWORK_CRM_CLOUD_CLIENT_SECRET} + AHA_TICKETING_CLOUD_CLIENT_ID: ${AHA_TICKETING_CLOUD_CLIENT_ID} + AHA_TICKETING_CLOUD_CLIENT_SECRET: ${AHA_TICKETING_CLOUD_CLIENT_SECRET} + AHA_TICKETING_CLOUD_SUBDOMAIN: ${AHA_TICKETING_CLOUD_SUBDOMAIN} + WRIKE_TICKETING_CLOUD_CLIENT_ID: ${WRIKE_TICKETING_CLOUD_CLIENT_ID} + WRIKE_TICKETING_CLOUD_CLIENT_SECRET: ${WRIKE_TICKETING_CLOUD_CLIENT_SECRET} + ASANA_TICKETING_CLOUD_CLIENT_ID: ${ASANA_TICKETING_CLOUD_CLIENT_ID} + ASANA_TICKETING_CLOUD_CLIENT_SECRET: ${ASANA_TICKETING_CLOUD_CLIENT_SECRET} + PENNYLANE_ACCOUNTING_CLOUD_CLIENT_ID: ${PENNYLANE_ACCOUNTING_CLOUD_CLIENT_ID} + PENNYLANE_ACCOUNTING_CLOUD_CLIENT_SECRET: ${PENNYLANE_ACCOUNTING_CLOUD_CLIENT_SECRET} + FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_ID: ${FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_ID} + FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET: ${FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET} + FREEAGENT_ACCOUNTING_CLOUD_CLIENT_ID: ${FREEAGENT_ACCOUNTING_CLOUD_CLIENT_ID} + FREEAGENT_ACCOUNTING_CLOUD_CLIENT_SECRET: ${FREEAGENT_ACCOUNTING_CLOUD_CLIENT_SECRET} + SAGE_ACCOUNTING_CLOUD_CLIENT_ID: ${SAGE_ACCOUNTING_CLOUD_CLIENT_ID} + SAGE_ACCOUNTING_CLOUD_CLIENT_SECRET: ${SAGE_ACCOUNTING_CLOUD_CLIENT_SECRET} + MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_ID: ${MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_ID} + MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_SECRET: ${MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_SECRET} + QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_ID: ${QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_ID} + QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET: ${QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET} + WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_ID: ${WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_ID} + WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_SECRET: ${WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_SECRET} + GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_ID: ${GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_ID} + GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET: ${GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET} + MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID: ${MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID} + MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET: ${MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET} + PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_ID: ${PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_ID} + PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET: ${PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET} + + restart: unless-stopped ports: - 3000:3000 depends_on: - postgres: - condition: service_healthy + postgres: + condition: service_healthy networks: - backend volumes: @@ -126,8 +123,8 @@ services: test: ["CMD", "curl", "-f", "http://localhost:3000/"] interval: 10s timeout: 5s - retries: 1000 # Try launching the API service as long as possible. Required for other services to start - + retries: 1000 # Try launching the API service as long as possible. Required for other services to start + redis: image: valkey/valkey:7.2-alpine container_name: "Redis" @@ -137,7 +134,7 @@ services: - ./redis-data:/data networks: - backend - + webapp-nextjs: build: dockerfile: ./apps/client-ts/Dockerfile.dev @@ -154,8 +151,7 @@ services: NEXT_PUBLIC_STYTCH_PROJECT_ENV: ${NEXT_PUBLIC_STYTCH_PROJECT_ENV} NEXT_PUBLIC_MAGIC_LINK_DOMAIN: ${NEXT_PUBLIC_MAGIC_LINK_DOMAIN} NEXT_PUBLIC_WEBAPP_DOMAIN: ${NEXT_PUBLIC_WEBAPP_DOMAIN} - restart: - unless-stopped + restart: unless-stopped ports: - 80:8090 depends_on: @@ -167,15 +163,14 @@ services: networks: - backend - frontend - + magic-link-frontend: build: dockerfile: ./apps/magic-link/Dockerfile.dev context: ./ args: VITE_BACKEND_DOMAIN: ${NEXT_PUBLIC_BACKEND_DOMAIN} - restart: - always + restart: always ports: - 81:5173 depends_on: @@ -187,7 +182,6 @@ services: volumes: - .:/app - networks: frontend: backend: diff --git a/docker-compose.source.yml b/docker-compose.source.yml index 0f64c2933..d5181a88b 100644 --- a/docker-compose.source.yml +++ b/docker-compose.source.yml @@ -35,55 +35,55 @@ services: JWT_SECRET: ${JWT_SECRET} REDIS_HOST: redis ENCRYPT_CRYPTO_SECRET_KEY: ${ENCRYPT_CRYPTO_SECRET_KEY} - HUBSPOT_CRM_CLIENT_ID: ${HUBSPOT_CRM_CLIENT_ID} - HUBSPOT_CRM_CLIENT_SECRET: ${HUBSPOT_CRM_CLIENT_SECRET} - ATTIO_CRM_CLIENT_ID: ${ATTIO_CRM_CLIENT_ID} - ATTIO_CRM_CLIENT_SECRET: ${ATTIO_CRM_CLIENT_SECRET} - ZOHO_CRM_CLIENT_ID: ${ZOHO_CRM_CLIENT_ID} - ZOHO_CRM_CLIENT_SECRET: ${ZOHO_CRM_CLIENT_SECRET} - PIPEDRIVE_CRM_CLIENT_ID: ${PIPEDRIVE_CRM_CLIENT_ID} - PIPEDRIVE_CRM_CLIENT_SECRET: ${PIPEDRIVE_CRM_CLIENT_SECRET} - ZENDESK_CRM_CLIENT_ID: ${ZENDESK_CRM_CLIENT_ID} - ZENDESK_CRM_CLIENT_SECRET: ${ZENDESK_CRM_CLIENT_SECRET} + HUBSPOT_CRM_CLOUD_CLIENT_ID: ${HUBSPOT_CRM_CLOUD_CLIENT_ID} + HUBSPOT_CRM_CLOUD_CLIENT_SECRET: ${HUBSPOT_CRM_CLOUD_CLIENT_SECRET} + ATTIO_CRM_CLOUD_CLIENT_ID: ${ATTIO_CRM_CLOUD_CLIENT_ID} + ATTIO_CRM_CLOUD_CLIENT_SECRET: ${ATTIO_CRM_CLOUD_CLIENT_SECRET} + ZOHO_CRM_CLOUD_CLIENT_ID: ${ZOHO_CRM_CLOUD_CLIENT_ID} + ZOHO_CRM_CLOUD_CLIENT_SECRET: ${ZOHO_CRM_CLOUD_CLIENT_SECRET} + PIPEDRIVE_CRM_CLOUD_CLIENT_ID: ${PIPEDRIVE_CRM_CLOUD_CLIENT_ID} + PIPEDRIVE_CRM_CLOUD_CLIENT_SECRET: ${PIPEDRIVE_CRM_CLOUD_CLIENT_SECRET} + ZENDESK_CRM_CLOUD_CLIENT_ID: ${ZENDESK_CRM_CLOUD_CLIENT_ID} + ZENDESK_CRM_CLOUD_CLIENT_SECRET: ${ZENDESK_CRM_CLOUD_CLIENT_SECRET} OAUTH_REDIRECT_BASE: ${OAUTH_REDIRECT_BASE} - ZENDESK_TICKETING_CLIENT_ID: ${ZENDESK_TICKETING_CLIENT_ID} - ZENDESK_TICKETING_CLIENT_SECRET: ${ZENDESK_TICKETING_CLIENT_SECRET} - ZENDESK_TICKETING_SUBDOMAIN: ${ZENDESK_TICKETING_SUBDOMAIN} - FRONT_TICKETING_CLIENT_ID: ${FRONT_TICKETING_CLIENT_ID} - FRONT_TICKETING_CLIENT_SECRET: ${FRONT_TICKETING_CLIENT_SECRET} - CLICKUP_TICKETING_CLIENT_ID: ${CLICKUP_TICKETING_CLIENT_ID} - CLICKUP_TICKETING_CLIENT_SECRET: ${CLICKUP_TICKETING_CLIENT_SECRET} - GITHUB_TICKETING_CLIENT_ID: ${GITHUB_TICKETING_CLIENT_ID} - GITHUB_TICKETING_CLIENT_SECRET: ${GITHUB_TICKETING_CLIENT_SECRET} - GITLAB_TICKETING_CLIENT_ID: ${GITLAB_TICKETING_CLIENT_ID} - GITLAB_TICKETING_CLIENT_SECRET: ${GITLAB_TICKETING_CLIENT_SECRET} - GORGIAS_TICKETING_CLIENT_ID: ${GORGIAS_TICKETING_CLIENT_ID} - GORGIAS_TICKETING_CLIENT_SECRET: ${GORGIAS_TICKETING_CLIENT_SECRET} - GORGIAS_TICKETING_SUBDOMAIN: ${GORGIAS_TICKETING_SUBDOMAIN} - JIRA_TICKETING_CLIENT_ID: ${JIRA_TICKETING_CLIENT_ID} - JIRA_TICKETING_CLIENT_SECRET: ${JIRA_TICKETING_CLIENT_SECRET} - JIRA_SERVICE_MGMT_TICKETING_CLIENT_ID: ${JIRA_SERVICE_MGMT_TICKETING_CLIENT_ID} - JIRA_SERVICE_MGMT_TICKETING_CLIENT_SECRET: ${JIRA_SERVICE_MGMT_TICKETING_CLIENT_SECRET} - LINEAR_TICKETING_CLIENT_ID: ${LINEAR_TICKETING_CLIENT_ID} - LINEAR_TICKETING_CLIENT_SECRET: ${LINEAR_TICKETING_CLIENT_SECRET} - ACCELO_CRM_CLIENT_ID: ${ACCELO_CRM_CLIENT_ID} - ACCELO_CRM_CLIENT_SECRET: ${ACCELO_CRM_CLIENT_SECRET} - ACCELO_CRM_SUBDOMAIN: ${ACCELO_CRM_SUBDOMAIN} - CAPSULE_CRM_CLIENT_ID: ${CAPSULE_CRM_CLIENT_ID} - CAPSULE_CRM_CLIENT_SECRET: ${CAPSULE_CRM_CLIENT_SECRET} - CLOSE_CRM_CLIENT_ID: ${CLOSE_CRM_CLIENT_ID} - CLOSE_CRM_CLIENT_SECRET: ${CLOSE_CRM_CLIENT_SECRET} - COPPER_CRM_CLIENT_ID: ${COPPER_CRM_CLIENT_ID} - COPPER_CRM_CLIENT_SECRET: ${COPPER_CRM_CLIENT_SECRET} - KEAP_CRM_CLIENT_ID: ${KEAP_CRM_CLIENT_ID} - KEAP_CRM_CLIENT_SECRET: ${KEAP_CRM_CLIENT_SECRET} - TEAMLEADER_CRM_CLIENT_ID: ${TEAMLEADER_CRM_CLIENT_ID} - TEAMLEADER_CRM_CLIENT_SECRET: ${TEAMLEADER_CRM_CLIENT_SECRET} - TEAMWORK_CRM_CLIENT_ID: ${TEAMWORK_CRM_CLIENT_ID} - TEAMWORK_CRM_CLIENT_SECRET: ${TEAMWORK_CRM_CLIENT_SECRET} - AHA_TICKETING_CLIENT_ID: ${AHA_TICKETING_CLIENT_ID} - AHA_TICKETING_CLIENT_SECRET: ${AHA_TICKETING_CLIENT_SECRET} - AHA_TICKETING_SUBDOMAIN: ${AHA_TICKETING_SUBDOMAIN} + ZENDESK_TICKETING_CLOUD_CLIENT_ID: ${ZENDESK_TICKETING_CLOUD_CLIENT_ID} + ZENDESK_TICKETING_CLOUD_CLIENT_SECRET: ${ZENDESK_TICKETING_CLOUD_CLIENT_SECRET} + ZENDESK_TICKETING_CLOUD_SUBDOMAIN: ${ZENDESK_TICKETING_CLOUD_SUBDOMAIN} + FRONT_TICKETING_CLOUD_CLIENT_ID: ${FRONT_TICKETING_CLOUD_CLIENT_ID} + FRONT_TICKETING_CLOUD_CLIENT_SECRET: ${FRONT_TICKETING_CLOUD_CLIENT_SECRET} + CLICKUP_TICKETING_CLOUD_CLIENT_ID: ${CLICKUP_TICKETING_CLOUD_CLIENT_ID} + CLICKUP_TICKETING_CLOUD_CLIENT_SECRET: ${CLICKUP_TICKETING_CLOUD_CLIENT_SECRET} + GITHUB_TICKETING_CLOUD_CLIENT_ID: ${GITHUB_TICKETING_CLOUD_CLIENT_ID} + GITHUB_TICKETING_CLOUD_CLIENT_SECRET: ${GITHUB_TICKETING_CLOUD_CLIENT_SECRET} + GITLAB_TICKETING_CLOUD_CLIENT_ID: ${GITLAB_TICKETING_CLOUD_CLIENT_ID} + GITLAB_TICKETING_CLOUD_CLIENT_SECRET: ${GITLAB_TICKETING_CLOUD_CLIENT_SECRET} + GORGIAS_TICKETING_CLOUD_CLIENT_ID: ${GORGIAS_TICKETING_CLOUD_CLIENT_ID} + GORGIAS_TICKETING_CLOUD_CLIENT_SECRET: ${GORGIAS_TICKETING_CLOUD_CLIENT_SECRET} + GORGIAS_TICKETING_CLOUD_SUBDOMAIN: ${GORGIAS_TICKETING_CLOUD_SUBDOMAIN} + JIRA_TICKETING_CLOUD_CLIENT_ID: ${JIRA_TICKETING_CLOUD_CLIENT_ID} + JIRA_TICKETING_CLOUD_CLIENT_SECRET: ${JIRA_TICKETING_CLOUD_CLIENT_SECRET} + JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_ID: ${JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_ID} + JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_SECRET: ${JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_SECRET} + LINEAR_TICKETING_CLOUD_CLIENT_ID: ${LINEAR_TICKETING_CLOUD_CLIENT_ID} + LINEAR_TICKETING_CLOUD_CLIENT_SECRET: ${LINEAR_TICKETING_CLOUD_CLIENT_SECRET} + ACCELO_CRM_CLOUD_CLIENT_ID: ${ACCELO_CRM_CLOUD_CLIENT_ID} + ACCELO_CRM_CLOUD_CLIENT_SECRET: ${ACCELO_CRM_CLOUD_CLIENT_SECRET} + ACCELO_CRM_CLOUD_SUBDOMAIN: ${ACCELO_CRM_CLOUD_SUBDOMAIN} + CAPSULE_CRM_CLOUD_CLIENT_ID: ${CAPSULE_CRM_CLOUD_CLIENT_ID} + CAPSULE_CRM_CLOUD_CLIENT_SECRET: ${CAPSULE_CRM_CLOUD_CLIENT_SECRET} + CLOSE_CRM_CLOUD_CLIENT_ID: ${CLOSE_CRM_CLOUD_CLIENT_ID} + CLOSE_CRM_CLOUD_CLIENT_SECRET: ${CLOSE_CRM_CLOUD_CLIENT_SECRET} + COPPER_CRM_CLOUD_CLIENT_ID: ${COPPER_CRM_CLOUD_CLIENT_ID} + COPPER_CRM_CLOUD_CLIENT_SECRET: ${COPPER_CRM_CLOUD_CLIENT_SECRET} + KEAP_CRM_CLOUD_CLIENT_ID: ${KEAP_CRM_CLOUD_CLIENT_ID} + KEAP_CRM_CLOUD_CLIENT_SECRET: ${KEAP_CRM_CLOUD_CLIENT_SECRET} + TEAMLEADER_CRM_CLOUD_CLIENT_ID: ${TEAMLEADER_CRM_CLOUD_CLIENT_ID} + TEAMLEADER_CRM_CLOUD_CLIENT_SECRET: ${TEAMLEADER_CRM_CLOUD_CLIENT_SECRET} + TEAMWORK_CRM_CLOUD_CLIENT_ID: ${TEAMWORK_CRM_CLOUD_CLIENT_ID} + TEAMWORK_CRM_CLOUD_CLIENT_SECRET: ${TEAMWORK_CRM_CLOUD_CLIENT_SECRET} + AHA_TICKETING_CLOUD_CLIENT_ID: ${AHA_TICKETING_CLOUD_CLIENT_ID} + AHA_TICKETING_CLOUD_CLIENT_SECRET: ${AHA_TICKETING_CLOUD_CLIENT_SECRET} + AHA_TICKETING_CLOUD_SUBDOMAIN: ${AHA_TICKETING_CLOUD_SUBDOMAIN} WRIKE_TICKETING_CLOUD_CLIENT_ID: ${WRIKE_TICKETING_CLOUD_CLIENT_ID} WRIKE_TICKETING_CLOUD_CLIENT_SECRET: ${WRIKE_TICKETING_CLOUD_CLIENT_SECRET} ASANA_TICKETING_CLOUD_CLIENT_ID: ${ASANA_TICKETING_CLOUD_CLIENT_ID} @@ -102,16 +102,13 @@ services: QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET: ${QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET} WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_ID: ${WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_ID} WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_SECRET: ${WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_SECRET} - GETRESPONSE_MARKETING_AUTOMATION_CLOUD_CLIENT_ID: ${GETRESPONSE_MARKETING_AUTOMATION_CLOUD_CLIENT_ID} - GETRESPONSE_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET: ${GETRESPONSE_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET} - MAILCHIMP_MARKETING_AUTOMATION_CLOUD_CLIENT_ID: ${MAILCHIMP_MARKETING_AUTOMATION_CLOUD_CLIENT_ID} - MAILCHIMP_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET: ${MAILCHIMP_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET} - PODIUM_MARKETING_AUTOMATION_CLOUD_CLIENT_ID: ${PODIUM_MARKETING_AUTOMATION_CLOUD_CLIENT_ID} - PODIUM_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET: ${PODIUM_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET} - - - - + GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_ID: ${GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_ID} + GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET: ${GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET} + MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID: ${MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID} + MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET: ${MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET} + PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_ID: ${PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_ID} + PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET: ${PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET} + restart: unless-stopped ports: - 3000:3000 diff --git a/docker-compose.yml b/docker-compose.yml index 4e500a7fa..13943c02f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,5 @@ name: panora -version: '3.8' +version: "3.8" services: postgres: @@ -24,99 +24,95 @@ services: api: image: panoradotdev/backend-api:selfhosted - environment: - DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB}?ssl=false - DISTRIBUTION: ${DISTRIBUTION} - JWT_SECRET: ${JWT_SECRET} - REDIS_HOST: redis - ENCRYPT_CRYPTO_SECRET_KEY: ${ENCRYPT_CRYPTO_SECRET_KEY} - HUBSPOT_CRM_CLIENT_ID: ${HUBSPOT_CRM_CLIENT_ID} - HUBSPOT_CRM_CLIENT_SECRET: ${HUBSPOT_CRM_CLIENT_SECRET} - ATTIO_CRM_CLIENT_ID: ${ATTIO_CRM_CLIENT_ID} - ATTIO_CRM_CLIENT_SECRET: ${ATTIO_CRM_CLIENT_SECRET} - ZOHO_CRM_CLIENT_ID: ${ZOHO_CRM_CLIENT_ID} - ZOHO_CRM_CLIENT_SECRET: ${ZOHO_CRM_CLIENT_SECRET} - PIPEDRIVE_CRM_CLIENT_ID: ${PIPEDRIVE_CRM_CLIENT_ID} - PIPEDRIVE_CRM_CLIENT_SECRET: ${PIPEDRIVE_CRM_CLIENT_SECRET} - ZENDESK_CRM_CLIENT_ID: ${ZENDESK_CRM_CLIENT_ID} - ZENDESK_CRM_CLIENT_SECRET: ${ZENDESK_CRM_CLIENT_SECRET} - OAUTH_REDIRECT_BASE: ${OAUTH_REDIRECT_BASE} - ZENDESK_TICKETING_CLIENT_ID: ${ZENDESK_TICKETING_CLIENT_ID} - ZENDESK_TICKETING_CLIENT_SECRET: ${ZENDESK_TICKETING_CLIENT_SECRET} - ZENDESK_TICKETING_SUBDOMAIN: ${ZENDESK_TICKETING_SUBDOMAIN} - FRONT_TICKETING_CLIENT_ID: ${FRONT_TICKETING_CLIENT_ID} - FRONT_TICKETING_CLIENT_SECRET: ${FRONT_TICKETING_CLIENT_SECRET} - CLICKUP_TICKETING_CLIENT_ID: ${CLICKUP_TICKETING_CLIENT_ID} - CLICKUP_TICKETING_CLIENT_SECRET: ${CLICKUP_TICKETING_CLIENT_SECRET} - GITHUB_TICKETING_CLIENT_ID: ${GITHUB_TICKETING_CLIENT_ID} - GITHUB_TICKETING_CLIENT_SECRET: ${GITHUB_TICKETING_CLIENT_SECRET} - GITLAB_TICKETING_CLIENT_ID: ${GITLAB_TICKETING_CLIENT_ID} - GITLAB_TICKETING_CLIENT_SECRET: ${GITLAB_TICKETING_CLIENT_SECRET} - GORGIAS_TICKETING_CLIENT_ID: ${GORGIAS_TICKETING_CLIENT_ID} - GORGIAS_TICKETING_CLIENT_SECRET: ${GORGIAS_TICKETING_CLIENT_SECRET} - GORGIAS_TICKETING_SUBDOMAIN: ${GORGIAS_TICKETING_SUBDOMAIN} - JIRA_TICKETING_CLIENT_ID: ${JIRA_TICKETING_CLIENT_ID} - JIRA_TICKETING_CLIENT_SECRET: ${JIRA_TICKETING_CLIENT_SECRET} - JIRA_SERVICE_MGMT_TICKETING_CLIENT_ID: ${JIRA_SERVICE_MGMT_TICKETING_CLIENT_ID} - JIRA_SERVICE_MGMT_TICKETING_CLIENT_SECRET: ${JIRA_SERVICE_MGMT_TICKETING_CLIENT_SECRET} - LINEAR_TICKETING_CLIENT_ID: ${LINEAR_TICKETING_CLIENT_ID} - LINEAR_TICKETING_CLIENT_SECRET: ${LINEAR_TICKETING_CLIENT_SECRET} - ACCELO_CRM_CLIENT_ID: ${ACCELO_CRM_CLIENT_ID} - ACCELO_CRM_CLIENT_SECRET: ${ACCELO_CRM_CLIENT_SECRET} - ACCELO_CRM_SUBDOMAIN: ${ACCELO_CRM_SUBDOMAIN} - CAPSULE_CRM_CLIENT_ID: ${CAPSULE_CRM_CLIENT_ID} - CAPSULE_CRM_CLIENT_SECRET: ${CAPSULE_CRM_CLIENT_SECRET} - CLOSE_CRM_CLIENT_ID: ${CLOSE_CRM_CLIENT_ID} - CLOSE_CRM_CLIENT_SECRET: ${CLOSE_CRM_CLIENT_SECRET} - COPPER_CRM_CLIENT_ID: ${COPPER_CRM_CLIENT_ID} - COPPER_CRM_CLIENT_SECRET: ${COPPER_CRM_CLIENT_SECRET} - KEAP_CRM_CLIENT_ID: ${KEAP_CRM_CLIENT_ID} - KEAP_CRM_CLIENT_SECRET: ${KEAP_CRM_CLIENT_SECRET} - TEAMLEADER_CRM_CLIENT_ID: ${TEAMLEADER_CRM_CLIENT_ID} - TEAMLEADER_CRM_CLIENT_SECRET: ${TEAMLEADER_CRM_CLIENT_SECRET} - TEAMWORK_CRM_CLIENT_ID: ${TEAMWORK_CRM_CLIENT_ID} - TEAMWORK_CRM_CLIENT_SECRET: ${TEAMWORK_CRM_CLIENT_SECRET} - AHA_TICKETING_CLIENT_ID: ${AHA_TICKETING_CLIENT_ID} - AHA_TICKETING_CLIENT_SECRET: ${AHA_TICKETING_CLIENT_SECRET} - AHA_TICKETING_SUBDOMAIN: ${AHA_TICKETING_SUBDOMAIN} - WRIKE_TICKETING_CLOUD_CLIENT_ID: ${WRIKE_TICKETING_CLOUD_CLIENT_ID} - WRIKE_TICKETING_CLOUD_CLIENT_SECRET: ${WRIKE_TICKETING_CLOUD_CLIENT_SECRET} - ASANA_TICKETING_CLOUD_CLIENT_ID: ${ASANA_TICKETING_CLOUD_CLIENT_ID} - ASANA_TICKETING_CLOUD_CLIENT_SECRET: ${ASANA_TICKETING_CLOUD_CLIENT_SECRET} - PENNYLANE_ACCOUNTING_CLOUD_CLIENT_ID: ${PENNYLANE_ACCOUNTING_CLOUD_CLIENT_ID} - PENNYLANE_ACCOUNTING_CLOUD_CLIENT_SECRET: ${PENNYLANE_ACCOUNTING_CLOUD_CLIENT_SECRET} - FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_ID: ${FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_ID} - FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET: ${FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET} - FREEAGENT_ACCOUNTING_CLOUD_CLIENT_ID: ${FREEAGENT_ACCOUNTING_CLOUD_CLIENT_ID} - FREEAGENT_ACCOUNTING_CLOUD_CLIENT_SECRET: ${FREEAGENT_ACCOUNTING_CLOUD_CLIENT_SECRET} - SAGE_ACCOUNTING_CLOUD_CLIENT_ID: ${SAGE_ACCOUNTING_CLOUD_CLIENT_ID} - SAGE_ACCOUNTING_CLOUD_CLIENT_SECRET: ${SAGE_ACCOUNTING_CLOUD_CLIENT_SECRET} - MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_ID: ${MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_ID} - MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_SECRET: ${MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_SECRET} - QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_ID: ${QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_ID} - QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET: ${QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET} - WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_ID: ${WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_ID} - WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_SECRET: ${WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_SECRET} - GETRESPONSE_MARKETING_AUTOMATION_CLOUD_CLIENT_ID: ${GETRESPONSE_MARKETING_AUTOMATION_CLOUD_CLIENT_ID} - GETRESPONSE_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET: ${GETRESPONSE_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET} - MAILCHIMP_MARKETING_AUTOMATION_CLOUD_CLIENT_ID: ${MAILCHIMP_MARKETING_AUTOMATION_CLOUD_CLIENT_ID} - MAILCHIMP_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET: ${MAILCHIMP_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET} - PODIUM_MARKETING_AUTOMATION_CLOUD_CLIENT_ID: ${PODIUM_MARKETING_AUTOMATION_CLOUD_CLIENT_ID} - PODIUM_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET: ${PODIUM_MARKETING_AUTOMATION_CLOUD_CLIENT_SECRET} - - - - - restart: - unless-stopped + environment: + DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB}?ssl=false + DISTRIBUTION: ${DISTRIBUTION} + JWT_SECRET: ${JWT_SECRET} + REDIS_HOST: redis + ENCRYPT_CRYPTO_SECRET_KEY: ${ENCRYPT_CRYPTO_SECRET_KEY} + HUBSPOT_CRM_CLOUD_CLIENT_ID: ${HUBSPOT_CRM_CLOUD_CLIENT_ID} + HUBSPOT_CRM_CLOUD_CLIENT_SECRET: ${HUBSPOT_CRM_CLOUD_CLIENT_SECRET} + ATTIO_CRM_CLOUD_CLIENT_ID: ${ATTIO_CRM_CLOUD_CLIENT_ID} + ATTIO_CRM_CLOUD_CLIENT_SECRET: ${ATTIO_CRM_CLOUD_CLIENT_SECRET} + ZOHO_CRM_CLOUD_CLIENT_ID: ${ZOHO_CRM_CLOUD_CLIENT_ID} + ZOHO_CRM_CLOUD_CLIENT_SECRET: ${ZOHO_CRM_CLOUD_CLIENT_SECRET} + PIPEDRIVE_CRM_CLOUD_CLIENT_ID: ${PIPEDRIVE_CRM_CLOUD_CLIENT_ID} + PIPEDRIVE_CRM_CLOUD_CLIENT_SECRET: ${PIPEDRIVE_CRM_CLOUD_CLIENT_SECRET} + ZENDESK_CRM_CLOUD_CLIENT_ID: ${ZENDESK_CRM_CLOUD_CLIENT_ID} + ZENDESK_CRM_CLOUD_CLIENT_SECRET: ${ZENDESK_CRM_CLOUD_CLIENT_SECRET} + OAUTH_REDIRECT_BASE: ${OAUTH_REDIRECT_BASE} + ZENDESK_TICKETING_CLOUD_CLIENT_ID: ${ZENDESK_TICKETING_CLOUD_CLIENT_ID} + ZENDESK_TICKETING_CLOUD_CLIENT_SECRET: ${ZENDESK_TICKETING_CLOUD_CLIENT_SECRET} + ZENDESK_TICKETING_CLOUD_SUBDOMAIN: ${ZENDESK_TICKETING_CLOUD_SUBDOMAIN} + FRONT_TICKETING_CLOUD_CLIENT_ID: ${FRONT_TICKETING_CLOUD_CLIENT_ID} + FRONT_TICKETING_CLOUD_CLIENT_SECRET: ${FRONT_TICKETING_CLOUD_CLIENT_SECRET} + CLICKUP_TICKETING_CLOUD_CLIENT_ID: ${CLICKUP_TICKETING_CLOUD_CLIENT_ID} + CLICKUP_TICKETING_CLOUD_CLIENT_SECRET: ${CLICKUP_TICKETING_CLOUD_CLIENT_SECRET} + GITHUB_TICKETING_CLOUD_CLIENT_ID: ${GITHUB_TICKETING_CLOUD_CLIENT_ID} + GITHUB_TICKETING_CLOUD_CLIENT_SECRET: ${GITHUB_TICKETING_CLOUD_CLIENT_SECRET} + GITLAB_TICKETING_CLOUD_CLIENT_ID: ${GITLAB_TICKETING_CLOUD_CLIENT_ID} + GITLAB_TICKETING_CLOUD_CLIENT_SECRET: ${GITLAB_TICKETING_CLOUD_CLIENT_SECRET} + GORGIAS_TICKETING_CLOUD_CLIENT_ID: ${GORGIAS_TICKETING_CLOUD_CLIENT_ID} + GORGIAS_TICKETING_CLOUD_CLIENT_SECRET: ${GORGIAS_TICKETING_CLOUD_CLIENT_SECRET} + GORGIAS_TICKETING_CLOUD_SUBDOMAIN: ${GORGIAS_TICKETING_CLOUD_SUBDOMAIN} + JIRA_TICKETING_CLOUD_CLIENT_ID: ${JIRA_TICKETING_CLOUD_CLIENT_ID} + JIRA_TICKETING_CLOUD_CLIENT_SECRET: ${JIRA_TICKETING_CLOUD_CLIENT_SECRET} + JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_ID: ${JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_ID} + JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_SECRET: ${JIRA_SERVICEMGMT_TICKETING_CLOUD_CLIENT_SECRET} + LINEAR_TICKETING_CLOUD_CLIENT_ID: ${LINEAR_TICKETING_CLOUD_CLIENT_ID} + LINEAR_TICKETING_CLOUD_CLIENT_SECRET: ${LINEAR_TICKETING_CLOUD_CLIENT_SECRET} + ACCELO_CRM_CLOUD_CLIENT_ID: ${ACCELO_CRM_CLOUD_CLIENT_ID} + ACCELO_CRM_CLOUD_CLIENT_SECRET: ${ACCELO_CRM_CLOUD_CLIENT_SECRET} + ACCELO_CRM_CLOUD_SUBDOMAIN: ${ACCELO_CRM_CLOUD_SUBDOMAIN} + CAPSULE_CRM_CLOUD_CLIENT_ID: ${CAPSULE_CRM_CLOUD_CLIENT_ID} + CAPSULE_CRM_CLOUD_CLIENT_SECRET: ${CAPSULE_CRM_CLOUD_CLIENT_SECRET} + CLOSE_CRM_CLOUD_CLIENT_ID: ${CLOSE_CRM_CLOUD_CLIENT_ID} + CLOSE_CRM_CLOUD_CLIENT_SECRET: ${CLOSE_CRM_CLOUD_CLIENT_SECRET} + COPPER_CRM_CLOUD_CLIENT_ID: ${COPPER_CRM_CLOUD_CLIENT_ID} + COPPER_CRM_CLOUD_CLIENT_SECRET: ${COPPER_CRM_CLOUD_CLIENT_SECRET} + KEAP_CRM_CLOUD_CLIENT_ID: ${KEAP_CRM_CLOUD_CLIENT_ID} + KEAP_CRM_CLOUD_CLIENT_SECRET: ${KEAP_CRM_CLOUD_CLIENT_SECRET} + TEAMLEADER_CRM_CLOUD_CLIENT_ID: ${TEAMLEADER_CRM_CLOUD_CLIENT_ID} + TEAMLEADER_CRM_CLOUD_CLIENT_SECRET: ${TEAMLEADER_CRM_CLOUD_CLIENT_SECRET} + TEAMWORK_CRM_CLOUD_CLIENT_ID: ${TEAMWORK_CRM_CLOUD_CLIENT_ID} + TEAMWORK_CRM_CLOUD_CLIENT_SECRET: ${TEAMWORK_CRM_CLOUD_CLIENT_SECRET} + AHA_TICKETING_CLOUD_CLIENT_ID: ${AHA_TICKETING_CLOUD_CLIENT_ID} + AHA_TICKETING_CLOUD_CLIENT_SECRET: ${AHA_TICKETING_CLOUD_CLIENT_SECRET} + AHA_TICKETING_CLOUD_SUBDOMAIN: ${AHA_TICKETING_CLOUD_SUBDOMAIN} + WRIKE_TICKETING_CLOUD_CLIENT_ID: ${WRIKE_TICKETING_CLOUD_CLIENT_ID} + WRIKE_TICKETING_CLOUD_CLIENT_SECRET: ${WRIKE_TICKETING_CLOUD_CLIENT_SECRET} + ASANA_TICKETING_CLOUD_CLIENT_ID: ${ASANA_TICKETING_CLOUD_CLIENT_ID} + ASANA_TICKETING_CLOUD_CLIENT_SECRET: ${ASANA_TICKETING_CLOUD_CLIENT_SECRET} + PENNYLANE_ACCOUNTING_CLOUD_CLIENT_ID: ${PENNYLANE_ACCOUNTING_CLOUD_CLIENT_ID} + PENNYLANE_ACCOUNTING_CLOUD_CLIENT_SECRET: ${PENNYLANE_ACCOUNTING_CLOUD_CLIENT_SECRET} + FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_ID: ${FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_ID} + FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET: ${FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET} + FREEAGENT_ACCOUNTING_CLOUD_CLIENT_ID: ${FREEAGENT_ACCOUNTING_CLOUD_CLIENT_ID} + FREEAGENT_ACCOUNTING_CLOUD_CLIENT_SECRET: ${FREEAGENT_ACCOUNTING_CLOUD_CLIENT_SECRET} + SAGE_ACCOUNTING_CLOUD_CLIENT_ID: ${SAGE_ACCOUNTING_CLOUD_CLIENT_ID} + SAGE_ACCOUNTING_CLOUD_CLIENT_SECRET: ${SAGE_ACCOUNTING_CLOUD_CLIENT_SECRET} + MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_ID: ${MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_ID} + MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_SECRET: ${MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_SECRET} + QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_ID: ${QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_ID} + QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET: ${QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET} + WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_ID: ${WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_ID} + WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_SECRET: ${WAVE_FINANCIAL_ACCOUNTING_CLOUD_CLIENT_SECRET} + GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_ID: ${GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_ID} + GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET: ${GETRESPONSE_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET} + MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID: ${MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID} + MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET: ${MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET} + PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_ID: ${PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_ID} + PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET: ${PODIUM_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET} + + restart: unless-stopped ports: - 3000:3000 depends_on: - postgres: - condition: service_healthy + postgres: + condition: service_healthy networks: - backend - + redis: image: valkey/valkey:7.2-alpine container_name: "Redis" @@ -126,11 +122,10 @@ services: - ./redis-data:/data networks: - backend - + magic-link-frontend: image: panoradotdev/frontend-magic-links:selfhosted - restart: - always + restart: always ports: - 81:80 depends_on: @@ -138,7 +133,6 @@ services: networks: - backend - frontend - webapp-next: image: panoradotdev/frontend-webapp:selfhosted @@ -160,7 +154,6 @@ services: - backend - frontend - networks: frontend: backend: diff --git a/docs/marketing_automation/introduction.mdx b/docs/marketing_automation/introduction.mdx index 9656dc9f8..293c5acda 100644 --- a/docs/marketing_automation/introduction.mdx +++ b/docs/marketing_automation/introduction.mdx @@ -1,6 +1,6 @@ --- -title: 'Coming Soon' +title: "Coming Soon" description: "You're a bit early!" --- -## [Click here](https://tally.so/r/3Exrdl?integration_category=marketing_automation) to be notified once this feature is live! \ No newline at end of file +## [Click here](https://tally.so/r/3Exrdl?integration_category=marketingautomation) to be notified once this feature is live! diff --git a/docs/mint.json b/docs/mint.json index 1ab2e9762..eb4061497 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -56,7 +56,7 @@ }, { "name": "Marketing Automation", - "url": "marketing_automation" + "url": "marketingautomation" }, { "name": "Ticketing", @@ -116,7 +116,7 @@ { "group": "Marketing Automation", "pages": [ - "marketing_automation/introduction" + "marketingautomation/introduction" ] }, { diff --git a/docs/open-source/contributors.mdx b/docs/open-source/contributors.mdx index 27a73afb3..218ddb772 100644 --- a/docs/open-source/contributors.mdx +++ b/docs/open-source/contributors.mdx @@ -1,7 +1,7 @@ --- -title: 'Build a connector' -description: 'We welcome all contributions to Panora; from small UI enhancements to brand new integrations. We love seeing community members level up and give people power-ups!' -icon: 'star' +title: "Build a connector" +description: "We welcome all contributions to Panora; from small UI enhancements to brand new integrations. We love seeing community members level up and give people power-ups!" +icon: "star" --- ## Introduction @@ -14,10 +14,8 @@ We made a docker file that builds Panora from sources, specifically to help you - ```bash cp .env.example .env ``` - ```bash rm -rf node_modules .pnpm-store ./packages/api/dist ./packages/api/node_modules ./apps/webapp/node_modules @@ -53,9 +51,9 @@ First choose wisely which vertical the 3rd party belongs to among these: - ticketing - accounting - ats -- file_storage +- filestorage - hris -- marketing_automation +- marketingautomation For the sake of the guide, now on we'll consider adding a 3rd party belonging to the `crm` vertical. diff --git a/packages/api/src/@core/connections-strategies/connections-strategies.service.ts b/packages/api/src/@core/connections-strategies/connections-strategies.service.ts index 91cf06159..7ac191bae 100644 --- a/packages/api/src/@core/connections-strategies/connections-strategies.service.ts +++ b/packages/api/src/@core/connections-strategies/connections-strategies.service.ts @@ -9,6 +9,7 @@ import { extractVertical, needsSubdomain, } from '@panora/shared'; +import { SoftwareMode } from '@panora/shared/src/utils'; import { v4 as uuidv4 } from 'uuid'; export type OAuth = { @@ -190,23 +191,28 @@ export class ConnectionsStrategiesService { return data as AuthData; } - getEnvData(provider: string, vertical: string, authStrategy: AuthStrategy) { + getEnvData( + provider: string, + vertical: string, + authStrategy: AuthStrategy, + softwareMode?: SoftwareMode, + ) { let data: AuthData; switch (authStrategy) { case AuthStrategy.oauth2: data = { CLIENT_ID: this.configService.get( - `${provider.toUpperCase()}_${vertical.toUpperCase()}_CLIENT_ID`, + `${provider.toUpperCase()}_${vertical.toUpperCase()}_${softwareMode.toUpperCase()}_CLIENT_ID`, ), CLIENT_SECRET: this.configService.get( - `${provider.toUpperCase()}_${vertical.toUpperCase()}_CLIENT_SECRET`, + `${provider.toUpperCase()}_${vertical.toUpperCase()}_${softwareMode.toUpperCase()}_CLIENT_SECRET`, ), }; if (needsSubdomain(provider, vertical)) { data = { ...data, SUBDOMAIN: this.configService.get( - `${provider.toUpperCase()}_${vertical.toUpperCase()}_SUBDOMAIN`, + `${provider.toUpperCase()}_${vertical.toUpperCase()}_${softwareMode.toUpperCase()}_SUBDOMAIN`, ), }; } @@ -214,14 +220,14 @@ export class ConnectionsStrategiesService { case AuthStrategy.api_key: data = { API_KEY: this.configService.get( - `${provider.toUpperCase()}_${vertical.toUpperCase()}_API_KEY`, + `${provider.toUpperCase()}_${vertical.toUpperCase()}_${softwareMode.toUpperCase()}_API_KEY`, ), }; if (needsSubdomain(provider, vertical)) { data = { ...data, SUBDOMAIN: this.configService.get( - `${provider.toUpperCase()}_${vertical.toUpperCase()}_SUBDOMAIN`, + `${provider.toUpperCase()}_${vertical.toUpperCase()}_${softwareMode.toUpperCase()}_SUBDOMAIN`, ), }; } @@ -229,17 +235,17 @@ export class ConnectionsStrategiesService { case AuthStrategy.basic: data = { USERNAME: this.configService.get( - `${provider.toUpperCase()}_${vertical.toUpperCase()}_USERNAME`, + `${provider.toUpperCase()}_${vertical.toUpperCase()}_${softwareMode.toUpperCase()}_USERNAME`, ), SECRET: this.configService.get( - `${provider.toUpperCase()}_${vertical.toUpperCase()}_SECRET`, + `${provider.toUpperCase()}_${vertical.toUpperCase()}_${softwareMode.toUpperCase()}_SECRET`, ), }; if (needsSubdomain(provider, vertical)) { data = { ...data, SUBDOMAIN: this.configService.get( - `${provider.toUpperCase()}_${vertical.toUpperCase()}_SUBDOMAIN`, + `${provider.toUpperCase()}_${vertical.toUpperCase()}_${softwareMode.toUpperCase()}_SUBDOMAIN`, ), }; } @@ -251,7 +257,7 @@ export class ConnectionsStrategiesService { const isCustomCred = await this.isCustomCredentials(projectId, type); const provider = extractProvider(type); const vertical = extractVertical(type); - //const vertical = findProviderVertical(provider); + //TODO: extract sofwtaremode if (!vertical) throw new Error(`vertical not found for provider ${provider}`); const authStrategy = extractAuthMode(type); @@ -270,7 +276,12 @@ export class ConnectionsStrategiesService { ); } else { // type is of form = HUBSPOT_CRM_CLOUD_OAUTH so we must extract the parts - return this.getEnvData(provider, vertical, authStrategy); + return this.getEnvData( + provider, + vertical, + authStrategy, + SoftwareMode.cloud, + ); } } diff --git a/packages/api/src/@core/connections/connections.controller.ts b/packages/api/src/@core/connections/connections.controller.ts index 5fbacab2a..0a23a94b4 100644 --- a/packages/api/src/@core/connections/connections.controller.ts +++ b/packages/api/src/@core/connections/connections.controller.ts @@ -8,7 +8,7 @@ import { ApiOperation, ApiQuery, ApiResponse, ApiTags } from '@nestjs/swagger'; import { TicketingConnectionsService } from './ticketing/services/ticketing.connection.service'; import { ProviderVertical } from '@panora/shared'; import { AccountingConnectionsService } from './accounting/services/accounting.connection.service'; -import { MarketingAutomationConnectionsService } from './marketing_automation/services/marketing_automation.connection.service'; +import { MarketingAutomationConnectionsService } from './marketingautomation/services/marketingautomation.connection.service'; export type StateDataType = { projectId: string; diff --git a/packages/api/src/@core/connections/connections.module.ts b/packages/api/src/@core/connections/connections.module.ts index 3372594d3..bab08627d 100644 --- a/packages/api/src/@core/connections/connections.module.ts +++ b/packages/api/src/@core/connections/connections.module.ts @@ -5,7 +5,7 @@ import { LoggerService } from '@@core/logger/logger.service'; import { PrismaService } from '@@core/prisma/prisma.service'; import { TicketingConnectionModule } from './ticketing/ticketing.connection.module'; import { AccountingConnectionModule } from './accounting/accounting.connection.module'; -import { MarketingAutomationConnectionsModule } from './marketing_automation/marketing_automation.connection.module'; +import { MarketingAutomationConnectionsModule } from './marketingautomation/marketingautomation.connection.module'; @Module({ controllers: [ConnectionsController], diff --git a/packages/api/src/@core/connections/marketing_automation/marketing_automation.connection.module.ts b/packages/api/src/@core/connections/marketingautomation/marketingautomation.connection.module.ts similarity index 96% rename from packages/api/src/@core/connections/marketing_automation/marketing_automation.connection.module.ts rename to packages/api/src/@core/connections/marketingautomation/marketingautomation.connection.module.ts index 7195614a3..3c3ceaee3 100644 --- a/packages/api/src/@core/connections/marketing_automation/marketing_automation.connection.module.ts +++ b/packages/api/src/@core/connections/marketingautomation/marketingautomation.connection.module.ts @@ -6,7 +6,7 @@ import { WebhookModule } from '@@core/webhook/webhook.module'; import { EnvironmentService } from '@@core/environment/environment.service'; import { EncryptionService } from '@@core/encryption/encryption.service'; import { ConnectionsStrategiesService } from '@@core/connections-strategies/connections-strategies.service'; -import { MarketingAutomationConnectionsService } from './services/marketing_automation.connection.service'; +import { MarketingAutomationConnectionsService } from './services/marketingautomation.connection.service'; import { ServiceRegistry } from './services/registry.service'; @Module({ diff --git a/packages/api/src/@core/connections/marketing_automation/services/getresponse/getresponse.service.ts b/packages/api/src/@core/connections/marketingautomation/services/getresponse/getresponse.service.ts similarity index 95% rename from packages/api/src/@core/connections/marketing_automation/services/getresponse/getresponse.service.ts rename to packages/api/src/@core/connections/marketingautomation/services/getresponse/getresponse.service.ts index 66ad6861f..6bd315886 100644 --- a/packages/api/src/@core/connections/marketing_automation/services/getresponse/getresponse.service.ts +++ b/packages/api/src/@core/connections/marketingautomation/services/getresponse/getresponse.service.ts @@ -42,7 +42,7 @@ export class GetresponseConnectionService this.registry.registerService('getresponse', this); this.type = providerToType( 'getresponse', - 'marketing_automation', + 'marketingautomation', AuthStrategy.oauth2, ); } @@ -54,7 +54,7 @@ export class GetresponseConnectionService where: { id_linked_user: linkedUserId, provider_slug: 'getresponse', - vertical: 'marketing_automation', + vertical: 'marketingautomation', }, }); @@ -98,8 +98,7 @@ export class GetresponseConnectionService access_token: this.cryptoService.encrypt(data.access_token), refresh_token: this.cryptoService.encrypt(data.refresh_token), account_url: - providersConfig['marketing_automation']['getresponse'].urls - .apiUrl, + providersConfig['marketingautomation']['getresponse'].urls.apiUrl, expiration_timestamp: new Date( new Date().getTime() + Number(data.expires_in) * 1000, ), @@ -113,11 +112,10 @@ export class GetresponseConnectionService id_connection: uuidv4(), connection_token: connection_token, provider_slug: 'getresponse', - vertical: 'marketing_automation', + vertical: 'marketingautomation', token_type: 'oauth', account_url: - providersConfig['marketing_automation']['getresponse'].urls - .apiUrl, + providersConfig['marketingautomation']['getresponse'].urls.apiUrl, access_token: this.cryptoService.encrypt(data.access_token), refresh_token: this.cryptoService.encrypt(data.refresh_token), expiration_timestamp: new Date( diff --git a/packages/api/src/@core/connections/marketing_automation/services/mailchimp/mailchimp.service.ts b/packages/api/src/@core/connections/marketingautomation/services/mailchimp/mailchimp.service.ts similarity index 97% rename from packages/api/src/@core/connections/marketing_automation/services/mailchimp/mailchimp.service.ts rename to packages/api/src/@core/connections/marketingautomation/services/mailchimp/mailchimp.service.ts index b4d7945e0..b250aa7c5 100644 --- a/packages/api/src/@core/connections/marketing_automation/services/mailchimp/mailchimp.service.ts +++ b/packages/api/src/@core/connections/marketingautomation/services/mailchimp/mailchimp.service.ts @@ -41,7 +41,7 @@ export class MailchimpConnectionService this.registry.registerService('mailchimp', this); this.type = providerToType( 'mailchimp', - 'marketing_automation', + 'marketingautomation', AuthStrategy.oauth2, ); } @@ -53,7 +53,7 @@ export class MailchimpConnectionService where: { id_linked_user: linkedUserId, provider_slug: 'mailchimp', - vertical: 'marketing_automation', + vertical: 'marketingautomation', }, }); @@ -121,7 +121,7 @@ export class MailchimpConnectionService id_connection: uuidv4(), connection_token: connection_token, provider_slug: 'mailchimp', - vertical: 'marketing_automation', + vertical: 'marketingautomation', token_type: 'oauth', account_url: server_url, access_token: this.cryptoService.encrypt(data.access_token), diff --git a/packages/api/src/@core/connections/marketing_automation/services/marketing_automation.connection.service.ts b/packages/api/src/@core/connections/marketingautomation/services/marketingautomation.connection.service.ts similarity index 100% rename from packages/api/src/@core/connections/marketing_automation/services/marketing_automation.connection.service.ts rename to packages/api/src/@core/connections/marketingautomation/services/marketingautomation.connection.service.ts diff --git a/packages/api/src/@core/connections/marketing_automation/services/podium/podium.service.ts b/packages/api/src/@core/connections/marketingautomation/services/podium/podium.service.ts similarity index 95% rename from packages/api/src/@core/connections/marketing_automation/services/podium/podium.service.ts rename to packages/api/src/@core/connections/marketingautomation/services/podium/podium.service.ts index ec948abde..91bc1105f 100644 --- a/packages/api/src/@core/connections/marketing_automation/services/podium/podium.service.ts +++ b/packages/api/src/@core/connections/marketingautomation/services/podium/podium.service.ts @@ -39,7 +39,7 @@ export class PodiumConnectionService this.registry.registerService('podium', this); this.type = providerToType( 'podium', - 'marketing_automation', + 'marketingautomation', AuthStrategy.oauth2, ); } @@ -50,7 +50,7 @@ export class PodiumConnectionService where: { id_linked_user: linkedUserId, provider_slug: 'podium', - vertical: 'marketing_automation', + vertical: 'marketingautomation', }, }); @@ -94,7 +94,7 @@ export class PodiumConnectionService access_token: this.cryptoService.encrypt(data.access_token), refresh_token: this.cryptoService.encrypt(data.refresh_token), account_url: - providersConfig['marketing_automation']['podium'].urls.apiUrl, + providersConfig['marketingautomation']['podium'].urls.apiUrl, expiration_timestamp: new Date( new Date().getTime() + 10 * 60 * 60 * 1000, ), @@ -108,10 +108,10 @@ export class PodiumConnectionService id_connection: uuidv4(), connection_token: connection_token, provider_slug: 'podium', - vertical: 'marketing_automation', + vertical: 'marketingautomation', token_type: 'oauth', account_url: - providersConfig['marketing_automation']['pdoum'].urls.apiUrl, + providersConfig['marketingautomation']['pdoum'].urls.apiUrl, access_token: this.cryptoService.encrypt(data.access_token), refresh_token: this.cryptoService.encrypt(data.refresh_token), expiration_timestamp: new Date( diff --git a/packages/api/src/@core/connections/marketing_automation/services/registry.service.ts b/packages/api/src/@core/connections/marketingautomation/services/registry.service.ts similarity index 100% rename from packages/api/src/@core/connections/marketing_automation/services/registry.service.ts rename to packages/api/src/@core/connections/marketingautomation/services/registry.service.ts diff --git a/packages/api/src/@core/connections/marketing_automation/types/index.ts b/packages/api/src/@core/connections/marketingautomation/types/index.ts similarity index 100% rename from packages/api/src/@core/connections/marketing_automation/types/index.ts rename to packages/api/src/@core/connections/marketingautomation/types/index.ts diff --git a/packages/api/src/@core/utils/types/index.ts b/packages/api/src/@core/utils/types/index.ts index 12fcac801..cea2594cd 100644 --- a/packages/api/src/@core/utils/types/index.ts +++ b/packages/api/src/@core/utils/types/index.ts @@ -2,9 +2,7 @@ import { CrmObject, UnifiedCrm } from '@crm/@utils/@types'; import { HrisObject } from '@hris/@types'; import { AtsObject, UnifiedAts } from '@ats/@types'; import { AccountingObject } from '@accounting/@types'; -import { MarketingAutomationObject } from 'src/marketing_automation/@types'; import { TicketingObject, UnifiedTicketing } from '@ticketing/@utils/@types'; -import { FileStorageObject } from 'src/file_storage/@types'; import { ApiExtraModels, ApiOkResponse, @@ -13,6 +11,8 @@ import { getSchemaPath, } from '@nestjs/swagger'; import { Type, applyDecorators } from '@nestjs/common'; +import { FileStorageObject } from '@filestorage/@types'; +import { MarketingAutomationObject } from '@marketingautomation/@types'; export type Unified = UnifiedCrm | UnifiedAts | UnifiedTicketing; export type UnifyReturnType = Unified | Unified[]; diff --git a/packages/api/src/app.module.ts b/packages/api/src/app.module.ts index e3f9b6f6b..44c814861 100644 --- a/packages/api/src/app.module.ts +++ b/packages/api/src/app.module.ts @@ -7,10 +7,10 @@ import { ScheduleModule } from '@nestjs/schedule'; import { TasksService } from './@core/tasks/tasks.service'; import { LoggerModule } from 'nestjs-pino'; import { HrisModule } from './hris/hris.module'; -import { MarketingAutomationModule } from './marketing_automation/marketing-automation.module'; +import { MarketingAutomationModule } from './marketingautomation/marketingautomation.module'; import { AtsModule } from './ats/ats.module'; import { AccountingModule } from './accounting/accounting.module'; -import { FileStorageModule } from './file_storage/file-storage.module'; +import { FileStorageModule } from './filestorage/filestorage.module'; import { SentryInterceptor, SentryModule } from '@ntegral/nestjs-sentry'; import { APP_GUARD, APP_INTERCEPTOR } from '@nestjs/core'; import { LoggerService } from '@@core/logger/logger.service'; diff --git a/packages/api/src/file_storage/@types/index.ts b/packages/api/src/filestorage/@types/index.ts similarity index 100% rename from packages/api/src/file_storage/@types/index.ts rename to packages/api/src/filestorage/@types/index.ts diff --git a/packages/api/src/file_storage/file-storage.module.ts b/packages/api/src/filestorage/filestorage.module.ts similarity index 100% rename from packages/api/src/file_storage/file-storage.module.ts rename to packages/api/src/filestorage/filestorage.module.ts diff --git a/packages/api/src/marketing_automation/@types/index.ts b/packages/api/src/marketingautomation/@types/index.ts similarity index 100% rename from packages/api/src/marketing_automation/@types/index.ts rename to packages/api/src/marketingautomation/@types/index.ts diff --git a/packages/api/src/marketing_automation/marketing-automation.module.ts b/packages/api/src/marketingautomation/marketingautomation.module.ts similarity index 100% rename from packages/api/src/marketing_automation/marketing-automation.module.ts rename to packages/api/src/marketingautomation/marketingautomation.module.ts diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json index 13ab06529..3bb8ac3a6 100644 --- a/packages/api/tsconfig.json +++ b/packages/api/tsconfig.json @@ -16,8 +16,8 @@ "@crm/*": ["src/crm/*"], "@hris/*": ["src/hris/*"], "@ticketing/*": ["src/ticketing/*"], - "@file-storage/*": ["src/file_storage/*"], - "@marketing-automation/*": ["src/marketing_automation/*"], + "@filestorage/*": ["src/filestorage/*"], + "@marketingautomation/*": ["src/marketingautomation/*"], "@ats/*": ["src/ats/*"], "@accounting/*": ["src/accounting/*"], }, diff --git a/packages/shared/src/enum.ts b/packages/shared/src/enum.ts index 9ce5de31a..2c62a7119 100644 --- a/packages/shared/src/enum.ts +++ b/packages/shared/src/enum.ts @@ -4,8 +4,8 @@ export enum ProviderVertical { ATS = 'ats', Accounting = 'accounting', Ticketing = 'ticketing', - MarketingAutomation = 'marketing_automation', - FileStorage = 'file_storage', + MarketingAutomation = 'marketingautomation', + FileStorage = 'filestorage', Unknown = 'unknown', } diff --git a/packages/shared/src/envConfig.ts b/packages/shared/src/envConfig.ts index 1f8acfd4a..aed096bd1 100644 --- a/packages/shared/src/envConfig.ts +++ b/packages/shared/src/envConfig.ts @@ -1,4 +1,4 @@ -import { AuthStrategy, providersConfig } from "./utils"; +import { AuthStrategy, providersConfig, SoftwareMode } from "./utils"; export type BasicAuthData = { USERNAME: string; @@ -38,7 +38,6 @@ export function extractVertical(type: string): string { return parts[1]; } -//TODO: handle software mode export function extractSoftwareMode(type: string): string { // Split the string at the first underscore const parts = type.split('_'); @@ -46,15 +45,15 @@ export function extractSoftwareMode(type: string): string { return parts[2]; } -//TODO: handle software mode -export function providerToType(providerName: string, vertical: string, authMode: AuthStrategy){ +export function providerToType(providerName: string, vertical: string, authMode: AuthStrategy, softwareMode?: SoftwareMode){ + const software = softwareMode ? softwareMode.toUpperCase() : SoftwareMode.cloud; switch(authMode){ case AuthStrategy.api_key: - return `${providerName.toUpperCase()}_${vertical.toUpperCase()}_API` + return `${providerName.toUpperCase()}_${vertical.toUpperCase()}_${software}_API_KEY` case AuthStrategy.oauth2: - return `${providerName.toUpperCase()}_${vertical.toUpperCase()}_OAUTH` + return `${providerName.toUpperCase()}_${vertical.toUpperCase()}_${software}_OAUTH` case AuthStrategy.basic: - return `${providerName.toUpperCase()}_${vertical.toUpperCase()}_BASIC` + return `${providerName.toUpperCase()}_${vertical.toUpperCase()}_${software}_BASIC` } } @@ -66,7 +65,7 @@ export function extractAuthMode(type: string): AuthStrategy { switch(authMode){ case 'OAUTH': return AuthStrategy.oauth2; - case 'API': + case 'API_KEY': return AuthStrategy.api_key; case 'BASIC': return AuthStrategy.basic; diff --git a/packages/shared/src/providers.ts b/packages/shared/src/providers.ts index f2c3bc4f7..e16194d9f 100644 --- a/packages/shared/src/providers.ts +++ b/packages/shared/src/providers.ts @@ -8,8 +8,8 @@ export const HRIS_PROVIDERS = ['']; export const ATS_PROVIDERS = ['']; export const ACCOUNTING_PROVIDERS = ['']; export const TICKETING_PROVIDERS = ['zendesk', 'front', 'github', 'jira', 'gorgias']; -export const MARKETING_AUTOMATION_PROVIDERS = ['']; -export const FILE_STORAGE_PROVIDERS = ['']; +export const MARKETINGAUTOMATION_PROVIDERS = ['']; +export const FILESTORAGE_PROVIDERS = ['']; export function getProviderVertical(providerName: string): ProviderVertical { @@ -28,10 +28,10 @@ export function getProviderVertical(providerName: string): ProviderVertical { if (TICKETING_PROVIDERS.includes(providerName)) { return ProviderVertical.Ticketing; } - if (MARKETING_AUTOMATION_PROVIDERS.includes(providerName)) { + if (MARKETINGAUTOMATION_PROVIDERS.includes(providerName)) { return ProviderVertical.MarketingAutomation; } - if (FILE_STORAGE_PROVIDERS.includes(providerName)) { + if (FILESTORAGE_PROVIDERS.includes(providerName)) { return ProviderVertical.FileStorage; } return ProviderVertical.Unknown; diff --git a/packages/shared/src/utils.ts b/packages/shared/src/utils.ts index 2613f2a7f..5d6fdfe26 100644 --- a/packages/shared/src/utils.ts +++ b/packages/shared/src/utils.ts @@ -4,6 +4,10 @@ export enum AuthStrategy { basic } +export enum SoftwareMode { + cloud = "CLOUD", +} + export type ProviderConfig = { scopes: string; logoPath: string; @@ -876,7 +880,7 @@ export const providersConfig: ProvidersConfig = { authStrategy: AuthStrategy.oauth2 }, }, - 'marketing_automation': { + 'marketingautomation': { 'active_campaign': { scopes: '', urls: {