diff --git a/.github/SECURITY.md b/.github/SECURITY.md
index feabe6538..bc3ef6e13 100644
--- a/.github/SECURITY.md
+++ b/.github/SECURITY.md
@@ -22,7 +22,7 @@ While we don't currently have a formal bug bounty program due to the project's n
## Security Features
We are always looking for ways to improve our product's security.
-If you have any recommendations or feature request that could enhance the product's security, we invite you to share them with us via the dicsussion forum.
+If you have any recommendations or feature request that could enhance the product's security, we invite you to share them with us via the discussion forum.
⚠️ Note this does not apply to security vulnerabilities. If you're in doubt, then always follow the security vulnerability process
diff --git a/docs/vale/styles/docs/Acronyms.yml b/.github/styles/docs/Acronyms.yml
similarity index 95%
rename from docs/vale/styles/docs/Acronyms.yml
rename to .github/styles/docs/Acronyms.yml
index 5a9553ee2..9244fa9b5 100644
--- a/docs/vale/styles/docs/Acronyms.yml
+++ b/.github/styles/docs/Acronyms.yml
@@ -12,6 +12,8 @@ exceptions:
- ASP
- CLI
- CPU
+ - CMS
+ - CRM
- CSS
- CSV
- DEBUG
@@ -22,6 +24,7 @@ exceptions:
- GDB
- GET
- GPU
+ - GQL
- GTK
- GUI
- HTML
@@ -36,6 +39,7 @@ exceptions:
- NET
- NOTE
- NVDA
+ - ORM
- OSS
- PATH
- PDF
@@ -58,6 +62,7 @@ exceptions:
- URL
- USB
- UTF
+ - WSL
- XML
- XSS
- YAML
diff --git a/docs/vale/styles/docs/ComplexWords.yml b/.github/styles/docs/ComplexWords.yml
similarity index 100%
rename from docs/vale/styles/docs/ComplexWords.yml
rename to .github/styles/docs/ComplexWords.yml
diff --git a/docs/vale/styles/docs/Contractions.yml b/.github/styles/docs/Contractions.yml
similarity index 100%
rename from docs/vale/styles/docs/Contractions.yml
rename to .github/styles/docs/Contractions.yml
diff --git a/docs/vale/styles/docs/FirstPerson.yml b/.github/styles/docs/FirstPerson.yml
similarity index 100%
rename from docs/vale/styles/docs/FirstPerson.yml
rename to .github/styles/docs/FirstPerson.yml
diff --git a/docs/vale/styles/docs/Foreign.yml b/.github/styles/docs/Foreign.yml
similarity index 100%
rename from docs/vale/styles/docs/Foreign.yml
rename to .github/styles/docs/Foreign.yml
diff --git a/docs/vale/styles/docs/Gender.yml b/.github/styles/docs/Gender.yml
similarity index 100%
rename from docs/vale/styles/docs/Gender.yml
rename to .github/styles/docs/Gender.yml
diff --git a/docs/vale/styles/docs/HeadingColons.yml b/.github/styles/docs/HeadingColons.yml
similarity index 100%
rename from docs/vale/styles/docs/HeadingColons.yml
rename to .github/styles/docs/HeadingColons.yml
diff --git a/docs/vale/styles/docs/HeadingPunctuation.yml b/.github/styles/docs/HeadingPunctuation.yml
similarity index 100%
rename from docs/vale/styles/docs/HeadingPunctuation.yml
rename to .github/styles/docs/HeadingPunctuation.yml
diff --git a/docs/vale/styles/docs/Npm2Yarn.yml b/.github/styles/docs/Npm2Yarn.yml
similarity index 100%
rename from docs/vale/styles/docs/Npm2Yarn.yml
rename to .github/styles/docs/Npm2Yarn.yml
diff --git a/docs/vale/styles/docs/NpmCommands.yml b/.github/styles/docs/NpmCommands.yml
similarity index 100%
rename from docs/vale/styles/docs/NpmCommands.yml
rename to .github/styles/docs/NpmCommands.yml
diff --git a/docs/vale/styles/docs/NpmGlobal.yml b/.github/styles/docs/NpmGlobal.yml
similarity index 100%
rename from docs/vale/styles/docs/NpmGlobal.yml
rename to .github/styles/docs/NpmGlobal.yml
diff --git a/docs/vale/styles/docs/Numbers.yml b/.github/styles/docs/Numbers.yml
similarity index 100%
rename from docs/vale/styles/docs/Numbers.yml
rename to .github/styles/docs/Numbers.yml
diff --git a/docs/vale/styles/docs/Ordinal.yml b/.github/styles/docs/Ordinal.yml
similarity index 100%
rename from docs/vale/styles/docs/Ordinal.yml
rename to .github/styles/docs/Ordinal.yml
diff --git a/docs/vale/styles/docs/Our.yml b/.github/styles/docs/Our.yml
similarity index 100%
rename from docs/vale/styles/docs/Our.yml
rename to .github/styles/docs/Our.yml
diff --git a/docs/vale/styles/docs/OxfordComma.yml b/.github/styles/docs/OxfordComma.yml
similarity index 100%
rename from docs/vale/styles/docs/OxfordComma.yml
rename to .github/styles/docs/OxfordComma.yml
diff --git a/docs/vale/styles/docs/Passive.yml b/.github/styles/docs/Passive.yml
similarity index 100%
rename from docs/vale/styles/docs/Passive.yml
rename to .github/styles/docs/Passive.yml
diff --git a/docs/vale/styles/docs/Percentages.yml b/.github/styles/docs/Percentages.yml
similarity index 100%
rename from docs/vale/styles/docs/Percentages.yml
rename to .github/styles/docs/Percentages.yml
diff --git a/docs/vale/styles/docs/SentenceLength.yml b/.github/styles/docs/SentenceLength.yml
similarity index 100%
rename from docs/vale/styles/docs/SentenceLength.yml
rename to .github/styles/docs/SentenceLength.yml
diff --git a/docs/vale/styles/docs/Spacing.yml b/.github/styles/docs/Spacing.yml
similarity index 100%
rename from docs/vale/styles/docs/Spacing.yml
rename to .github/styles/docs/Spacing.yml
diff --git a/docs/vale/styles/docs/Terms.yml b/.github/styles/docs/Terms.yml
similarity index 100%
rename from docs/vale/styles/docs/Terms.yml
rename to .github/styles/docs/Terms.yml
diff --git a/docs/vale/styles/docs/TypeScript.yml b/.github/styles/docs/TypeScript.yml
similarity index 100%
rename from docs/vale/styles/docs/TypeScript.yml
rename to .github/styles/docs/TypeScript.yml
diff --git a/docs/vale/styles/docs/We.yml b/.github/styles/docs/We.yml
similarity index 90%
rename from docs/vale/styles/docs/We.yml
rename to .github/styles/docs/We.yml
index 564c0d4a6..3801203df 100644
--- a/docs/vale/styles/docs/We.yml
+++ b/.github/styles/docs/We.yml
@@ -1,6 +1,6 @@
extends: existence
message: "Avoid using first-person plural like '%s'."
-level: error
+level: warning
ignorecase: true
tokens:
- we
diff --git a/docs/vale/styles/docs/Wordiness.yml b/.github/styles/docs/Wordiness.yml
similarity index 100%
rename from docs/vale/styles/docs/Wordiness.yml
rename to .github/styles/docs/Wordiness.yml
diff --git a/docs/vale/styles/docs/WritingLevel.yml b/.github/styles/docs/WritingLevel.yml
similarity index 100%
rename from docs/vale/styles/docs/WritingLevel.yml
rename to .github/styles/docs/WritingLevel.yml
diff --git a/docs/vale/styles/write-good/Cliches.yml b/.github/styles/write-good/Cliches.yml
similarity index 100%
rename from docs/vale/styles/write-good/Cliches.yml
rename to .github/styles/write-good/Cliches.yml
diff --git a/docs/vale/styles/write-good/E-Prime.yml b/.github/styles/write-good/E-Prime.yml
similarity index 100%
rename from docs/vale/styles/write-good/E-Prime.yml
rename to .github/styles/write-good/E-Prime.yml
diff --git a/docs/vale/styles/write-good/Illusions.yml b/.github/styles/write-good/Illusions.yml
similarity index 100%
rename from docs/vale/styles/write-good/Illusions.yml
rename to .github/styles/write-good/Illusions.yml
diff --git a/docs/vale/styles/write-good/Passive.yml b/.github/styles/write-good/Passive.yml
similarity index 100%
rename from docs/vale/styles/write-good/Passive.yml
rename to .github/styles/write-good/Passive.yml
diff --git a/docs/vale/styles/write-good/README.md b/.github/styles/write-good/README.md
similarity index 100%
rename from docs/vale/styles/write-good/README.md
rename to .github/styles/write-good/README.md
diff --git a/docs/vale/styles/write-good/So.yml b/.github/styles/write-good/So.yml
similarity index 100%
rename from docs/vale/styles/write-good/So.yml
rename to .github/styles/write-good/So.yml
diff --git a/docs/vale/styles/write-good/ThereIs.yml b/.github/styles/write-good/ThereIs.yml
similarity index 100%
rename from docs/vale/styles/write-good/ThereIs.yml
rename to .github/styles/write-good/ThereIs.yml
diff --git a/docs/vale/styles/write-good/TooWordy.yml b/.github/styles/write-good/TooWordy.yml
similarity index 100%
rename from docs/vale/styles/write-good/TooWordy.yml
rename to .github/styles/write-good/TooWordy.yml
diff --git a/docs/vale/styles/write-good/Weasel.yml b/.github/styles/write-good/Weasel.yml
similarity index 100%
rename from docs/vale/styles/write-good/Weasel.yml
rename to .github/styles/write-good/Weasel.yml
diff --git a/docs/vale/styles/write-good/meta.json b/.github/styles/write-good/meta.json
similarity index 100%
rename from docs/vale/styles/write-good/meta.json
rename to .github/styles/write-good/meta.json
diff --git a/.github/workflows/ci-vale.yaml b/.github/workflows/ci-vale.yaml
new file mode 100644
index 000000000..584a0ace8
--- /dev/null
+++ b/.github/workflows/ci-vale.yaml
@@ -0,0 +1,22 @@
+name: CI-Vale
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+jobs:
+ vale:
+ name: runner / vale
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: errata-ai/vale-action@reviewdog
+ with:
+ files: ${{ steps.directories.outputs.LIST }}
+ fail_on_error: true
+ vale_flags: '--minAlertLevel=error'
+ reporter: github-pr-check
+ token: ${{ github.token }}
+ filter_mode: nofilter
+ env:
+ REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }}
\ No newline at end of file
diff --git a/.vale.ini b/.vale.ini
index 98780c02f..4dc538de4 100644
--- a/.vale.ini
+++ b/.vale.ini
@@ -1,4 +1,4 @@
-StylesPath = docs/vale/styles
+StylesPath = .github/styles
MinAlertLevel = suggestion
@@ -6,6 +6,11 @@ Packages = write-good
[*.{md,mdx}]
BasedOnStyles = Vale, write-good, docs
+Vale.Spelling=warning
+write-good.E-Prime=No
+write-good.So=No
+write-good.ThereIs=No
+Vale.Terms=No
[formats]
diff --git a/docs/docs/contributor/frontend/advanced/style-guide.mdx b/docs/docs/contributor/frontend/advanced/style-guide.mdx
index cd3a636d0..458e0bb56 100644
--- a/docs/docs/contributor/frontend/advanced/style-guide.mdx
+++ b/docs/docs/contributor/frontend/advanced/style-guide.mdx
@@ -86,7 +86,7 @@ const EmailField = ({ value }: EmailFieldProps) => (
#### No Single Variable Prop Spreading in JSX Elements
-We discourage the use of single variable prop spreading in JSX elements, e.g., `{...props}`. This practice often leads to less readable and maintainable code as it's unclear what props are being passed down to the component.
+We discourage the use of single variable prop spreading in JSX elements, like `{...props}`. This practice often leads to less readable and maintainable code as it's unclear what props are being passed down to the component.
```tsx
/* ❌ - Bad, spreads a single variable prop into the underlying component
diff --git a/docs/docs/contributor/local-setup/troubleshooting.mdx b/docs/docs/contributor/local-setup/troubleshooting.mdx
index 4a51e6a51..79c81bec3 100644
--- a/docs/docs/contributor/local-setup/troubleshooting.mdx
+++ b/docs/docs/contributor/local-setup/troubleshooting.mdx
@@ -23,8 +23,8 @@ Try installing [yarn classic](https://classic.yarnpkg.com/lang/en/)!
## Missing metadata schema
-During Twenty installation, your postgres database needs to be provisioned with right schemas, extensions and users.
+During Twenty installation, your postgres database needs to be provisioned with right schemas, extensions, and users.
We provide [different ways](/contributor/local-setup/yarn-setup#step-2-set-up-postgresql-database) to set up your postgres instance.
-If you sucessfully run this provisioning, you should have `default` and `metadata` schemas in your database.
+If you successfully run this provisioning, you should have `default` and `metadata` schemas in your database.
If you don't, make sure you don't have multiple postgres instance running on your computer.
diff --git a/docs/docs/developer/graphql_api.mdx b/docs/docs/developer/graphql_api.mdx
index c7e043924..248a44ebb 100644
--- a/docs/docs/developer/graphql_api.mdx
+++ b/docs/docs/developer/graphql_api.mdx
@@ -11,7 +11,7 @@ Use our [in-browser GraphiQL app](https://docs.twenty.com/graphql/) to browse, q
GraphQL is a query language for APIs that enables declarative data fetching that allows a client to specify exactly what data it needs from the API.
-Instead of exposing various endpoints that return fixed data strcutures, GraphQL exposes only a single endpoint that precisely returns the data that the client asked for. This makes GraphQL more flexible and efficient than other kinds of APIs, like REST APIs.
+Instead of exposing various endpoints that return fixed data structures, GraphQL exposes only a single endpoint that precisely returns the data that the client asked for. This makes GraphQL more flexible and efficient than other kinds of APIs, like REST APIs.
To learn more about GraphQL, we recommend going through this [Introduction](https://www.howtographql.com/basics/0-introduction/).
diff --git a/docs/docs/others/bug-and-requests.mdx b/docs/docs/others/bug-and-requests.mdx
index 8692771bb..bb8de1a2a 100644
--- a/docs/docs/others/bug-and-requests.mdx
+++ b/docs/docs/others/bug-and-requests.mdx
@@ -6,7 +6,7 @@ sidebar_custom_props:
---
## Reporting Bugs
-To report a bug, please [create an issue on Github](https://github.com/twentyhq/twenty/issues/new).
+To report a bug, please [create an issue on GitHub](https://github.com/twentyhq/twenty/issues/new).
## Feature Requests
diff --git a/docs/docs/user-guide/basics/_category_.json b/docs/docs/user-guide/basics/_category_.json
new file mode 100644
index 000000000..daec3e16a
--- /dev/null
+++ b/docs/docs/user-guide/basics/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Basics",
+ "position": 1
+}
diff --git a/docs/docs/user-guide/custom objects.mdx b/docs/docs/user-guide/basics/custom objects.mdx
similarity index 99%
rename from docs/docs/user-guide/custom objects.mdx
rename to docs/docs/user-guide/basics/custom objects.mdx
index 660d0d9cf..e399f4a81 100644
--- a/docs/docs/user-guide/custom objects.mdx
+++ b/docs/docs/user-guide/basics/custom objects.mdx
@@ -24,6 +24,7 @@ To create a new custom object:
+
3. Click on `+ New object` at the top, then choose Custom as the object type. Enter the name (both singular and plural) and description for your custom object and hit Save (at the top right). Using Listing as an example of custom object, the singular would be "listing" and the plural would be "listings" along with a description like "Listings that hosts created to showcase their property."
diff --git a/docs/docs/user-guide/integrations/_category_.json b/docs/docs/user-guide/integrations/_category_.json
new file mode 100644
index 000000000..f8777284b
--- /dev/null
+++ b/docs/docs/user-guide/integrations/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Integrations",
+ "position": 2
+}
diff --git a/docs/docs/user-guide/connect-zapier.mdx b/docs/docs/user-guide/integrations/connect-zapier.mdx
similarity index 100%
rename from docs/docs/user-guide/connect-zapier.mdx
rename to docs/docs/user-guide/integrations/connect-zapier.mdx
diff --git a/docs/docs/user-guide/generating-api-keys.mdx b/docs/docs/user-guide/integrations/generating-api-keys.mdx
similarity index 100%
rename from docs/docs/user-guide/generating-api-keys.mdx
rename to docs/docs/user-guide/integrations/generating-api-keys.mdx
diff --git a/docs/docs/user-guide/others/_category_.json b/docs/docs/user-guide/others/_category_.json
new file mode 100644
index 000000000..9aa323d85
--- /dev/null
+++ b/docs/docs/user-guide/others/_category_.json
@@ -0,0 +1,4 @@
+{
+ "label": "Others",
+ "position": 3
+}
diff --git a/docs/docs/user-guide/glossary.mdx b/docs/docs/user-guide/others/glossary.mdx
similarity index 85%
rename from docs/docs/user-guide/glossary.mdx
rename to docs/docs/user-guide/others/glossary.mdx
index b79471969..e0dfce3a0 100644
--- a/docs/docs/user-guide/glossary.mdx
+++ b/docs/docs/user-guide/others/glossary.mdx
@@ -12,8 +12,8 @@ They are the two fundamental types of records that the CRM is built around:
### Pipelines
A `Pipeline` is a way to track a business process. Pipelines are categorized within a *module* and have *stages*:
-- A **module** contains the logic for a certain business process (e.g. sales, recruiting).
-- **Stages** map the steps in your process (e.g. new, ongoing, won, lost).
+- A **module** contains the logic for a certain business process (for example: sales, recruiting).
+- **Stages** map the steps in your process (for example: new, ongoing, won, lost).
### Workspace
A `Workspace` usually represents a company using Twenty.
diff --git a/docs/docs/user-guide/user-guide.mdx b/docs/docs/user-guide/user-guide.mdx
index c908a1f50..2d1b621be 100644
--- a/docs/docs/user-guide/user-guide.mdx
+++ b/docs/docs/user-guide/user-guide.mdx
@@ -8,4 +8,30 @@ sidebar_custom_props:
isSidebarRoot: true
---
-Coming soon!
\ No newline at end of file
+# Welcome to Twenty's User Guide
+
+This user guide is intended to help you learn how you can use Twenty to build the CRM you want.
+
+In this quick-start guide, we'll walk you through the basics.
+
+## Quick Search
+
+You'll see a search bar at the top of your sidebar. You can also bring up the command bar with the `cmd`/`ctrl` + `k` shortcut to quickly navigate through your workspace, and find people, companies, notes, and more.
+
+The command bar also supports numerous shortcuts for navigation.
+
+## Create Pre-filtered Views
+
+Twenty allows you to add filters to see data that meets certain criteria and hides the rest.
+
+To create a filter in your workspace, click Filter at the top right and select the attribute you'd like to filter your records by. Create your filter and then save changes in a new view by clicking `+ Create view`.
+
+The filtered view is now available to your whole team.
+
+## Add Stages For Opportunities
+
+You can also add more stages to the opportunities board.
+
+On the Opportunities page, click on Options, Stages, then `+ Add Stage`.
+
+You can also edit the stage by clicking on the name.
\ No newline at end of file
diff --git a/docs/src/theme/DocCard/index.js b/docs/src/theme/DocCard/index.js
new file mode 100644
index 000000000..ca8db784b
--- /dev/null
+++ b/docs/src/theme/DocCard/index.js
@@ -0,0 +1,97 @@
+import React from 'react';
+import clsx from 'clsx';
+import Link from '@docusaurus/Link';
+import {
+ findFirstCategoryLink,
+ useDocById,
+} from '@docusaurus/theme-common/internal';
+import isInternalUrl from '@docusaurus/isInternalUrl';
+import {translate} from '@docusaurus/Translate';
+import styles from './styles.module.css';
+import * as icons from "../icons";
+
+
+function CardContainer({href, children}) {
+ return (
+
+ {children}
+
+ );
+}
+function CardLayout({href, icon, title, description}) {
+ return (
+
+