Update docs, remove password strong regex, hide tasks (#755)
* Update docs, remove password strong regex, hide tasks * Update docs
This commit is contained in:
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"label": "Contributing",
|
|
||||||
"position": 2
|
|
||||||
}
|
|
||||||
@ -1,19 +0,0 @@
|
|||||||
---
|
|
||||||
sidebar_custom_props:
|
|
||||||
icon: TbApps
|
|
||||||
---
|
|
||||||
|
|
||||||
# Architecture
|
|
||||||
|
|
||||||
|
|
||||||
import ThemedImage from '@theme/ThemedImage';
|
|
||||||
|
|
||||||
<ThemedImage
|
|
||||||
alt="App Architecture"
|
|
||||||
sources={{
|
|
||||||
light: '/img/architecture-light.png',
|
|
||||||
dark: '/img/architecture-dark.png',
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
|
|
||||||
|
|
||||||
4
docs/docs/developer/_category_.json
Normal file
4
docs/docs/developer/_category_.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"label": "Developer guide",
|
||||||
|
"position": 2
|
||||||
|
}
|
||||||
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
sidebar_position: 0
|
sidebar_position: 0
|
||||||
sidebar_custom_props:
|
sidebar_custom_props:
|
||||||
icon: TbBolt
|
icon: TbArrowBigRight
|
||||||
---
|
---
|
||||||
|
|
||||||
# Local Setup
|
# Local Setup
|
||||||
@ -10,7 +10,7 @@ This section will guide you through the Twenty installation on your local enviro
|
|||||||
Twenty is designed to be developer-friendly, and your local installation should be up and running in a few minutes.
|
Twenty is designed to be developer-friendly, and your local installation should be up and running in a few minutes.
|
||||||
|
|
||||||
In a nutshell:
|
In a nutshell:
|
||||||
- we recommend using `yarn` installation but we also provide an easy way to provide the project with Docker.
|
- We recommend using `yarn` installation but we also provide an easy way to provide the project with Docker.
|
||||||
- Twenty uses PostgreSQL as a database. If we don't have one available, we also provide a one-line command to provision a PostgreSQL instance through Docker.
|
- Twenty uses PostgreSQL as a database. If we don't have one available, we also provide a one-line command to provision a PostgreSQL instance through Docker.
|
||||||
|
|
||||||
The repository is structured as follows:
|
The repository is structured as follows:
|
||||||
@ -94,9 +94,9 @@ Browse [http://localhost:3001](http://localhost:3001). You can connect using our
|
|||||||
## Docker install
|
## Docker install
|
||||||
|
|
||||||
If you wish, you can also provision the project with docker. This come with a few advantages:
|
If you wish, you can also provision the project with docker. This come with a few advantages:
|
||||||
- provides the exact same environment as our core developer team
|
- It provides the exact same environment as our core developer team.
|
||||||
- includes some additional dependencies (such as `playwright`) that you might need if you wish to contribute to some advanced areas of the project.
|
- It includes some additional dependencies (such as `playwright`) that you might need if you wish to contribute to some advanced areas of the project.
|
||||||
- provisions a postgres database
|
- It provisions a postgres database.
|
||||||
|
|
||||||
### 1. Pre-requisites
|
### 1. Pre-requisites
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ The default values should work out of the box.
|
|||||||
We provide a containerized environment with Docker and orchestrated with docker-compose.
|
We provide a containerized environment with Docker and orchestrated with docker-compose.
|
||||||
This install will also provision a Postgres container.
|
This install will also provision a Postgres container.
|
||||||
|
|
||||||
**Note:**: the configuration is stored `infra/dev` folder but you can run `make` commands direclty from the root folder.
|
**Note:** the configuration is stored `infra/dev` folder but you can run `make` commands direclty from the root folder.
|
||||||
|
|
||||||
```
|
```
|
||||||
make build
|
make build
|
||||||
@ -157,9 +157,9 @@ server:
|
|||||||
make server-start
|
make server-start
|
||||||
```
|
```
|
||||||
|
|
||||||
- front available on: http://localhost:3001
|
- front available on: [http://localhost:3001](http://localhost:3001)
|
||||||
- server available on: http://localhost:3000/healthz
|
- server available on: [http://localhost:3000/graphql](http://localhost:3000/graphql)
|
||||||
- postgres: available on http://localhost:5432 and should contain database named `default`
|
- postgres: available on [http://localhost:5432](http://localhost:5432) and should contain database named `default`
|
||||||
|
|
||||||
### 7. Sign in to your local Twenty installation
|
### 7. Sign in to your local Twenty installation
|
||||||
|
|
||||||
4
docs/docs/hosting/_category_.json
Normal file
4
docs/docs/hosting/_category_.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"label": "Self-Hosting",
|
||||||
|
"position": 3
|
||||||
|
}
|
||||||
@ -2,7 +2,7 @@
|
|||||||
sidebar_custom_props:
|
sidebar_custom_props:
|
||||||
icon: TbServer
|
icon: TbServer
|
||||||
---
|
---
|
||||||
# Self hosting
|
# Self-hosting
|
||||||
|
|
||||||
Right now, docker containers are the only option we currently support. However we are actively working on providing simple options to self host Twenty yourself.
|
Right now, docker containers are the only option we currently support. However we are actively working on providing simple options to self host Twenty yourself.
|
||||||
Feel free to open issues on [Github](https://github.com/twentyhq/twenty) if you want a specific cloud provider to be supported.
|
Feel free to open issues on [Github](https://github.com/twentyhq/twenty) if you want a specific cloud provider to be supported.
|
||||||
@ -42,4 +42,4 @@ We are working on providing a joint docker image containing Twenty front and ser
|
|||||||
|
|
||||||
## Railway (soon)
|
## Railway (soon)
|
||||||
|
|
||||||
Railway(railway.app) is an infrastructure platform that let you deploy to the cloud in one-click
|
[Railway](railway.app) is an infrastructure platform that let you deploy to the cloud in one-click. We are currently working on making it available.
|
||||||
@ -10,7 +10,7 @@ import ThemedImage from '@theme/ThemedImage';
|
|||||||
# Introduction
|
# Introduction
|
||||||
|
|
||||||
Twenty is an Open Source CRM.
|
Twenty is an Open Source CRM.
|
||||||
<ThemedImage sources={{light: "./img/preview-docs-light.png", dark:"./img/preview-docs-dark.png"}} style={{width:'100%', maxWidth:'800px'}}/>
|
<ThemedImage sources={{light: "./img/light-doc-preview.png", dark:"./img/dark-doc-preview.png"}} style={{width:'100%', maxWidth:'800px'}}/>
|
||||||
|
|
||||||
|
|
||||||
## Why did we create Twenty?
|
## Why did we create Twenty?
|
||||||
@ -24,11 +24,13 @@ We wish to create a tool that users will enjoy, and that engineers will want to
|
|||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
|
|
||||||
There are three ways for you to get started which are documented in the left sidebar:
|
There are three ways for you to get started with Twenty:
|
||||||
- **Cloud:** the fastest and easiest way to try the app (it's free)
|
- **Cloud:** the fastest and easiest way to try the app (it's free)
|
||||||
- **Local:** if you're a developer and would like to experiment or contribute to the app
|
- **Local:** if you're a developer and would like to experiment or contribute to the app
|
||||||
- **Self-hosting:** if you want greater control over your data and to run the app on your own server
|
- **Self-hosting:** if you want greater control over your data and to run the app on your own server
|
||||||
|
|
||||||
|
See our [Getting Started](./start/getting-started/) guide to learn more.
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
Contributions are what makes the open source community such an amazing place.
|
Contributions are what makes the open source community such an amazing place.
|
||||||
Code contributions through pull request are most welcome.
|
Code contributions through pull request are most welcome.
|
||||||
|
|||||||
@ -4,3 +4,6 @@ sidebar_custom_props:
|
|||||||
icon: TbTerminal2
|
icon: TbTerminal2
|
||||||
---
|
---
|
||||||
|
|
||||||
|
# CLI (soon)
|
||||||
|
|
||||||
|
Available soon!
|
||||||
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"label": "Others",
|
"label": "Others",
|
||||||
"position": 5
|
"position": 4
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
{
|
{
|
||||||
"label": "Getting started",
|
"label": "Start",
|
||||||
"position": 1
|
"position": 1
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,10 +0,0 @@
|
|||||||
---
|
|
||||||
sidebar_custom_props:
|
|
||||||
icon: TbCloud
|
|
||||||
---
|
|
||||||
|
|
||||||
# Cloud setup
|
|
||||||
|
|
||||||
The easiest way to quickly try the app is to signup on [app.twenty.com](https://app.twenty.com).
|
|
||||||
|
|
||||||
The signup is free.
|
|
||||||
19
docs/docs/start/getting-started.mdx
Normal file
19
docs/docs/start/getting-started.mdx
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
sidebar_custom_props:
|
||||||
|
icon: TbBolt
|
||||||
|
---
|
||||||
|
import ThemedImage from '@theme/ThemedImage';
|
||||||
|
|
||||||
|
# Getting Started
|
||||||
|
|
||||||
|
## Trying Twenty
|
||||||
|
|
||||||
|
The easiest way to quickly try the app is to signup on [app.twenty.com](https://app.twenty.com).
|
||||||
|
|
||||||
|
The signup is free.
|
||||||
|
|
||||||
|
<ThemedImage sources={{light: "../../img/light-sign-in.png", dark:"../../img/dark-sign-in.png"}} style={{width:'100%', maxWidth:'800px'}}/>
|
||||||
|
|
||||||
|
## Developer documentation
|
||||||
|
|
||||||
|
If you are looking to locally install the project, either to try it or to contribute, you will find all the information you need in our [developer guide](../developer/local-setup).
|
||||||
@ -6,7 +6,7 @@ import Link from '@docusaurus/Link';
|
|||||||
import isInternalUrl from '@docusaurus/isInternalUrl';
|
import isInternalUrl from '@docusaurus/isInternalUrl';
|
||||||
import IconExternalLink from '@theme/Icon/ExternalLink';
|
import IconExternalLink from '@theme/Icon/ExternalLink';
|
||||||
import styles from './styles.module.css';
|
import styles from './styles.module.css';
|
||||||
import { TbFaceIdError, TbTerminal2, TbCloud, TbServer, TbBolt, TbApps, TbTopologyStar, TbChartDots, TbBug, TbVocabulary } from "react-icons/tb";
|
import { TbFaceIdError, TbTerminal2, TbCloud, TbServer, TbBolt, TbApps, TbTopologyStar, TbChartDots, TbBug, TbVocabulary, TbArrowBigRight } from "react-icons/tb";
|
||||||
|
|
||||||
|
|
||||||
export default function DocSidebarItemLink({
|
export default function DocSidebarItemLink({
|
||||||
@ -23,6 +23,7 @@ export default function DocSidebarItemLink({
|
|||||||
let icons = {
|
let icons = {
|
||||||
'TbTerminal2': TbTerminal2,
|
'TbTerminal2': TbTerminal2,
|
||||||
'TbCloud': TbCloud,
|
'TbCloud': TbCloud,
|
||||||
|
'TbArrowBigRight': TbArrowBigRight,
|
||||||
'TbServer': TbServer,
|
'TbServer': TbServer,
|
||||||
'TbBolt': TbBolt,
|
'TbBolt': TbBolt,
|
||||||
'TbApps': TbApps,
|
'TbApps': TbApps,
|
||||||
|
|||||||
BIN
docs/static/img/dark-doc-preview.png
vendored
Normal file
BIN
docs/static/img/dark-doc-preview.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 354 KiB |
BIN
docs/static/img/dark-sign-in.png
vendored
Normal file
BIN
docs/static/img/dark-sign-in.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 328 KiB |
BIN
docs/static/img/light-doc-preview.png
vendored
Normal file
BIN
docs/static/img/light-doc-preview.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 408 KiB |
BIN
docs/static/img/light-sign-in.png
vendored
Normal file
BIN
docs/static/img/light-sign-in.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 311 KiB |
BIN
docs/static/img/preview-docs-dark.png
vendored
BIN
docs/static/img/preview-docs-dark.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 2.1 MiB |
BIN
docs/static/img/preview-docs-light.png
vendored
BIN
docs/static/img/preview-docs-light.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 2.2 MiB |
@ -26,7 +26,7 @@ export function CommentThreadCreateButton({
|
|||||||
<Button
|
<Button
|
||||||
icon={<IconCheckbox size={theme.icon.size.sm} />}
|
icon={<IconCheckbox size={theme.icon.size.sm} />}
|
||||||
title="Task"
|
title="Task"
|
||||||
onClick={onTaskClick}
|
soon={true}
|
||||||
/>
|
/>
|
||||||
<Button
|
<Button
|
||||||
icon={<IconTimelineEvent size={theme.icon.size.sm} />}
|
icon={<IconTimelineEvent size={theme.icon.size.sm} />}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import {
|
|||||||
DropdownButton,
|
DropdownButton,
|
||||||
DropdownOptionType,
|
DropdownOptionType,
|
||||||
} from '@/ui/button/components/DropdownButton';
|
} from '@/ui/button/components/DropdownButton';
|
||||||
import { IconCheck, IconNotes } from '@/ui/icon/index';
|
import { IconNotes } from '@/ui/icon/index';
|
||||||
import {
|
import {
|
||||||
ActivityType,
|
ActivityType,
|
||||||
CommentThread,
|
CommentThread,
|
||||||
@ -17,7 +17,6 @@ export function CommentThreadTypeDropdown({ commentThread }: OwnProps) {
|
|||||||
const [updateCommentThreadMutation] = useUpdateCommentThreadMutation();
|
const [updateCommentThreadMutation] = useUpdateCommentThreadMutation();
|
||||||
const options: DropdownOptionType[] = [
|
const options: DropdownOptionType[] = [
|
||||||
{ label: 'Note', key: 'note', icon: <IconNotes /> },
|
{ label: 'Note', key: 'note', icon: <IconNotes /> },
|
||||||
{ label: 'Task', key: 'task', icon: <IconCheck /> },
|
|
||||||
];
|
];
|
||||||
|
|
||||||
function getSelectedOptionKey() {
|
function getSelectedOptionKey() {
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
export const PASSWORD_REGEX = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$/;
|
export const PASSWORD_REGEX = /^.{8,}$/;
|
||||||
|
|||||||
@ -53,10 +53,7 @@ const validationSchema = Yup.object()
|
|||||||
exist: Yup.boolean().required(),
|
exist: Yup.boolean().required(),
|
||||||
email: Yup.string().email('Email must be a valid email').required(),
|
email: Yup.string().email('Email must be a valid email').required(),
|
||||||
password: Yup.string()
|
password: Yup.string()
|
||||||
.matches(
|
.matches(PASSWORD_REGEX, 'Password must contain at least 8 characters')
|
||||||
PASSWORD_REGEX,
|
|
||||||
'Password must contain at least 8 characters, one uppercase and one number',
|
|
||||||
)
|
|
||||||
.required(),
|
.required(),
|
||||||
})
|
})
|
||||||
.required();
|
.required();
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import * as bcrypt from 'bcrypt';
|
import * as bcrypt from 'bcrypt';
|
||||||
|
|
||||||
export const PASSWORD_REGEX = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$/;
|
export const PASSWORD_REGEX = /^.{8,}$/;
|
||||||
|
|
||||||
const saltRounds = 10;
|
const saltRounds = 10;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user