Skip to content

Commit

Permalink
Merge branch 'main' into feat/ecommerce-vertical
Browse files Browse the repository at this point in the history
  • Loading branch information
naelob committed Aug 6, 2024
2 parents 8dbeef9 + 482eda5 commit fa278e5
Show file tree
Hide file tree
Showing 1,186 changed files with 54,281 additions and 31,758 deletions.
4 changes: 2 additions & 2 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ node_modules/
apps/magic-link/node_modules
apps/magic-link/dist

apps/client-ts/node_modules
apps/client-ts/.next
apps/webapp/node_modules
apps/webapp/.next

packages/api/node_modules
packages/api/dist
53 changes: 40 additions & 13 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@
# API Backend
# ================================================
ENV=dev
DISTRIBUTION=selfhosted # selfhosted or managed
DISTRIBUTION=selfhost # selfhost or managed
PANORA_BASE_API_URL=http://localhost:3000
JWT_SECRET=secret_jwt
ENCRYPT_CRYPTO_SECRET_KEY="0123456789abcdef0123456789abcdef"
#Managed only

# Only used when DISTRIBUTION=managed
SENTRY_DSN=
SENTRY_ENABLED=FALSE

Expand All @@ -20,22 +21,43 @@ REDIS_PASS=A3vniod98Zbuvn9u5

#REDIS_TLS=

MAIL_HOST=smtp.example.com
MAIL_USER=[email protected]
MAIL_PASSWORD=your-email-password


# ================================================
# Tip: use mailtrap.io for local development
EMAIL_SENDING_ADDRESS=[email protected]

SMTP_HOST=
SMTP_PORT=
SMTP_USER=
SMTP_PASSWORD=
# ================================================
# Database
# ================================================
POSTGRES_USER=my_user
POSTGRES_DB=panora_db
POSTGRES_HOST=postgres
POSTGRES_PASSWORD=my_password

# Endpoint on which realtime webhooks are sent to
WEBHOOK_INGRESS=http://localhost:3000
WEBHOOK_INGRESS=YOUR_ENDPOINT_URL_TO_RECEIVE_PANORA_WEBHOOKS

# Mandatory only when DISTRIBUTION=selfhost
# 1. Execute cp ngrok.yml.example ngrok.yml
# 2. Uncomment ngrok service in docker-compose{.dev, .source}.yml
# Endpoint (an Ngrok tunnel domain) when you have to test your OAuth App and needs a redirectUri that redirects to your localhost
# (useful for contributors that might need to test their oAuth flow)
REDIRECT_TUNNEL_INGRESS=NGROK_DOMAIN


# Each Provider is of form PROVIDER_VERTICAL_SOFTWAREMODE_ATTRIBUTE
# check (https://docs.panora.dev/open-source/contributors)
# OAuth : ATTRIBUTE c [CLIENT_ID, CLIENT_SECRET] & {SUBDOMAIN} (some providers might need a subdomain)
# ================================================
# Integration Providers
# Credentials of Integration Providers
# ================================================
# CRM
# Hubspot
Expand All @@ -50,13 +72,9 @@ PIPEDRIVE_CRM_CLOUD_CLIENT_SECRET=
# Zendesk
ZENDESK_CRM_CLOUD_CLIENT_ID=
ZENDESK_CRM_CLOUD_CLIENT_SECRET=
# Freshsales
FRESHSALES_CRM_CLOUD_CLIENT_ID=
FRESHSALES_CRM_CLOUD_CLIENT_SECRET=
# Attio
ATTIO_CRM_CLOUD_CLIENT_ID=
ATTIO_CRM_CLOUD_CLIENT_SECRET=

# Close
CLOSE_CRM_CLOUD_CLIENT_ID=
CLOSE_CRM_CLOUD_CLIENT_SECRET=
Expand All @@ -68,15 +86,24 @@ CLOSE_CRM_CLOUD_CLIENT_SECRET=
ZENDESK_TICKETING_CLOUD_CLIENT_ID=
ZENDESK_TICKETING_CLOUD_CLIENT_SECRET=
ZENDESK_TICKETING_CLOUD_SUBDOMAIN=
# Jira
JIRA_TICKETING_CLOUD_CLIENT_ID=
JIRA_TICKETING_CLOUD_CLIENT_SECRET=
GORGIAS_TICKETING_CLOUD_CLIENT_ID=
GORGIAS_TICKETING_CLOUD_CLIENT_SECRET=
GORGIAS_TICKETING_CLOUD_SUBDOMAIN=
# Front
FRONT_TICKETING_CLOUD_CLIENT_ID=
FRONT_TICKETING_CLOUD_CLIENT_SECRET=
# Gitlab
GITLAB_TICKETING_CLOUD_CLIENT_ID=
GITLAB_TICKETING_CLOUD_CLIENT_SECRET=

# ================================================
# File Storage
# ================================================
# Box
BOX_FILESTORAGE_CLOUD_CLIENT_ID=
BOX_FILESTORAGE_CLOUD_CLIENT_SECRET=


# ================================================
# Webapp settings
# Must be set in the perspective of the end user browser
Expand All @@ -86,5 +113,5 @@ NEXT_PUBLIC_MAGIC_LINK_DOMAIN=http://localhost:81
NEXT_PUBLIC_POSTHOG_KEY=<ph_project_api_key>
NEXT_PUBLIC_POSTHOG_HOST=<ph_instance_address>
NEXT_PUBLIC_WEBAPP_DOMAIN="http://localhost"
# Disable Next.js spyware
NEXT_TELEMETRY_DISABLED=1
NEXT_PUBLIC_DISTRIBUTION="selfhost" # selfhost or managed

Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,10 @@ jobs:
with:
platforms: linux/amd64,linux/arm64
context: .
file: ./apps/client-ts/Dockerfile
file: ./apps/webapp/Dockerfile
push: false
tags: panoradotdev/frontend-webapp:selfhosted
build-args: |
NEXT_PUBLIC_BACKEND_DOMAIN=${{ secrets.NEXT_PUBLIC_BACKEND_DOMAIN }}
NEXT_PUBLIC_MAGIC_LINK_DOMAIN=${{ secrets.NEXT_PUBLIC_MAGIC_LINK_DOMAIN }}
NEXT_PUBLIC_STYTCH_PROJECT_ID=${{ secrets.NEXT_PUBLIC_STYTCH_PROJECT_ID }}
NEXT_PUBLIC_STYTCH_SECRET=${{ secrets.NEXT_PUBLIC_STYTCH_SECRET }}
NEXT_PUBLIC_STYTCH_PROJECT_ENV=${{ secrets.NEXT_PUBLIC_STYTCH_PROJECT_ENV }}
NEXT_PUBLIC_STYTCH_PUBLIC_TOKEN=${{ secrets.NEXT_PUBLIC_STYTCH_PUBLIC_TOKEN }}
NEXT_PUBLIC_DISTRIBUTION=${{ env.DISTRIBUTION }}
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,10 @@ jobs:
with:
platforms: linux/amd64,linux/arm64
context: .
file: ./apps/client-ts/Dockerfile
file: ./apps/webapp/Dockerfile
push: true
tags: panoradotdev/frontend-webapp:selfhosted
build-args: |
NEXT_PUBLIC_BACKEND_DOMAIN=${{ secrets.NEXT_PUBLIC_BACKEND_DOMAIN }}
NEXT_PUBLIC_MAGIC_LINK_DOMAIN=${{ secrets.NEXT_PUBLIC_MAGIC_LINK_DOMAIN }}
NEXT_PUBLIC_STYTCH_PROJECT_ID=${{ secrets.NEXT_PUBLIC_STYTCH_PROJECT_ID }}
NEXT_PUBLIC_STYTCH_SECRET=${{ secrets.NEXT_PUBLIC_STYTCH_SECRET }}
NEXT_PUBLIC_STYTCH_PROJECT_ENV=${{ secrets.NEXT_PUBLIC_STYTCH_PROJECT_ENV }}
NEXT_PUBLIC_STYTCH_PUBLIC_TOKEN=${{ secrets.NEXT_PUBLIC_STYTCH_PUBLIC_TOKEN }}
NEXT_PUBLIC_DISTRIBUTION=${{ env.DISTRIBUTION }}
25 changes: 25 additions & 0 deletions .github/workflows/merge_code_samples.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Merge Code Samples Into OpenAPI Spec
permissions:
checks: write
contents: write
pull-requests: write
statuses: write
"on":
workflow_dispatch:
inputs:
force:
description: Force generation of SDKs
type: boolean
default: false
schedule:
- cron: 0 0 * * *
jobs:
generate:
uses: speakeasy-api/sdk-generation-action/.github/workflows/workflow-executor.yaml@v15
with:
force: ${{ github.event.inputs.force }}
mode: pr
speakeasy_version: latest
secrets:
github_access_token: ${{ secrets.GITHUB_TOKEN }}
speakeasy_api_key: ${{ secrets.SPEAKEASY_API_KEY }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@ redis_data
.pnpm-store/
.npmrc
.vscode
docs/objects
26 changes: 26 additions & 0 deletions .speakeasy/workflow.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
speakeasyVersion: 1.352.2
sources:
merge-code-samples-into-spec:
sourceNamespace: merge-code-samples-into-spec
sourceRevisionDigest: sha256:7929a4d8e688918803878011f0c6bf3578cee9b09793d0b23a111514f6db06c9
sourceBlobDigest: sha256:02fc8407a41b3a24d8feccd31a8d9457ba648c799252921c06b9cfe75a6990dc
tags:
- latest
- main
targets: {}
workflow:
workflowVersion: 1.0.0
speakeasyVersion: latest
sources:
merge-code-samples-into-spec:
inputs:
- location: registry.speakeasyapi.dev/panora/panora/panora-open-api-swagger
overlays:
- location: registry.speakeasyapi.dev/panora/panora/code-samples-typescript-my-first-target:main
- location: registry.speakeasyapi.dev/panora/panora/code-samples-python:main
- location: registry.speakeasyapi.dev/panora/panora/go-sdk:main
- location: registry.speakeasyapi.dev/panora/panora/code-samples-ruby:main
output: packages/api/swagger/openapi-with-code-samples.yaml
registry:
location: registry.speakeasyapi.dev/panora/panora/merge-code-samples-into-spec
targets: {}
15 changes: 15 additions & 0 deletions .speakeasy/workflow.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
workflowVersion: 1.0.0
speakeasyVersion: latest
sources:
merge-code-samples-into-spec:
inputs:
- location: registry.speakeasyapi.dev/panora/panora/panora-open-api-swagger
overlays:
- location: registry.speakeasyapi.dev/panora/panora/code-samples-typescript-my-first-target:main
- location: registry.speakeasyapi.dev/panora/panora/code-samples-python:main
- location: registry.speakeasyapi.dev/panora/panora/go-sdk:main
- location: registry.speakeasyapi.dev/panora/panora/code-samples-ruby:main
output: packages/api/swagger/openapi-with-code-samples.yaml
registry:
location: registry.speakeasyapi.dev/panora/panora/merge-code-samples-into-spec
targets: {}
73 changes: 43 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,37 @@
</br>

<p>
<a href="https://panora.dev">Website 🌎</a> - <a href="https://docs.panora.dev">Documentation 📖</a> - <a href="https://status.panora.dev">Status 🟢</a>
<a href="https://panora.dev">Website 🌎</a> - <a href="https://docs.panora.dev">Documentation 📖</a> - <a href="https://discord.com/invite/PH5k7gGubt">Discord 👽</a>
</p>
</div>

### Have you met anyone who loves developing integrations? *No.* That’s why we designed an easy developer experience that you’ll enjoy

- **Simple developer experience:** easy to self-host, uses industry-standard data models, and is extensible
- **Builder-friendly terms:** Panora is open-source, and offers generous tips for contributors
# 🕹️ Try

### More than a devtool: Panora helps you put your product at the core of your customer's daily workflows
- Prerequisite: You should have Git and Docker installed

1. Get the code

```
git clone https://github.com/panoratech/Panora.git
```

2. Go to Panora folder

```
cd Panora && cp .env.example .env
```

3. Start

```
docker compose up
```

Panora is now running! Follow our [Quickstart Guide](https://docs.panora.dev/quick-start) to start adding integrations to your product !

See also [our selfhost guide here !](https://docs.panora.dev/open-source/selfhost/self-host-guide)

Your customers expect all of their tools to work well together. Panora avoids your team spending hundreds of hours building and maintaining integrations instead of your core product.

# ✨ Core Features

Expand All @@ -41,7 +60,9 @@ Your customers expect all of their tools to work well together. Panora avoids yo

Panora supports integration with the following objects across multiple platforms:

### CRM
[Here is an extensive list of all integrations !](https://docs.panora.dev/integrations-catalog)

### CRM Unified API

| | Contacts | Deals | Notes | Engagements | Tasks | Users | Companies |
|-----------------------------------------------|:--------:|:-----:|:-----:|:-----------:|:-----:|:-----:|:---------:|
Expand All @@ -51,46 +72,38 @@ Panora supports integration with the following objects across multiple platforms
| Zendesk Sell | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| Attio | ✔️ | | | | | | ✔️ |

### Ticketing
### Ticketing Unified API

| | Tickets | Comments | Users | Contacts | Accounts | Tags | Teams | Collections |
| | Tickets | Comments | Users | Contacts | Accounts | Tags | Teams | Collections |
|-------------|:----------:|:-------:|:-------:|:------------:|:-------:|:-------:|:------:|:-------------:|
| Zendesk |||||||| |
| Front |||||||| |
| Jira |||| | ||||
| Gorgias |||| | | | | |

### ATS (New!)
| Gitlab |||| | | | | |
### ATS Unified API (New!)

| | Activities | Applications | Candidates | Departments | Interviews | Jobs | Offers | Offices | Scorecard | Users |
|-------------|:----------:|:------------:|:----------:|:-----------:|:----------:|:----:|:------:|:-------:|:---------:|:-----:|
| Ashby |||||||||||

Your favourite software is missing? [Ask the community to build a connector!](https://github.com/panoratech/Panora/issues/new)

# 🕹️ Try the Open-Source version

- Prerequisite: You should have Git and Docker installed

1. Get the code
### File Storage Unified API

```
git clone https://github.com/panoratech/Panora.git
```
| File Storage | Drives | Files | Folders | Groups | Users | Permissions | Shared Links |
|-----------------------------------------------|:--------:|:-----:|:-----:|:-----------:|:-----:|:-----:|:---------:|
| [Google Drive]() | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | |
| [Box]() | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| [Dropbox]() | | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
| [OneDrive]() | ✔️ | ✔️ | ✔️| ✔️ | ✔️ | | |

2. Go to Panora folder

```
cd Panora && cp .env.example .env
```

3. Start
Your favourite software is missing? [Ask the community to build a connector!](https://github.com/panoratech/Panora/issues/new)

```
docker compose up
```
# 👾 Join the community

Visit our [Quickstart Guide](https://docs.panora.dev/quick-start) to start adding integrations to your product
- [Join the Discord](https://discord.com/invite/PH5k7gGubt)

# 🤔 Questions? Ask the core team

Expand Down
Loading

0 comments on commit fa278e5

Please sign in to comment.