Backend

Secrets

VariableExamplePurpose
JWT_SECRETsecret_jwtJwt token used to authenticate requests coming from the webapp to the server
ENCRYPT_CRYPTO_SECRET_KEY0123456789abcdef0123456789abcdef256-Bit Encryption key used to encrypt sensitive data

Configuration

VariableExamplePurpose
ENVdevValues are dev, prod or sandbox
DISTRIBUTIONselfhostValues are selfhost or managed
PANORA_BASE_API_URLhttp://localhost:3000
REDIS_HOSTredisThe redis host
REDIS_PASSA3vniod98Zbuvn9u5The redis password
REDIS_PORT6379The redis port

Errors & Analytics (Optional in Selfhost)

VariableExamplePurpose
SENTRY_DSNSentry Dsn
SENTRY_ENABLEDFlag which indicates if you want to enable Sentry

Database

VariableExamplePurpose
POSTGRES_USERmy_userusername to get access access to the db
POSTGRES_DBpanora_dbdatabase name to get access access to the db
POSTGRES_HOSTpostgreshost to get access access to the db
POSTGRES_PASSWORDmy_passwordpassword to get access access to the db

Ingress

Check here to set up Ngrok !
VariableExamplePurpose
REDIRECT_TUNNEL_INGRESShttps://MY-NGROK-DOMAIN.ngrok-free.appMandatory only when DISTRIBUTION=selfhost. Endpoint (an Ngrok tunnel domain) when you have to test your OAuth App and needs a HTTPS redirectUri that redirects to your localhost (useful for contributors that might need to test their oAuth flow)
WEBHOOK_INGRESShttps://MY-NGROK-DOMAIN.ngrok-free.appSame job as REDIRECT_TUNNEL_INGRESS. You can use the same value for both if you prefer.

Providers Specific Credentials

You must manually create a custom OAuth2 App inside the 3rd party and copy the critical values (likely client id and client secret)

You have the option to manage a custom 3rd party OAuth App.

Each custom 3rd party environment variable must be of the form PROVIDER_category_SOFTWAREMODE_ATTRIBUTE where

  • PROVIDER is any 3rd party name
  • category is for example [CRM, TICKETING, MARKETINGAUTOMATION, …]
  • SOFTWAREMODE is [ CLOUD, ONPREMISE ]
  • ATTRIBUTE is for example [ CLIENT_ID, CLIENT_SECRET, SUBDOMAIN, … ]

Example :

  • HUBSPOT_CRM_CLOUD_CLIENT_ID = client_id_value_pasted_from_hubspot_developer_app
  • HUBSPOT_CRM_CLOUD_CLIENT_SECRET = client_secret_value_pasted_from_hubspot_developer_app
VariableExamplePurpose
HUBSPOT_CRM_CLOUD_CLIENT_ID
HUBSPOT_CRM_CLOUD_CLIENT_SECRET
ZOHO_CRM_CLOUD_CLIENT_ID
ZOHO_CRM_CLOUD_CLIENT_SECRET
PIPEDRIVE_CRM_CLOUD_CLIENT_ID
PIPEDRIVE_CRM_CLOUD_CLIENT_SECRET
ZENDESK_CRM_CLOUD_CLIENT_ID
ZENDESK_CRM_CLOUD_CLIENT_SECRET
ATTIO_CRM_CLOUD_CLIENT_ID
ATTIO_CRM_CLOUD_CLIENT_SECRET
CLOSE_CRM_CLOUD_CLIENT_ID
CLOSE_CRM_CLOUD_CLIENT_SECRET
CAPSULE_CRM_CLOUD_CLIENT_ID
CAPSULE_CRM_CLOUD_CLIENT_SECRET
TEAMLEADER_CRM_CLOUD_CLIENT_ID
TEAMLEADER_CRM_CLOUD_CLIENT_SECRET
ZENDESK_TICKETING_CLOUD_CLIENT_ID
ZENDESK_TICKETING_CLOUD_CLIENT_SECRET
ZENDESK_TICKETING_CLOUD_SUBDOMAIN
JIRA_TICKETING_CLOUD_CLIENT_ID
JIRA_TICKETING_CLOUD_CLIENT_SECRET
FRONT_TICKETING_CLOUD_CLIENT_ID
FRONT_TICKETING_CLOUD_CLIENT_SECRET
GORGIAS_TICKETING_CLOUD_CLIENT_ID
GORGIAS_TICKETING_CLOUD_CLIENT_SECRET
LINEAR_TICKETING_CLOUD_CLIENT_ID
LINEAR_TICKETING_CLOUD_CLIENT_SECRET
CLICKUP_TICKETING_CLOUD_CLIENT_ID
CLICKUP_TICKETING_CLOUD_CLIENT_SECRET
ASANA_TICKETING_CLOUD_CLIENT_ID
ASANA_TICKETING_CLOUD_CLIENT_SECRET
AHA_TICKETING_CLOUD_CLIENT_ID
AHA_TICKETING_CLOUD_CLIENT_SECRET
AHA_TICKETING_CLOUD_SUBDOMAIN
HELPSCOUT_TICKETING_CLOUD_CLIENT_ID
HELPSCOUT_TICKETING_CLOUD_CLIENT_SECRET
IRONCLAD_TICKETING_CLOUD_CLIENT_ID
IRONCLAD_TICKETING_CLOUD_CLIENT_SECRET
GITHUB_TICKETING_CLOUD_CLIENT_ID
GITHUB_TICKETING_CLOUD_CLIENT_SECRET
WRIKE_TICKETING_CLOUD_CLIENT_ID
WRIKE_TICKETING_CLOUD_CLIENT_SECRET
GITLAB_TICKETING_CLOUD_CLIENT_ID
GITLAB_TICKETING_CLOUD_CLIENT_SECRET
SAGE_ACCOUNTING_CLOUD_CLIENT_ID
SAGE_ACCOUNTING_CLOUD_CLIENT_SECRET
PENNYLANE_ACCOUNTING_CLOUD_CLIENT_ID
PENNYLANE_ACCOUNTING_CLOUD_CLIENT_SECRET
FREEAGENT_ACCOUNTING_CLOUD_CLIENT_ID
FREEAGENT_ACCOUNTING_CLOUD_CLIENT_SECRET
FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_ID
FRESHBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET
MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_ID
MONEYBIRD_ACCOUNTING_CLOUD_CLIENT_SECRET
QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_ID
QUICKBOOKS_ACCOUNTING_CLOUD_CLIENT_SECRET
XERO_ACCOUNTING_CLOUD_CLIENT_ID
XERO_ACCOUNTING_CLOUD_CLIENT_SECRET
DEEL_HRIS_CLOUD_CLIENT_ID
DEEL_HRIS_CLOUD_CLIENT_SECRET
RIPPLING_HRIS_CLOUD_CLIENT_ID
RIPPLING_HRIS_CLOUD_CLIENT_SECRET
GUSTO_HRIS_CLOUD_CLIENT_ID
GUSTO_HRIS_CLOUD_CLIENT_SECRET
FACTORIAL_HRIS_CLOUD_CLIENT_ID
FACTORIAL_HRIS_CLOUD_CLIENT_SECRET
NAMELY_HRIS_CLOUD_CLIENT_ID
NAMELY_HRIS_CLOUD_CLIENT_SECRET
NAMELY_HRIS_CLOUD_SUBDOMAIN
GOOGLEDRIVE_FILESTORAGE_CLOUD_CLIENT_ID
GOOGLEDRIVE_FILESTORAGE_CLOUD_CLIENT_SECRET
ONEDRIVE_FILESTORAGE_CLOUD_CLIENT_ID
ONEDRIVE_FILESTORAGE_CLOUD_CLIENT_SECRET
SHAREPOINT_FILESTORAGE_CLOUD_CLIENT_ID
SHAREPOINT_FILESTORAGE_CLOUD_CLIENT_SECRET
DROPBOX_FILESTORAGE_CLOUD_CLIENT_ID
DROPBOX_FILESTORAGE_CLOUD_CLIENT_SECRET
BOX_FILESTORAGE_CLOUD_CLIENT_ID
BOX_FILESTORAGE_CLOUD_CLIENT_SECRET
KEAP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID
KEAP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET
MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_ID
MAILCHIMP_MARKETINGAUTOMATION_CLOUD_CLIENT_SECRET
KLAVIYO_TICKETING_CLOUD_CLIENT_ID
KLAVIYO_TICKETING_CLOUD_CLIENT_SECRET
NOTION_PRODUCTIVITY_CLOUD_CLIENT_ID
NOTION_PRODUCTIVITY_CLOUD_CLIENT_SECRET
SLACK_PRODUCTIVITY_CLOUD_CLIENT_ID
SLACK_PRODUCTIVITY_CLOUD_CLIENT_SECRET
GREENHOUSE_ATS_CLOUD_CLIENT_ID
GREENHOUSE_ATS_CLOUD_CLIENT_SECRET
JOBADDER_ATS_CLOUD_CLIENT_ID
JOBADDER_ATS_CLOUD_CLIENT_SECRET
LEVER_ATS_CLOUD_CLIENT_ID
LEVER_ATS_CLOUD_CLIENT_SECRET
SHOPIFY_ECOMMERCE_CLOUD_CLIENT_ID
SHOPIFY_ECOMMERCE_CLOUD_CLIENT_SECRET
SHOPIFY_ECOMMERCE_CLOUD_SUBDOMAIN

Frontend

Configuration

VariableExamplePurpose
NEXT_PUBLIC_BACKEND_DOMAINhttp://localhost:3000Server url. Values are [http://localhost:3000, https://api-dev.panora.dev, https://api-sandbox.panora.dev, https://api.panora.dev]
NEXT_PUBLIC_MAGIC_LINK_DOMAINhttp://localhost:81Magic link server. Values are [http://localhost:81, https://connect-dev.panora.dev, https://connect.panora.dev ]
NEXT_PUBLIC_DISTRIBUTIONmanagedValues are selfhost or managed
NEXT_PUBLIC_WEBAPP_DOMAINhttp://localhostWebapp client url. Values are [http://localhost, https://app-dev.panora.dev, https://app.panora.dev, ]
NEXT_PUBLIC_POSTHOG_HOSTHost domain of your posthog
NEXT_PUBLIC_POSTHOG_KEYKey of your posthog account

Storage (Optional)

You can let them empty for now !

VariableExamplePurpose
MINIO_ROOT_USERmyaccesskey13
MINIO_ROOT_PASSWORDmysecretkey12
AWS_S3_REGIONus-east-1
S3_TCG_ATTACHMENTS_BUCKETNAMEtcg-attachments
BUCKET_TCG_ATTACHMENTS_USERBUCKET_TCG_ATTACHMENTS_USER01
BUCKET_TCG_ATTACHMENTS_PWBUCKET_TCG_ATTACHMENTS_PW01