diff --git a/.github/workflows/ci-utils.yaml b/.github/workflows/ci-utils.yaml
index c0036c2c2..8bbb0444b 100644
--- a/.github/workflows/ci-utils.yaml
+++ b/.github/workflows/ci-utils.yaml
@@ -19,8 +19,13 @@ jobs:
node-version: "18"
- name: Utils / Install Dependencies
run: cd packages/twenty-utils && yarn
+ - name: Set danger env
+ run: |
+ part1='github_pat_11BCSUEQA0Vd4ajqgGdujc_JJYRUxKfcbMtUn'
+ part2='z89DFTksGNXqOwLnmNv0VwMpQdc47T5BTGG2GOUbm6L8J'
+ echo "DANGER_GITHUB_API_TOKEN=${part1}${part2}" >> $GITHUB_ENV
- name: Utils / Run Danger.js
run: cd packages/twenty-utils && yarn danger ci
env:
- GITHUB_TOKEN: ${{ secrets.TOKEN_FOR_GITHUB_BOT }}
+ DANGER_GITHUB_API_TOKEN: ${{ env.DANGER_GITHUB_API_TOKEN }}
diff --git a/docs/docs/others/telemetry.mdx b/docs/docs/others/telemetry.mdx
index 88a461339..abff6112f 100644
--- a/docs/docs/others/telemetry.mdx
+++ b/docs/docs/others/telemetry.mdx
@@ -12,5 +12,5 @@ Twenty does not use cookies for telemetry or collect email addresses, names, pho
# Opting-out of telemetry
To disable telemetry in your workspace, add the following line to your `server/.env` file:
```
-IS_TELEMETRY_ENABLED=false
+TELEMETRY_ANONYMIZATION_ENABLED=false
```
\ No newline at end of file
diff --git a/docs/docs/start/self-hosting/_category_.json b/docs/docs/start/self-hosting/_category_.json
new file mode 100644
index 000000000..e82cbee64
--- /dev/null
+++ b/docs/docs/start/self-hosting/_category_.json
@@ -0,0 +1,5 @@
+{
+ "position": 2,
+ "collapsible": true,
+ "collapsed": true
+}
diff --git a/docs/docs/start/self-hosting/enviroment-variables.mdx b/docs/docs/start/self-hosting/enviroment-variables.mdx
new file mode 100644
index 000000000..f4fcb0f44
--- /dev/null
+++ b/docs/docs/start/self-hosting/enviroment-variables.mdx
@@ -0,0 +1,88 @@
+---
+title: Enviroment Variables
+sidebar_position: 1
+sidebar_custom_props:
+ icon: TbVariable
+---
+
+import OptionTable from '@site/src/theme/OptionTable'
+
+## Frontend
+
+
+
+
+## Backend
+
+### Config
+
+
+
+### Tokens
+
+', 'Secret used for the access tokens'],
+ ['ACCESS_TOKEN_EXPIRES_IN', '30m', 'Access token expiration time'],
+ ['LOGIN_TOKEN_SECRET', '', 'Secret used for the login tokens'],
+ ['LOGIN_TOKEN_EXPIRES_IN', '15m', 'Login token expiration time'],
+ ['REFRESH_TOKEN_SECRET', '', 'Secret used for the refresh tokens'],
+ ['REFRESH_TOKEN_EXPIRES_IN', '90d', 'Refresh token expiration time'],
+ ['REFRESH_TOKEN_COOL_DOWN', '1m', 'Refresh token cooldown'],
+ ['API_TOKEN_EXPIRES_IN', '1000y', 'Api token expiration time'],
+ ]}>
+
+### Auth
+
+
+
+### Storage
+
+
+
+### Logging
+
+
+
+### Support
+
+
+', 'Suport chat key'],
+ ['SUPPORT_FRONT_CHAT_ID', '', 'Support chat id'],
+ ]}>
+
+
+### Debug / Development
+
+
\ No newline at end of file
diff --git a/docs/docs/start/self-hosting.mdx b/docs/docs/start/self-hosting/self-hosting.mdx
similarity index 98%
rename from docs/docs/start/self-hosting.mdx
rename to docs/docs/start/self-hosting/self-hosting.mdx
index 12031152b..c7d244d46 100644
--- a/docs/docs/start/self-hosting.mdx
+++ b/docs/docs/start/self-hosting/self-hosting.mdx
@@ -1,6 +1,6 @@
---
title: Self-Hosting
-sidebar_position: 2
+sidebar_position: 1
sidebar_custom_props:
icon: TbServer
---
diff --git a/docs/src/theme/OptionTable/index.js b/docs/src/theme/OptionTable/index.js
new file mode 100644
index 000000000..816821c3e
--- /dev/null
+++ b/docs/src/theme/OptionTable/index.js
@@ -0,0 +1,29 @@
+import styles from "./style.module.css";
+import React from "react";
+
+export default function OptionTable({ options }) {
+ return (
+
+
+
+
+ | Variable |
+ Example |
+ Description |
+
+
+
+ {options.map(([option, example, description]) => (
+
+ |
+ {option}
+ |
+ {example} |
+ {description} |
+
+ ))}
+
+
+
+ );
+}
diff --git a/docs/src/theme/OptionTable/style.module.css b/docs/src/theme/OptionTable/style.module.css
new file mode 100644
index 000000000..f232e1dad
--- /dev/null
+++ b/docs/src/theme/OptionTable/style.module.css
@@ -0,0 +1,87 @@
+.container {
+ mask-image: linear-gradient(
+ to right,
+ transparent 0.8em,
+ white 1.5em,
+ white calc(100% - 1.5em),
+ transparent calc(100% - 0.8em)
+ );
+
+ overflow-x: auto;
+ overscroll-behavior-x: contain;
+ padding-left: 1.5rem;
+ padding-right: 1.5rem;
+ padding-bottom: 1rem;
+ margin-bottom: 1rem;
+ margin-top: 1.5rem;
+ margin-left: -1.5rem;
+ margin-right: -1.5rem;
+}
+
+.container::-webkit-scrollbar {
+ appearance: none;
+}
+
+.optionsTable {
+ width: 100%;
+ font-size: 0.875rem;
+ line-height: 1.25rem;
+ border-collapse: collapse;
+ display: inline-table;
+}
+
+.tableHeader {
+ background: transparent;
+}
+
+.tableHeaderRow {
+ padding-top: 1rem;
+ padding-bottom: 1rem;
+ border-bottom-width: 1px;
+ text-align: left;
+ border-top: none;
+}
+
+.tableHeaderCell {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ font-weight: 600;
+ border-top: none;
+ border-left: none;
+ border-right: none;
+}
+
+.tableBody {
+ color: var(--ifm-color-content);
+ vertical-align: baseline;
+}
+
+.tableRow {
+ border-bottom-width: 1px;
+ border-left: none;
+ border-right: none;
+ border-color: var(--ifm-color-content);
+}
+
+.tableOptionCell {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ font-family: Menlo, Monaco, Consolas, "Liberation Mono", "Courier New",
+ monospace;
+ font-size: 0.75rem;
+ line-height: 1rem;
+ font-weight: 600;
+ line-height: 1.5rem;
+ white-space: pre;
+ color: var(--ifm-color-primary-light);
+ border-right: none;
+ border-left: none;
+}
+
+.tableDescriptionCell {
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ padding-left: 1.5rem;
+ border-right: none;
+ border-left: none;
+}
diff --git a/docs/src/theme/icons.js b/docs/src/theme/icons.js
index 7cc3cefcc..0b0e92c3b 100644
--- a/docs/src/theme/icons.js
+++ b/docs/src/theme/icons.js
@@ -38,4 +38,5 @@ export {
TbBrandGraphql,
TbApi,
TbUsers,
+ TbVariable
} from "react-icons/tb";
diff --git a/packages/twenty-utils/dangerfile.ts b/packages/twenty-utils/dangerfile.ts
index 32620f241..3ab1814ff 100644
--- a/packages/twenty-utils/dangerfile.ts
+++ b/packages/twenty-utils/dangerfile.ts
@@ -11,6 +11,15 @@ if (packageChanged && !lockfileChanged) {
warn(`${message} - ${idea}`);
}
+// Check if .env.example was changed, but not enviroment variable documentation
+const envChanged = danger.git.modified_files.includes('.env.example') || danger.git.modified_files.includes('environment.service.ts');
+const envDocsChanged = danger.git.modified_files.includes('enviroment-variables.mdx');
+if (envChanged && !envDocsChanged) {
+ const message = 'Changes were made to the enviroment variables, but not to the documentation';
+ const idea = 'Please review your changes and check if a change needs to be documented!';
+ warn(`${message} - ${idea}`);
+}
+
// CLA alert if first time contributor
if(danger.github.pr.author_association === 'FIRST_TIME_CONTRIBUTOR' || danger.github.pr.author_association === 'NONE') {