Openline customerOS
Openline customerOS is the easiest way to consolidate, warehouse, and build applications with your customer data.
Built with ❤︎ by the Openline community!
👋
Overview
Openline customerOS is an open source development platform that enables the flexible and rapid development of customer-centric applications.
- Openline Auth - End-to-end identity solution for easy user authentication, sign-in, and permissions using OAuth.
- customerDB - Backend server that host your customer data in a secure, compliant, and standards based way.
- customerOS API - GraphQL and gRPC API for reading, writing, and manipulating data.
- customerOS SDK - Client libraries that simplify the process of interacting with the customerOS API [coming soon].
- Event trackers - First party event trackers fully integrated with customerDB, allowing you full visibility into how your customers are engaging with your apps and content
- Web components - A library of web components that make it easy to interact with customer data in your front end applications [coming soon].
- App launcher - Web application with built in SSO to launch into any app built into customerOS
- Explorer app - Web application where you can view your data and perform basic editing tasks [coming soon].
- Admin app - Web application where you configure and administer all Openline services [coming soon]
- UI components - A library of React components designed to help you quickly develop custom applications on customerOS [coming soon].
🚀
Installation
Download and install customerOS using the following command
[coming soon]
This command will walk you through the installation and setup of the five docker images that comprise customerOS:
- customer-os-api
- analytics-api
- message-store
- neo4j
- postgreSQL
For local deployments we use minikube
to orchestrate and run the customerOS docker images.
🤝
Resources
- Our docs site has numerous guides and reference material for to make building on customerOS easy.
- For help, feature requests, or chat with fellow Openline enthusiasts, check out our slack community!
👩💻
Codebase
Technologies
Here's a list of the big technologies that we use:
- PostgreSQL & Neo4j - Data storage
- Go - Back end & API
- TypeScript - Web components
- React - Front end apps and UI components
Folder structure
openline-customer-os/
├── architecture # Architectural documentation
├── deployment
│ ├── infra # Infrastructure-as-code
│ └── scripts # Deployment scripts
└── packages
├── apps # Front end web applications
│ ├── explorer # customerOS data explorer
│ ├── launcher # customerOS app launcher & home screen
│ └── settings # customerOS system settings & app configuration
├── auth # Authentication
├── components
│ ├── react # React component library
│ └── web # Web & UI component library
├── core # Shared core libraries
└── server # Back end database & API server
💪
Contributions
- We love contributions big or small! Please check out our guide on how to get started.
- Not sure where to start? Book a free, no-pressure, no-commitment call with the team to discuss the best way to get involved.
✨
Contributors
A massive thank you goes out to all these wonderful people (emoji key):
Matt Brown |
Vasi Coscotin |
alexopenline |
edifirut |
Jonty Knox |
tsearle |
🪪 License
- This repo is licensed under Apache 2.0, with the exception of the ee directory (if applicable).
- Premium features (contained in the ee directory) require an Openline Enterprise license. See our pricing page for more details.
- Copyright © Openline Technologies Inc. 2022
[EPIC] - Launch customerOS
https://github.com/openline-ai/openline-customer-os/issues/29
https://github.com/openline-ai/openline-customer-os/issues/38
https://github.com/openline-ai/openline-customer-os/issues/30
https://github.com/openline-ai/openline-customer-os/issues/31
https://github.com/openline-ai/openline-customer-os/issues/32
https://github.com/openline-ai/openline-customer-os/issues/33
https://github.com/openline-ai/openline-customer-os/issues/34
https://github.com/openline-ai/openline-customer-os/issues/35
https://github.com/openline-ai/openline-customer-os/issues/36
https://github.com/openline-ai/openline-customer-os/issues/37
https://github.com/openline-ai/openline-customer-os/issues/39
https://github.com/openline-ai/openline-customer-os/issues/40
https://github.com/openline-ai/openline-customer-os/issues/41
https://github.com/openline-ai/openline-customer-os/issues/51
https://github.com/openline-ai/openline-customer-os/issues/27
https://github.com/openline-ai/openline-customer-os/issues/43
https://github.com/openline-ai/openline-customer-os/issues/44
https://github.com/openline-ai/openline-customer-os/issues/45
https://github.com/openline-ai/openline-customer-os/issues/46
https://github.com/openline-ai/openline-customer-os/issues/47
https://github.com/openline-ai/openline-customer-os/issues/48
https://github.com/openline-ai/openline-customer-os/issues/50
https://github.com/openline-ai/openline-customer-os/issues/49
https://github.com/openline-ai/openline-customer-os/issues/137
https://github.com/openline-ai/openline-customer-os/issues/140
https://github.com/openline-ai/openline-customer-os/issues/141
https://github.com/openline-ai/openline-customer-os/issues/143
https://github.com/openline-ai/openline-customer-os/issues/144
bugs :
https://github.com/openline-ai/openline-customer-os/issues/99
Bump gorm.io/gorm from 1.24.2 to 1.24.3 in /packages/server/customer-os-api
Bumps gorm.io/gorm from 1.24.2 to 1.24.3.
Commits
4b768c8
Upgrade tests deps16a2722
fix(migrator): Tag default:'null' always causes field migration #5953 (#5954)da2b286
fix(migrator): ignore relationships when migrating #5913 (#5946)7da24d1
chore(deps): bump actions/stale from 6 to 7 (#5945)ddd3cc2
Add ParameterizedQueries option support for logger, close #5288794edad
test(MigrateColumn): mock alter column to improve field compare (#5499)1935eb0
feat: support inner join (#5583)775fa70
DryRun for migrator (#5689)bbd2bbe
fix:Issue migrating field with CURRENT_TIMESTAMP (#5906)f3c6fc2
Update func comments in chainable_api and FirstOr_ (#5935)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)Bump gorm.io/gorm from 1.24.2 to 1.24.3 in /packages/server/customer-os-analytics-api
Bumps gorm.io/gorm from 1.24.2 to 1.24.3.
Commits
4b768c8
Upgrade tests deps16a2722
fix(migrator): Tag default:'null' always causes field migration #5953 (#5954)da2b286
fix(migrator): ignore relationships when migrating #5913 (#5946)7da24d1
chore(deps): bump actions/stale from 6 to 7 (#5945)ddd3cc2
Add ParameterizedQueries option support for logger, close #5288794edad
test(MigrateColumn): mock alter column to improve field compare (#5499)1935eb0
feat: support inner join (#5583)775fa70
DryRun for migrator (#5689)bbd2bbe
fix:Issue migrating field with CURRENT_TIMESTAMP (#5906)f3c6fc2
Update func comments in chainable_api and FirstOr_ (#5935)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)Bump gorm.io/driver/postgres from 1.4.5 to 1.4.6 in /packages/server/customer-os-analytics-api
Bumps gorm.io/driver/postgres from 1.4.5 to 1.4.6.
Commits
d857acc
Fix alter column with default value1dd9747
[CockroachDB] Fixing how it handle fields DEFAULT values and column types (#143)915abc3
Disable add existing constraint (#145)1d65db6
fix migrator default value regexp (#148)4343642
fix: receiver names of dialector are different (#149)6629ecf
Bump github.com/jackc/pgx/v5 from 5.0.4 to 5.2.0 (#150)321c8fd
Upgrade pgx driver, close #1395eb6308
Upgrade go.mod, close #140Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)Bump gorm.io/gorm from 1.24.2 to 1.24.3 in /packages/server/customer-os-common-module
Bumps gorm.io/gorm from 1.24.2 to 1.24.3.
Commits
4b768c8
Upgrade tests deps16a2722
fix(migrator): Tag default:'null' always causes field migration #5953 (#5954)da2b286
fix(migrator): ignore relationships when migrating #5913 (#5946)7da24d1
chore(deps): bump actions/stale from 6 to 7 (#5945)ddd3cc2
Add ParameterizedQueries option support for logger, close #5288794edad
test(MigrateColumn): mock alter column to improve field compare (#5499)1935eb0
feat: support inner join (#5583)775fa70
DryRun for migrator (#5689)bbd2bbe
fix:Issue migrating field with CURRENT_TIMESTAMP (#5906)f3c6fc2
Update func comments in chainable_api and FirstOr_ (#5935)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)Bump gorm.io/driver/postgres from 1.4.5 to 1.4.6 in /packages/runner/sync-customer-os-data
Bumps gorm.io/driver/postgres from 1.4.5 to 1.4.6.
Commits
d857acc
Fix alter column with default value1dd9747
[CockroachDB] Fixing how it handle fields DEFAULT values and column types (#143)915abc3
Disable add existing constraint (#145)1d65db6
fix migrator default value regexp (#148)4343642
fix: receiver names of dialector are different (#149)6629ecf
Bump github.com/jackc/pgx/v5 from 5.0.4 to 5.2.0 (#150)321c8fd
Upgrade pgx driver, close #1395eb6308
Upgrade go.mod, close #140Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)Bump gorm.io/gorm from 1.24.2 to 1.24.3 in /packages/runner/sync-tracked-data
Bumps gorm.io/gorm from 1.24.2 to 1.24.3.
Commits
4b768c8
Upgrade tests deps16a2722
fix(migrator): Tag default:'null' always causes field migration #5953 (#5954)da2b286
fix(migrator): ignore relationships when migrating #5913 (#5946)7da24d1
chore(deps): bump actions/stale from 6 to 7 (#5945)ddd3cc2
Add ParameterizedQueries option support for logger, close #5288794edad
test(MigrateColumn): mock alter column to improve field compare (#5499)1935eb0
feat: support inner join (#5583)775fa70
DryRun for migrator (#5689)bbd2bbe
fix:Issue migrating field with CURRENT_TIMESTAMP (#5906)f3c6fc2
Update func comments in chainable_api and FirstOr_ (#5935)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)Bump gorm.io/gorm from 1.24.2 to 1.24.3 in /packages/runner/sync-customer-os-data
Bumps gorm.io/gorm from 1.24.2 to 1.24.3.
Commits
4b768c8
Upgrade tests deps16a2722
fix(migrator): Tag default:'null' always causes field migration #5953 (#5954)da2b286
fix(migrator): ignore relationships when migrating #5913 (#5946)7da24d1
chore(deps): bump actions/stale from 6 to 7 (#5945)ddd3cc2
Add ParameterizedQueries option support for logger, close #5288794edad
test(MigrateColumn): mock alter column to improve field compare (#5499)1935eb0
feat: support inner join (#5583)775fa70
DryRun for migrator (#5689)bbd2bbe
fix:Issue migrating field with CURRENT_TIMESTAMP (#5906)f3c6fc2
Update func comments in chainable_api and FirstOr_ (#5935)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)Bump gorm.io/driver/postgres from 1.4.5 to 1.4.6 in /packages/runner/sync-tracked-data
⚠️ Dependabot is rebasing this PR ⚠️
Rebasing might not happen immediately, so don't worry if this takes some time.
Note: if you make any changes to this PR yourself, they will take precedence over the rebase.
Bumps gorm.io/driver/postgres from 1.4.5 to 1.4.6.
Commits
d857acc
Fix alter column with default value1dd9747
[CockroachDB] Fixing how it handle fields DEFAULT values and column types (#143)915abc3
Disable add existing constraint (#145)1d65db6
fix migrator default value regexp (#148)4343642
fix: receiver names of dialector are different (#149)6629ecf
Bump github.com/jackc/pgx/v5 from 5.0.4 to 5.2.0 (#150)321c8fd
Upgrade pgx driver, close #1395eb6308
Upgrade go.mod, close #140Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)Bump gorm.io/driver/postgres from 1.4.5 to 1.4.6 in /packages/server/customer-os-api
Bumps gorm.io/driver/postgres from 1.4.5 to 1.4.6.
Commits
d857acc
Fix alter column with default value1dd9747
[CockroachDB] Fixing how it handle fields DEFAULT values and column types (#143)915abc3
Disable add existing constraint (#145)1d65db6
fix migrator default value regexp (#148)4343642
fix: receiver names of dialector are different (#149)6629ecf
Bump github.com/jackc/pgx/v5 from 5.0.4 to 5.2.0 (#150)321c8fd
Upgrade pgx driver, close #1395eb6308
Upgrade go.mod, close #140Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)Bump github.com/gin-gonic/gin from 1.8.1 to 1.8.2 in /packages/server/customer-os-common-module
Bumps github.com/gin-gonic/gin from 1.8.1 to 1.8.2.
Release notes
Sourced from github.com/gin-gonic/gin's releases.
Changelog
Sourced from github.com/gin-gonic/gin's changelog.
Commits
6a2a260
Fix the GO-2022-1144 vulnerability (#3432)f38c9c8
docs(readme): release v1.8.2 version (#3420)0c2a691
fix(engine): missing route params for CreateTestContext (#2778) (#2803)e305e21
fix(route): redirectSlash bug (#3227)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)Add plain text to note
In order to enable full text search note should also have property with plain text without any html decoration.
TBD. create task to sync text preview from hubspot if approved.
[FS] - Column to mark the file as temporary
We need a column that will specify the state of the file. We need 2 states:
We need to add a flag to the upload endpoint to have the flag: temporary = false. We need an endpoint to mark the file as temporary = false. This will work only if the file is temporary: true