Browse Source

Merge pull request #1671 from nocodb/docs/v.0.90.0

v0.90.0 docs draft
pull/1679/head
աɨռɢӄաօռɢ 3 years ago committed by GitHub
parent
commit
683474efee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 36
      packages/noco-docs/content/en/FAQs.md
  2. 32
      packages/noco-docs/content/en/developer-resources/accessing-apis.md
  3. 25
      packages/noco-docs/content/en/developer-resources/api-tokens.md
  4. 9
      packages/noco-docs/content/en/developer-resources/caching.md
  5. 9
      packages/noco-docs/content/en/developer-resources/data-apis.md
  6. 793
      packages/noco-docs/content/en/developer-resources/graphql-apis.md
  7. 9
      packages/noco-docs/content/en/developer-resources/meta-apis.md
  8. 26
      packages/noco-docs/content/en/developer-resources/sdk.md
  9. 61
      packages/noco-docs/content/en/engineering/publish.md
  10. 176
      packages/noco-docs/content/en/getting-started/installation.md
  11. 55
      packages/noco-docs/content/en/getting-started/upgrading.md
  12. 27
      packages/noco-docs/content/en/index.md
  13. 10
      packages/noco-docs/content/en/setup-and-usages/audit.md
  14. 47
      packages/noco-docs/content/en/setup-and-usages/column-operations.md
  15. 122
      packages/noco-docs/content/en/setup-and-usages/column-types.md
  16. 75
      packages/noco-docs/content/en/setup-and-usages/dashboard.md
  17. 7
      packages/noco-docs/content/en/setup-and-usages/formulas.md
  18. 19
      packages/noco-docs/content/en/setup-and-usages/languages.md
  19. 43
      packages/noco-docs/content/en/setup-and-usages/lookup.md
  20. 37
      packages/noco-docs/content/en/setup-and-usages/meta-management.md
  21. 4
      packages/noco-docs/content/en/setup-and-usages/primary-value.md
  22. 35
      packages/noco-docs/content/en/setup-and-usages/share-base.md
  23. 33
      packages/noco-docs/content/en/setup-and-usages/share-view.md
  24. 37
      packages/noco-docs/content/en/setup-and-usages/sync-schema.md
  25. 49
      packages/noco-docs/content/en/setup-and-usages/team-and-auth.md
  26. 5
      packages/noco-docs/content/en/setup-and-usages/usage-information.md
  27. 2
      packages/noco-docs/nuxt.config.js
  28. 2
      packages/noco-docs/package.json

36
packages/noco-docs/content/en/FAQs.md

@ -3,43 +3,49 @@ title: 'FAQs'
description: 'FAQs'
position: 1000000
category: 'FAQ'
fullscreen: true
menuTitle: 'FAQs'
---
## How to upgrade NocoDB ?
- Please see [here](https://docs.nocodb.com/getting-started/upgrading)
## How to export CSV from the grid view ?
- Available since [0.81.1](https://github.com/nocodb/nocodb/releases/tag/0.81.1)
## How to share the project with read only access ?
- Either you can invite by email with 'viewer' access control
- Share the base with publicly accessible link. Available since [0.82.0](https://github.com/nocodb/nocodb/releases/tag/0.82.0)
## How to check my current NocoDB version ?
- You can hover the NocoDB icon on the top left corner or check ``PackageVersion`` in Project info.
![image](https://user-images.githubusercontent.com/35857179/127765903-3ae876ad-6b46-4520-9d11-679b80eb7b08.png)
![image](https://user-images.githubusercontent.com/35857179/161957765-922058dc-dba1-44c5-95f4-2924c875e1c6.png)
## How to check my Project info ?
- You can click on top right icon and click ``Copy Project Info``.
![image](https://user-images.githubusercontent.com/35857179/127765860-968b0c64-f08d-4674-9ecc-4d5c5a00428b.png)
![image](https://user-images.githubusercontent.com/35857179/161957820-e0ac8b04-aafd-40c3-8fa8-2fdaa7dc157f.png)
You should see the similar result as below.
```
Node: **v16.5.0**
Arch: **x64**
Node: **v16.14.0**
Arch: **arm64**
Platform: **darwin**
Docker: **false**
Database: **sqlite3**
ProjectOnRootDB: **true**
RootDB: **sqlite3**
PackageVersion: **0.11.6**
Database: **mysql2**
ProjectOnRootDB: **false**
RootDB: **mysql2**
PackageVersion: **0.90.0**
```
## What is available in free version ?
- NocoDB has just one version that is free & open source.
- In it you will notice advanced features are all available for free.
- ACL
@ -53,8 +59,15 @@ PackageVersion: **0.11.6**
- And we would never move these features from free to an enterprise version of NocoDB.
- There is no limitations to number of projects, rows or columns either.
## What is the difference between Auth Token and API Token ?
Auth Token is a JWT Token generated based on the logged-in user. By default, the token is only valid for 10 hours. However, you can change the value by defining it using environment variable `NC_JWT_EXPIRES_IN`. If you are passing Auth Token, make sure that the header is called `xc-auth`.
API Token is a Nano ID with a length of 40. If you are passing API Token, make sure that the header is called `xc-token`.
## Do you plan to have Enterprise Edition ?
## Do you plan to have enterprise edition ?
For features that make sense for enterprises like below - yes
- SSO, SLA, Organisation wide reports and analytics,
- Advanced Audit or ACL,
@ -63,6 +76,7 @@ For features that make sense for enterprises like below - yes
And increasing number of our customers are requesting it.
## How do we decide if a feature is enterprise or not ?
## How do we decide if a feature is Enterprise or not ?
- Depends on the effort and whether the intended users are enterprises.

32
packages/noco-docs/content/en/developer-resources/accessing-apis.md

@ -8,12 +8,18 @@ menuTitle: 'Accessing APIs'
## REST APIs
- Go to NocoDB Project, click the rightmost button and click ``Copy auth token``.
- Go to NocoDB Project, click the rightmost button and click ``Copy Auth Token``.
![image](https://user-images.githubusercontent.com/35857179/126187328-745943f2-c780-4109-b967-1b3f1c4a1dcd.png)
<alert>
Auth Token is a JWT Token generated based on the logged-in user. By default, the token is only valid for 10 hours. However, you can change the value by defining it using environment variable NC_JWT_EXPIRES_IN. If you are passing Auth Token, make sure that the header is called xc-auth.
</alert>
![image](https://user-images.githubusercontent.com/35857179/161957971-e4888983-25e1-46a4-8419-7b9fae6cb6fa.png)
- Click the same button and click ``Swagger APIs Doc``.
<!-- TODO: update screenshot -->
![image](https://user-images.githubusercontent.com/35857179/126187534-32c41de9-f17d-4f95-9acc-88aaed044b36.png)
- Select ``Schemes`` and Click ``Authorize``.
@ -23,25 +29,3 @@ menuTitle: 'Accessing APIs'
- Paste the token you just copy in step 1 and click Authorize
![image](https://user-images.githubusercontent.com/35857179/126188510-b3790348-6809-4182-911a-a4031ace2fd2.png)
## GraphQL APIs
- Go to NocoDB Project, click the rightmost button and click ``Copy auth token``.
![image](https://user-images.githubusercontent.com/35857179/126187624-03ee550d-71eb-499f-ad8b-54e32a94f729.png)
- Click the same button and click ``GraphQL APIs`.
![image](https://user-images.githubusercontent.com/35857179/126187581-22503b8d-f6dd-4a4e-8b12-a475c27354a2.png)
- Click ``REQUEST HEADERS``.
![image](https://user-images.githubusercontent.com/35857179/126188122-1aa7b153-f05a-46fd-953b-751376d708bf.png)
- Paste the token you just copy in step 1.
```json
{
"xc-auth": "YOUR_AUTH_TOKEN"
}
```

25
packages/noco-docs/content/en/developer-resources/api-tokens.md

@ -6,20 +6,31 @@ category: 'Developer Resources'
menuTitle: 'API Tokens'
---
## API Tokens
NocoDB allows creating API tokens which allow it to be integrated seamlessly with 3rd party apps.
<alert>
API Token is a Nano ID with a length of 40. If you are passing API Token, make sure that the header is called xc-token.
</alert>
### Which HTTP Header to use ?
- ```xc-token``` header should be set when invoking the NocoDB APIs with the token.
### How to create a token ?
- ![1](https://user-images.githubusercontent.com/5435402/133734223-49bb1567-6cd2-43e5-bdda-aaccda741070.png)
- ![2](https://user-images.githubusercontent.com/5435402/133734234-5ca542b1-5843-46f7-b97b-9e686c6bf7ac.png)
- ![3](https://user-images.githubusercontent.com/5435402/133734238-33d5bdd0-5c97-4dbe-8e49-744193c3ac20.png)
- ![4](https://user-images.githubusercontent.com/5435402/133734239-7b530235-3352-497b-b23c-3a701290a569.png)
- ![5](https://user-images.githubusercontent.com/5435402/133734241-0f25bbd0-ab92-430a-9987-cc745d5b1b47.png)
- ![6](https://user-images.githubusercontent.com/5435402/133734243-6dc8527e-573d-45e2-8cd8-13a8beea0dfa.png)
1. Go to `Team & Settings` from the left navigation drawer
![image](https://user-images.githubusercontent.com/35857179/161902474-fd06678c-a171-4237-b171-dc028b3753de.png)
2. Click `API Tokens Management`
![image](https://user-images.githubusercontent.com/35857179/161958345-83cb60bf-80f1-4d11-9e9c-52d0b05c7677.png)
3. Click Add New Token
![image](https://user-images.githubusercontent.com/35857179/161958563-dc5d380a-26c5-4b78-9d4b-e40188bef05a.png)
4. Type an recognizable name for your token and click `Generate`
![image](https://user-images.githubusercontent.com/35857179/161958676-e4faa321-13ca-4b11-8d22-1332c522dde7.png)
5. Copy API token to your clipboard
![image](https://user-images.githubusercontent.com/35857179/161958822-b0689a6a-a864-429f-8bb2-71eb92808339.png)

9
packages/noco-docs/content/en/developer-resources/caching.md

@ -0,0 +1,9 @@
---
title: 'Caching'
description: 'Caching'
position: 1300
category: 'Developer Resources'
menuTitle: 'Caching'
---
We introduced a Caching layer to store meta data by utilising Redis. By default, caching is enabled. If you prefer not to cache, you can configure it by setting environment variable `NC_DISABLE_CACHE` to `true`. You can also use your own Redis instance by setting environment variable `NC_REDIS_URL` (e.g. `redis://:authpassword@127.0.0.1:6380/4`). If you don't specify it, by default, it will be cached in memory.

9
packages/noco-docs/content/en/developer-resources/data-apis.md

@ -0,0 +1,9 @@
---
title: 'Data APIs'
description: 'Data APIs'
position: 1200
category: 'Developer Resources'
menuTitle: 'Data APIs'
---
TBC

793
packages/noco-docs/content/en/developer-resources/graphql-apis.md

@ -5,791 +5,10 @@ category: 'Developer Resources'
menuTitle: 'GraphQL APIs'
---
## Features
* Generates GraphQL APIs for **ANY** MySql, Postgres, MSSQL, Sqlite database :fire:
* Serves GraphQL queries irrespective of naming conventions of primary keys, foreign keys, tables etc :fire:
* Support for composite primary keys :fire:
* Usual suspects : CRUD, List, FindOne, Count, Exists, Distinct
* Pagination
* Sorting
* Column filtering - Fields :fire:
* Row filtering - Where :fire:
* Bulk insert, Bulk delete, Bulk read :fire:
* Relations - automatically detected
* Aggregate functions
* More
* Upload single file
* Upload multiple files
* Download file
* Authentication
* Access Control
## API Overview
### Query
| **Resolver** | **Arguments** | **Returns** | **Description** |
|---|---|---|---|
| [TableName**List**](#tablenamelist) | where: String, limit: Int, offset: Int, sort: String | [TableName] | List of table rows |
| [TableName**Read**](#tablenameread) | id:String | TableName | Get row by primary key |
| [TableName**Exists**](#tablenameexists) | id: String | Boolean | Check row exists by primary key |
| [TableName**FindOne**](#tablenamefindone) | where: String | TableName | Find row by where conditions |
| [TableName**Count**](#tablenamecount) | where: String | Int | Get rows count |
| [TableName**Distinct**](#tablenamedistinct) | columnName: String, where: String, limit: Int, offset: Int, sort: String | [TableName] | Get distinct rows based on provided column names |
| [TableName**GroupBy**](#tablenamegroupby) | fields: String, having: String, limit: Int, offset: Int, sort: String | [TableNameGroupBy] | Group rows by provided columns |
| [TableName**Aggregate**](#tablenameaggregate) | columnName: String!, having: String, limit: Int, offset: Int, sort: String, func: String! | [TableNameAggregate] | Do aggregation based on provided column name aggregate function |
| [TableName**Distribution**](#tablenamedistribution) | min: Int, max: Int, step: Int, steps: String, columnName: String! | [distribution] | Get distributed list |
### Mutations
| **Resolver** | **Arguments** | **Returns** | **Description** |
|---|---|---|---|
| [TableName**Create**](#tablenamecreate) | data:TableNameInput | TableName | Insert row into table |
| [TableName**Update**](#tablenameupdate) | id:String,data:TableNameInput | TableName | Update table row using primary key |
| [TableName**Delete**](#tablenamedelete) | id:String | TableName | Delete table row using primary id |
| [TableName**CreateBulk**](#tabelenamecreatebulk) | data: [TableNameInput] | [Int] | Bulk row insert |
| [TableName**UpdateBulk**](#tablenamebulk) | data: [TableNameInput] | [Int] | Bulk row update |
| [TableName**DeleteBulk**](#tablenamedeletebulk) | data: [TableNameInput] | [Int] | Bulk row delete |
### Query params
| **Param** | **Description** | **Default value** |**Example Value**|
|---|---|---|---|
| where | Logical Expression | | `(colName,eq,colValue)~or(colName2,gt,colValue2)` <br />[Usage: Comparison operators](#comparison-operators) <br />[Usage: Logical operators](#logical-operators) |
| limit | Number of rows to get(SQL limit value) | 10 | 20 |
| offset | Offset for pagination(SQL offset value) | 0 | 20 |
| sort | Sort column name, where use `-` as prefix for descending sort | | column_name |
| fields | Required column names in result | * | column_name_1,column_name_2 |
#### Comparison operators
```
eq - '=' - (colName,eq,colValue)
not - '!=' - (colName,not,colValue)
gt - '>' - (colName,gt,colValue)
ge - '>=' - (colName,ge,colValue)
lt - '<' - (colName,lt,colValue)
le - '<=' - (colName,le,colValue)
is - 'is' - (colName,is,true/false/null)
isnot - 'is not' - (colName,isnot,true/false/null)
in - 'in' - (colName,in,val1,val2,val3,val4)
btw - 'between' - (colName,btw,val1,val2)
nbtw - 'not between'- (colName,nbtw,val1,val2)
like - 'like' - (colName,like,%name)
```
#### Example use of comparison operators - complex example
```
PaymentList(where:"(checkNumber,eq,JM555205)~or((amount,gt,200)~and(amount,lt,2000))")
```
#### Logical operators
```
~or - 'or'
~and - 'and'
~not - 'not'
```
## Examples
### TableNameList
<code-group>
<code-block label="Request" active>
```
CountryList {
country_id
country
last_update
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryList": [
{
"country_id": 1,
"country": "Afghanistan",
"last_update": "1139978640000",
"CityCount": 1
},
{
"country_id": 2,
"country": "Algeria",
"last_update": "1139978640000",
"CityCount": 3
},
{
"country_id": 3,
"country": "American Samoa",
"last_update": "1139978640000",
"CityCount": 1
}
]
}
}
```
</code-block>
</code-group>
#### List + where
<code-group>
<code-block label="Request" active>
```
{
CountryList(where:"(country,like,United%)") {
country_id
country
last_update
CityCount
}
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryList": [
{
"country_id": 101,
"country": "United Arab Emirates",
"last_update": "1139958840000",
"CityCount": 3
},
{
"country_id": 102,
"country": "United Kingdom",
"last_update": "1139958840000",
"CityCount": 8
},
{
"country_id": 103,
"country": "United States",
"last_update": "1139958840000",
"CityCount": 35
}
]
}
}
```
</code-block>
</code-group>
[Usage : comparison operators](#comparison-operators)
#### List + where + sort
<code-group>
<code-block label="Request" active>
```
{
CountryList(where:"(country,like,United%)",sort:"-country") {
country_id
country
last_update
CityCount
}
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryList": [
{
"country_id": 103,
"country": "United States",
"last_update": "1139958840000",
"CityCount": 35
},
{
"country_id": 102,
"country": "United Kingdom",
"last_update": "1139958840000",
"CityCount": 8
},
{
"country_id": 101,
"country": "United Arab Emirates",
"last_update": "1139958840000",
"CityCount": 3
}
]
}
}
```
</code-block>
</code-group>
#### List + where + sort + offset
<code-group>
<code-block label="Request" active>
```
{
CountryList(where:"(country,like,United%)",sort:"-country",offset:1) {
country_id
country
last_update
CityCount
}
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryList": [
{
"country_id": 102,
"country": "United Kingdom",
"last_update": "1139958840000",
"CityCount": 8
},
{
"country_id": 101,
"country": "United Arab Emirates",
"last_update": "1139958840000",
"CityCount": 3
}
]
}
}
```
</code-block>
</code-group>
#### List + limit
<code-group>
<code-block label="Request" active>
```
{
CountryList(limit:6) {
country
}
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryList": [
{
"country": "Afghanistan"
},
{
"country": "Algeria"
},
{
"country": "American Samoa"
},
{
"country": "Angola"
},
{
"country": "Anguilla"
},
{
"country": "Argentina"
}
]
}
}
```
</code-block>
</code-group>
[](#query)
### TableNameRead
<code-group>
<code-block label="Request" active>
```
CountryRead(id:"1") {
country_id
country
last_update
}
```
</code-block>
<code-block label="Response">
```json
"data": {
"CountryRead": {
"country_id": 1,
"country": "Afghanistan",
"last_update": "1139978640000",
"CityCount": 1
}
}
```
</code-block>
</code-group>
[](#query)
### TableNameExists
<code-group>
<code-block label="Request" active>
```
CountryExists(id:"1")
```
</code-block>
<code-block label="Response">
```json
"data": {
"CountryExists": true
}
```
</code-block>
</code-group>
[](#query)
### TableNameFindOne
<code-group>
<code-block label="Request" active>
```
CountryFindOne(where:"(country_id,eq,1)") {
country_id
country
last_update
CityCount
}
```
</code-block>
<code-block label="Response">
```json
"data": {
"CountryFindOne": {
"country_id": 1,
"country": "Afghanistan",
"last_update": "1139978640000",
"CityCount": 1
}
}
```
</code-block>
</code-group>
[](#query)
### TableNameCount
<code-group>
<code-block label="Request" active>
```
CountryCount
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryCount": 109
}
}
```
</code-block>
</code-group>
[](#query)
### TableNameDistinct
<code-group>
<code-block label="Request" active>
```
{
CountryDistinct(columnName:"last_update",limit:3) {
last_update
}
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryDistinct": [
{
"last_update": "1139958840000"
},
{
"last_update": "1578323893000"
},
{
"last_update": "1578321201000"
}
]
}
}
```
</code-block>
</code-group>
[](#query)
### TableNameGroupBy
<code-group>
<code-block label="Request" active>
```
{
CountryGroupBy(fields:"last_update",limit:1) {
country_id
country
last_update
count
}
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryGroupBy": [
{
"country_id": null,
"country": null,
"last_update": "1139958840000",
"count": 109
}
]
}
}
```
</code-block>
</code-group>
[](#query)
### TableNameAggregate
<code-group>
<code-block label="Request" active>
```
{
PaymentAggregate(columnName:"amount",func:"min,max,avg,count") {
count
avg
min
}
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"PaymentAggregate": [
{
"count": 16048,
"avg": 4.200743,
"min": 0
}
]
}
}
```
[](#query)
### TableNameDistribution
<code-group>
<code-block label="Request" active>
```
{
PaymentDistribution (columnName:"amount"){
range
count
}
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"PaymentDistribution": [
{
"range": "0-4",
"count": 8302
},
{
"range": "5-8",
"count": 3100
},
{
"range": "9-11.99",
"count": 371
}
]
}
}
```
</code-block>
</code-group>
[](#mutations)
### TableNameCreate
<code-group>
<code-block label="Request" active>
```
mutation {
CountryCreate(data: {country: "test"}) {
country_id
country
last_update
CityCount
}
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryCreate": {
"country_id": 10264,
"country": "test",
"last_update": null,
"CityCount": 0
}
}
}
```
</code-block>
</code-group>
[](#mutations)
### TableNameUpdate
<code-group>
<code-block label="Request" active>
```
mutation {
CountryUpdate(data: {country: "test_new"}, id: "10264") {
country_id
country
last_update
CityCount
}
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryUpdate": {
"country_id": null,
"country": null,
"last_update": null,
"CityCount": null
}
}
}
```
</code-block>
</code-group>
[](#mutations)
### TableNameDelete
<code-group>
<code-block label="Request" active>
```
mutation {
CountryDelete(id: "10264") {
country_id
country
last_update
CityCount
}
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryDelete": {
"country_id": null,
"country": null,
"last_update": null,
"CityCount": null
}
}
}
```
</code-block>
</code-group>
[](#mutations)
### TableNameCreateBulk
<code-group>
<code-block label="Request" active>
```
mutation {
CountryCreateBulk(data:[{country:"test 2"},{country:"test 3"}])
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryCreateBulk": [
10265
]
}
}
```
</code-block>
</code-group>
[](#mutations)
### TableNameUpdateBulk
<code-group>
<code-block label="Request" active>
```
mutation {
CountryUpdateBulk(data: [{country: "test 2", country_id: 10265}, {country: "test 3", country_id: 10266}])
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryUpdateBulk": [
1,
1
]
}
}
```
</code-block>
</code-group>
[](#mutations)
### TableNameDeleteBulk
<code-group>
<code-block label="Request" active>
```
mutation {
CountryDeleteBulk(data: [{country_id: 10265}, {country_id: 10266}])
}
```
</code-block>
<code-block label="Response">
```json
{
"data": {
"CountryDeleteBulk": [
1,
1
]
}
}
```
</code-block>
</code-group>
<alert type="danger">
GraphQL APIs, unfortunately, has been deprecated form v0.90 onwards - which means
- Users won't be able to create a GraphQL project nor use the GraphQL queries.
- For projects created before v0.90, we will convert it to REST API projects.
- The rationale behind is that GraphQL is a really small use case of NocoDB users and smart spreadsheet are usually flat representation of data (may be one level nested) which means there will be additional wrangling of json and GQL schema when users are changing the schema dynamically.
</alert>

9
packages/noco-docs/content/en/developer-resources/meta-apis.md

@ -0,0 +1,9 @@
---
title: 'Meta APIs'
description: 'Meta APIs'
position: 1100
category: 'Developer Resources'
menuTitle: 'Meta APIs'
---
TBC

26
packages/noco-docs/content/en/developer-resources/sdk.md

@ -0,0 +1,26 @@
---
title: 'SDK'
description: 'SDK'
position: 1400
category: 'Developer Resources'
menuTitle: 'SDK'
---
We provide SDK for users to integrated with their applications. Currently only Javascript is supported.
### SDK For Javascript
```js
import { Api } from 'nocodb-sdk'
const api = new Api({
baseURL: 'http://<HOST>:<PORT>',
headers: {
'xc-auth': '<AUTH_TOKEN>'
}
})
// await api.meta.something()
// await api.data.something()
```

61
packages/noco-docs/content/en/engineering/publish.md

@ -1,61 +0,0 @@
---
title: "Making a release"
description: "Making a release"
position: 2000
category: "Engineering"
menuTitle: "Making a release"
---
<alert>
This is exclusive to NocoDB team members only.
</alert>
<alert types='danger'>
The version 0.84.8 will be used as an example. Please change it during the release.
</alert>
## 1. Merge ```develop``` to ```master```
- When several features are included in ``develop`` branch and they are ready to be released, make a PR with the title ``0.84.8 Pre-Release`` from `develop` branch to `master` branch. At least one NocoDB team member approval is required.
## 2. Publish frontend
- Navigate to `packages/nc-gui` and execute following command.
```bash
npm run build:copy:jsdeliver
```
## 3. Install frontend
- Install the latest published version of `nc-lib-gui` in `packages/nocodb`, package version can be extracted from result of step 1 or copy it from `packages/nc-lib-gui/package.json`. While installing, add `-E` to install exact version of the package.
- Example: for latest published version `0.84.8`
```bash
npm i -E nc-lib-gui@0.84.8
```
## 4. Publish backend
- Bump package version in `packages/nocodb/package.json` file.
- Publish the npm package by running following npm command in `packages/nocodb` folder.
```
npm run obfuscate:build:publish
```
## 5. Close all issues
- Go to Issue page and close all issues with tags ``Fixed`` or ``Resolved``.
## 6. Commit release changes
- Commit those changes made by previous steps with the commit message ``chore(publish): v0.84.8``.
## 7. Prepare release notes
- Populate release note by running following github action (on `master` branch) - `Release : Draft Notes`. While running the action you have to provide 2 inputs:
- **Tag** : Provide current package version
- **Previous Tag** : Provide previously released tag version
## 8. Publish docker & release
- Publish docker image by running `Release : Docker` action in github (on `master` branch), where you have to provide the package version/tag. It may take half an hour. Test it locally after it is done.
- Update the populated release (remove issues which is not related to release) draft and publish. In release note you can use `Auto-generate release notes` button to populate release content from commits & PR.
## 9. Sync the changes back to develop branch
- Pull the latest chagnes for both branches to your local
- Switch to ``develop`` branch
- Run ``git merge master``
- Push the diff to remote repository

176
packages/noco-docs/content/en/getting-started/installation.md

@ -11,18 +11,20 @@ Simple installation - takes about three minutes!
## Prerequisites
- __Must haves__
* [node.js >= 12](https://nodejs.org/en/download) / [Docker](https://www.docker.com/get-started)
* [MySql](https://dev.mysql.com/downloads/mysql/) / [Postgres](https://www.postgresql.org/download/) / [SQLserver](https://www.microsoft.com/en-gb/sql-server/sql-server-downloads) / SQLite Database
- Must haves
- [Node.js with version >= 14](https://nodejs.org/en/download) / [Docker](https://www.docker.com/get-started)
- Nice to haves
- [MySQL](https://dev.mysql.com/downloads/mysql/) / [Postgres](https://www.postgresql.org/download/) / [SQL Server](https://www.microsoft.com/en-gb/sql-server/sql-server-downloads) / SQLite Database
- Existing schemas can help to create APIs quickly.
- An example database schema can be found <a class="grey--text" href="https://github.com/lerocha/chinook-database/tree/master/ChinookDatabase/DataSources"> <u>here</u></a>.
- An example database schema can be found <a class="grey--text" href="https://github.com/lerocha/chinook-database/tree/master/ChinookDatabase/DataSources"> <u>here</u></a>.
## Quick try
### 1-Click Deploy to Heroku
Before doing so, make sure you have a Heroku account. By default, an add-on Heroku Postgres will be used as meta database. You can see the connection string defined in `DATABASE_URL` by navigating to Heroku App Settings and selecting Config Vars.
<a href="https://heroku.com/deploy?template=https://github.com/nocodb/nocodb-seed-heroku">
<img
src="https://www.herokucdn.com/deploy/button.svg"
@ -31,51 +33,44 @@ Simple installation - takes about three minutes!
/>
</a>
### Node app / Docker
<code-group>
<code-block label="NPX" active>
```bash
npx create-nocodb-app
```
### NPX
</code-block>
You can run below command if you need an interactive configuration.
<code-block label="Docker" >
```bash
npx create-nocodb-app
```
```bash
docker run -d --name nocodb -p 8080:8080 nocodb/nocodb:latest
```
#### Preview:
</code-block>
<img width="587" alt="image" src="https://user-images.githubusercontent.com/35857179/161526235-5ee0d592-0105-4a57-aa53-b1048dca6aad.png">
<code-block label="Using Git" >
```bash
git clone https://github.com/nocodb/nocodb-seed
cd nocodb-seed
npm install
npm start
```
### Node Application
</code-block>
</code-group>
We provide a simple NodeJS Application for getting started.
> To persist data in docker you can mount volume at `/usr/app/data/` since 0.10.6. In older version mount at `/usr/src/app`.
```bash
git clone https://github.com/nocodb/nocodb-seed
cd nocodb-seed
npm install
npm start
```
### Docker
If you are a Docker user, you may try this way!
## Production Setup
<code-group>
<code-block label="SQLite" active>
NocoDB requires a database to store metadata of spreadsheets views and external databases.
And connection params for this database can be specified in `NC_DB` environment variable.
```bash
docker run -d --name nocodb -p 8080:8080 nocodb/nocodb:latest
```
### Docker
</code-block>
<code-group>
<code-block label="MySQL" active>
<code-block label="MySQL">
```bash
docker run -d -p 8080:8080 \
@ -90,7 +85,7 @@ And connection params for this database can be specified in `NC_DB` environment
```bash
docker run -d -p 8080:8080 \
-e NC_DB="pg://host:port?u=user&p=password&d=database" \
-e NC_DB="pg://host.docker.internal:5432?u=root&p=password&d=d1" \
-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \
nocodb/nocodb:latest
```
@ -101,7 +96,7 @@ And connection params for this database can be specified in `NC_DB` environment
```bash
docker run -d -p 8080:8080 \
-e NC_DB="mssql://host:port?u=user&p=password&d=database" \
-e NC_DB="mssql://host.docker.internal:1433?u=root&p=password&d=d1" \
-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \
nocodb/nocodb:latest
```
@ -109,56 +104,24 @@ And connection params for this database can be specified in `NC_DB` environment
</code-block>
</code-group>
<alert>
If you plan to input some special characters, you may need to change the character set and collation yourself when creating the database. Please check out the examples for <a href="https://github.com/nocodb/nocodb/issues/1340#issuecomment-1049481043" target="_blank">MySQL Docker</a> and <a href="https://github.com/nocodb/nocodb/issues/1313#issuecomment-1046625974" target="_blank">MySQL Docker Compose</a>.
<alert type="success">
Tip 1: To persist data in docker you can mount volume at `/usr/app/data/` since 0.10.6. In older version mount at `/usr/src/app`. Otherwise your data will be lost after recreating the container.
</alert>
### Environment variables
| Variable | Mandatory | Comments | If absent |
|-------------------------|-----------|----------------------------------------------------------------------------------|--------------------------------------------|
| NC_DB | Yes | See our database URLs | A local SQLite will be created in root folder |
| NC_DB_JSON | Yes | Can be used instead of `NC_DB` and value should be valid knex connection JSON | |
| NC_DB_JSON_FILE | Yes | Can be used instead of `NC_DB` and value should be a valid path to knex connection JSON | |
| DATABASE_URL | No | JDBC URL Format. Can be used instead of NC_DB. Used in 1-Click Heroku deployment| |
| DATABASE_URL_FILE | No | path to file containing JDBC URL Format. Can be used instead of NC_DB. Used in 1-Click Heroku deployment| |
| NC_DASHBOARD_URL | No | Custom dashboard url path | `/dashboard` |
| NC_TOOL_DIR | No | App directory to keep metadata and app related files | Defaults to current working directory. In docker maps to `/usr/app/data/` for mounting volume. |
| NC_PUBLIC_URL | Yes | Used for sending Email invitations | Best guess from http request params |
| NC_AUTH_JWT_SECRET | Yes | JWT secret used for auth and storing other secrets | A Random secret will be generated |
| NC_JWT_EXPIRES_IN | No | JWT token expiry time | `10h` |
| NC_CONNECT_TO_EXTERNAL_DB_DISABLED | No | Disable Project creation with external database | |
| NC_INVITE_ONLY_SIGNUP | No | Allow users to signup only via invite url, value should be any non-empty string. | |
| NC_BACKEND_URL | No | Custom Backend URL | ``http://localhost:8080`` will be used |
| NC_REQUEST_BODY_SIZE | No | Request body size [limit](https://expressjs.com/en/resources/middleware/body-parser.html#limit) | `1048576` |
| NC_EXPORT_MAX_TIMEOUT | No | After NC_EXPORT_MAX_TIMEOUT csv gets downloaded in batches | Default value 5000(in millisecond) will be used |
| DB_QUERY_LIMIT_DEFAULT | No | Default pagination limit | 25 |
| DB_QUERY_LIMIT_MAX | No | Maximum allowed pagination limit | 100 |
| DB_QUERY_LIMIT_MIN | No | Minimum allowed pagination limit | 1 |
| NC_DISABLE_TELE | No | Disable telemetry | |
| NC_GOOGLE_CLIENT_ID | No | Google client id to enable google authentication | |
| NC_GOOGLE_CLIENT_SECRET | No | Google client secret to enable google authentication | |
| NC_MIGRATIONS_DISABLED | No | Disable NocoDB migration | |
| NC_ONE_CLICK | No | Used for Heroku one-click deployment | |
| NC_MIN | No | If set to any non-empty string the default splash screen(initial welcome animation) and matrix screensaver will disable | |
| PORT | No | For setting app running port | `8080` |
| NC_SENTRY_DSN | No | For Sentry monitoring | |
| NC_DISABLE_ERR_REPORT | No | Disable error reporting | |
| AWS_ACCESS_KEY_ID | No | For Litestream - S3 access key id | If Litestream is configured and NC_DB is not present. SQLite gets backed up to S3 |
| AWS_SECRET_ACCESS_KEY | No | For Litestream - S3 secret access key | If Litestream is configured and NC_DB is not present. SQLite gets backed up to S3 |
| AWS_BUCKET | No | For Litestream - S3 bucket | If Litestream is configured and NC_DB is not present. SQLite gets backed up to S3 |
| AWS_BUCKET_PATH | No | For Litestream - S3 bucket path (like folder within S3 bucket) | If Litestream is configured and NC_DB is not present. SQLite gets backed up to S3 |
<alert type="success">
Tip 2: If you plan to input some special characters, you may need to change the character set and collation yourself when creating the database. Please check out the examples for <a href="https://github.com/nocodb/nocodb/issues/1340#issuecomment-1049481043" target="_blank">MySQL Docker</a>.
</alert>
### Docker Compose
We provide different docker-compose.yml files under <a href="https://github.com/nocodb/nocodb/tree/master/docker-compose" target="_blank">this directory</a>. Here are some examples.
<code-group>
<code-block label="MySQL" active>
```bash
git clone https://github.com/nocodb/nocodb
cd nocodb
cd docker-compose
cd mysql
cd nocodb/docker-compose/mysql
docker-compose up -d
```
@ -168,9 +131,7 @@ If you plan to input some special characters, you may need to change the charact
```bash
git clone https://github.com/nocodb/nocodb
cd nocodb
cd docker-compose
cd pg
cd nocodb/docker-compose/pg
docker-compose up -d
```
@ -180,15 +141,64 @@ If you plan to input some special characters, you may need to change the charact
```bash
git clone https://github.com/nocodb/nocodb
cd nocodb
cd docker-compose
cd mssql
cd nocodb/docker-compose/mssql
docker-compose up -d
```
</code-block>
</code-group>
<alert type="success">
Tip 1: To persist data in docker you can mount volume at `/usr/app/data/` since 0.10.6. In older version mount at `/usr/src/app`.
</alert>
<alert type="success">
Tip 2: If you plan to input some special characters, you may need to change the character set and collation yourself when creating the database. Please check out the examples for <a href="https://github.com/nocodb/nocodb/issues/1313#issuecomment-1046625974" target="_blank">MySQL Docker Compose</a>.
</alert>
## Production Setup
By default, SQLite is used for storing meta data. However, you can specify your own database. The connection params for this database can be specified in `NC_DB` environment variable. Moreover, we also provide the below environment variables for configuration.
### Environment variables
| Variable | Mandatory | Comments | If absent | |
|------------------------------------|-----------|-------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|---|
| AWS_ACCESS_KEY_ID | No | For Litestream - S3 access key id | If Litestream is configured and NC_DB is not present. SQLite gets backed up to S3 | |
| AWS_SECRET_ACCESS_KEY | No | For Litestream - S3 secret access key | If Litestream is configured and NC_DB is not present. SQLite gets backed up to S3 | |
| AWS_BUCKET | No | For Litestream - S3 bucket | If Litestream is configured and NC_DB is not present. SQLite gets backed up to S3 | |
| AWS_BUCKET_PATH | No | For Litestream - S3 bucket path (like folder within S3 bucket) | If Litestream is configured and NC_DB is not present. SQLite gets backed up to S3 | |
| DB_QUERY_LIMIT_DEFAULT | No | Default pagination limit | 25 | |
| DB_QUERY_LIMIT_MAX | No | Maximum allowed pagination limit | 100 | |
| DB_QUERY_LIMIT_MIN | No | Minimum allowed pagination limit | 1 | |
| DATABASE_URL | No | JDBC URL Format. Can be used instead of NC_DB. Used in 1-Click Heroku deployment | | |
| DATABASE_URL_FILE | No | path to file containing JDBC URL Format. Can be used instead of NC_DB. Used in 1-Click Heroku deployment | | |
| PORT | No | For setting app running port | `8080` | |
| NC_DB | Yes | See our database URLs | A local SQLite will be created in root folder | |
| NC_DB_JSON | Yes | Can be used instead of `NC_DB` and value should be valid knex connection JSON | | |
| NC_DB_JSON_FILE | Yes | Can be used instead of `NC_DB` and value should be a valid path to knex connection JSON | | |
| NC_DASHBOARD_URL | No | Custom dashboard url path | `/dashboard` | |
| NC_TOOL_DIR | No | App directory to keep metadata and app related files | Defaults to current working directory. In docker maps to `/usr/app/data/` for mounting volume. | |
| NC_PUBLIC_URL | Yes | Used for sending Email invitations | Best guess from http request params | |
| NC_AUTH_JWT_SECRET | Yes | JWT secret used for auth and storing other secrets | A Random secret will be generated | |
| NC_JWT_EXPIRES_IN | No | JWT token expiry time | `10h` | |
| NC_CONNECT_TO_EXTERNAL_DB_DISABLED | No | Disable Project creation with external database | | |
| NC_INVITE_ONLY_SIGNUP | No | Allow users to signup only via invite url, value should be any non-empty string. | | |
| NC_BACKEND_URL | No | Custom Backend URL | ``http://localhost:8080`` will be used | |
| NC_REQUEST_BODY_SIZE | No | Request body size [limit](https://expressjs.com/en/resources/middleware/body-parser.html#limit) | `1048576` | |
| NC_EXPORT_MAX_TIMEOUT | No | After NC_EXPORT_MAX_TIMEOUT csv gets downloaded in batches | Default value 5000(in millisecond) will be used | |
| NC_DISABLE_TELE | No | Disable telemetry | | |
| NC_GOOGLE_CLIENT_ID | No | Google client id to enable google authentication | | |
| NC_GOOGLE_CLIENT_SECRET | No | Google client secret to enable google authentication | | |
| NC_MIGRATIONS_DISABLED | No | Disable NocoDB migration | | |
| NC_ONE_CLICK | No | Used for Heroku one-click deployment | | |
| NC_MIN | No | If set to any non-empty string the default splash screen(initial welcome animation) and matrix screensaver will disable | | |
| NC_SENTRY_DSN | No | For Sentry monitoring | | |
| NC_DISABLE_ERR_REPORT | No | Disable error reporting | | |
| NC_REDIS_URL | No | Custom Redis URL. Example: `redis://:authpassword@127.0.0.1:6380/4` | Meta data will be stored in memory | |
| NC_DISABLE_CACHE | No | If it is set to `true`, then meta data will not be cached. | `false` | |
### AWS ECS (Fargate)
#### Create ECS Cluster

55
packages/noco-docs/content/en/getting-started/upgrading.md

@ -8,63 +8,68 @@ link: https://codesandbox.io/embed/vigorous-firefly-80kq5?hidenavigation=1&theme
---
## Docker
### Find, stop & delete nocodb docker container
```
docker ps
docker stop "YOUR_CONTAINER_ID"
### Find, Stop & Delete NocoDB Docker Container
docker rm "YOUR_CONTAINER_ID"
```bash
# find NocoDB container ID
docker ps
# stop NocoDB container
docker stop <YOUR_CONTAINER_ID>
# delete NocoDB container
docker rm <YOUR_CONTAINER_ID>
```
### Find & remove nocodb docker image
```
docker images
### Find & Remove NocoDB Docker Image
docker rmi YOUR_IMAGE_ID
```bash
# find NocoDB image
docker images
# delete NocoDB image
docker rmi <YOUR_IMAGE_ID>
```
### Pull the latest nocodb image with same environment variables
```
### Pull the latest NocoDB image with same environment variables
```bash
docker run -d -p 8080:8080 \
-e NC_DB="YOUR_NC_DB_URL" \
-e NC_AUTH_JWT_SECRET="YOUR_NC_AUTH_JWT_SECRET_IF_GIVEN" \
-e NC_DB="<YOUR_NC_DB_URL>" \
-e NC_AUTH_JWT_SECRET="<YOUR_NC_AUTH_JWT_SECRET_IF_GIVEN>" \
nocodb/nocodb:latest
```
Updating nocodb docker container is similar to updating [any other docker container](https://www.whitesourcesoftware.com/free-developer-tools/blog/update-docker-images/).
Updating nocodb docker container is similar to updating [any other docker containers](https://www.whitesourcesoftware.com/free-developer-tools/blog/update-docker-images/).
### Example docker upgrade
### Example: Docker Upgrade
![Screen Shot 2021-09-16 at 09 23 07](https://user-images.githubusercontent.com/5435402/133578984-53c6b96b-3e8b-4a96-b6c2-36f3c09ffdde.png)
## Node
Updating docker container is similar to updating a npm package.
From your root folder
#### Uninstall nocodb package
#### Uninstall NocoDB package
```bash
npm uninstall nocodb
```
#### Install nocodb package
#### Install NocoDB package
```bash
npm install --save nocodb
```
## Heroku
### Using the Heroku CLI login
```
```bash
heroku container:login
docker pull nocodb/nocodb:latest
docker tag nocodb/nocodb:latest registry.heroku.com/<Heroku App Name>/web
docker push registry.heroku.com/<Heroku App Name>/web
heroku container:release -a <Heroku App Name> web
docker tag nocodb/nocodb:latest registry.heroku.com/<HEROKU_APP_NAME>/web
docker push registry.heroku.com/<HEROKU_APP_NAME>/web
heroku container:release -a <HEROKU_APP_NAME> web
```
#### On Apple M1 Chipset
@ -73,7 +78,7 @@ heroku container:release -a <Heroku App Name> web
>
> ```export DOCKER_DEFAULT_PLATFORM=linux/amd64```
>
> More details [here](https://medium.com/geekculture/from-apple-silicon-to-heroku-docker-registry-without-swearing-36a2f59b30a3).
> More details can be found [here](https://medium.com/geekculture/from-apple-silicon-to-heroku-docker-registry-without-swearing-36a2f59b30a3).
### Using GitHub

27
packages/noco-docs/content/en/index.md

@ -6,6 +6,11 @@ category: 'Welcome'
menuTitle: 'Introduction'
---
<alert type="warning">
This documentation is only for version 0.90 onwards. If you are looking for the previous versions, please check out
<a href="https://docs-prev.nocodb.com/" target="_blank">here</a>.
</alert>
## Welcome!
NocoDB is an open source Airtable alternative.
@ -19,13 +24,14 @@ Also NocoDB's app store allows you to build business workflows on views with com
## Features
### Rich Spreadsheet Interface
- ⚡ &nbsp;Search, sort, filter, hide columns with uber ease
- ⚡ &nbsp;Create Views : Grid, Gallery, Kanban, Form
- ⚡ &nbsp;Create Views : Grid, Gallery, Form
- ⚡ &nbsp;Share Views : public & password protected
- ⚡ &nbsp;Personal & locked Views
- ⚡ &nbsp;Upload images to cells (Works with S3, Minio, GCP, Azure, DigitalOcean, Linode, OVH, BackBlaze)!!
- ⚡ &nbsp;Roles : Owner, Creator, Editor, Commenter, Viewer, Commenter, Custom Roles.
- ⚡ &nbsp;Access Control : Fine-grained access control even at database, table & column level.
- ⚡ &nbsp;Collaborative & locked Views
- ⚡ &nbsp;Upload images to cells (Works with S3, Minio, GCP, Azure, DigitalOcean, Linode, OVH, BackBlaze)
- ⚡ &nbsp;Roles : Owner, Creator, Editor, Commenter, Viewer
- ⚡ &nbsp;Access Control : Fine-grained access control even at database, table & column level
### App Store for workflow automations
- ⚡ &nbsp;Chat : Microsoft Teams, Slack, Discord, Mattermost
@ -35,15 +41,14 @@ Also NocoDB's app store allows you to build business workflows on views with com
- ⚡ &nbsp;Any 3rd Party APIs
### Programmatic API access via
- ⚡ &nbsp;REST APIs (Swagger)
- ⚡ &nbsp;GraphQL APIs.
- ⚡ &nbsp;REST APIs
- ⚡ &nbsp;Includes JWT Authentication & Social Auth
- ⚡ &nbsp;API tokens to integrate with Zapier, Integromat.
- ⚡ &nbsp;API tokens to integrate with Zapier, Integromat
## Why are we building this ? 🎯
## Why are we building this?
Most internet businesses equip themselves with either spreadsheet or a database to solve their business needs. Spreadsheets are used by a Billion+ humans collaboratively every single day. However, we are way off working at similar speeds on databases which are way more powerful tools when it comes to computing. Attempts to solve this with SaaS offerings has meant horrible access controls, vendor lockin, data lockin, abrupt price changes & most importantly a glass ceiling on what's possible in future.
## Our Mission : ❤
## Our Mission
Our mission is to provide the most powerful no-code interface for databases which is open source to every single internet business in the world. This would not only democratise access to a powerful computing tool but also bring forth a billion+ people who will have radical tinkering-and-building abilities on internet.
## Architecture - Simple Overview
@ -78,6 +83,8 @@ We use ``Lerna`` to manage multi-packages. We have the following [packages](http
- ``packages/noco-docs``: NocoDB Documentation which will be auto-released to [nocodb/noco-docs](https://github.com/nocodb/noco-docs).
- ``packages/noco-docs-prev``: NocoDB Documentation for previous versions which will be auto-released to [nocodb/noco-docs-prev](https://github.com/nocodb/noco-docs-prev) and will be completely removed on 30 Jun 2022.
- ``packages/nocodb``: NocoDB Backend, hosted in [NPM](https://www.npmjs.com/package/nocodb).

10
packages/noco-docs/content/en/setup-and-usages/audit.md

@ -6,12 +6,10 @@ category: 'Product'
menuTitle: 'Audit'
---
We are keeping all the user operation logs under audits, user can access the audits logs by clicking the `Audit` icon from the left navigation drawer.
We are keeping all the user operation logs under Audit. Audits logs can be accessed by clicking `Team & Settings` from the left navigation drawer.
![image](https://user-images.githubusercontent.com/35857179/161902474-fd06678c-a171-4237-b171-dc028b3753de.png)
Then, under SETTINGS, click `Audit`.
![Screenshot_2021-07-23_at_7_08_22_PM](https://user-images.githubusercontent.com/61551451/126790439-14f4f60e-f125-48f8-a8a5-28f20fab71aa.png)
_Sample audit logs:_
![Pasted_Image_23_07_21__7_13_PM](https://user-images.githubusercontent.com/61551451/126790664-024f4803-c343-46ca-9b47-c3dfa0b1ad6c.png)
![image](https://user-images.githubusercontent.com/35857179/161956444-d1a28568-2adb-4e4e-9aca-4032b4a2f7c2.png)

47
packages/noco-docs/content/en/setup-and-usages/column-operations.md

@ -5,70 +5,59 @@ position: 530
category: "Product"
menuTitle: "Column Operations"
---
## Fields
<img src="https://user-images.githubusercontent.com/86527202/144435795-7156799c-04de-474d-9125-1b15e07acc3d.png" width="60%"/>
### Re-order Columns
Column positions can be re-ordered. Open `Fields` menu, and re-order fields as needed by drag/drop `drag icon`
Column positions can be re-ordered. Open `Fields` menu, and re-order fields as needed by dragging and dropping the `drag icon`.
<img src="https://user-images.githubusercontent.com/86527202/144435838-8cff72eb-eaa2-4268-9749-213283eb8336.png" width="40%"/>
#### Demo
<img src="https://github.com/dstala/nocodb-files/blob/2c4ca2ff31460ee5636262e88ba303e2d436ba54/ColumnReorder.gif" width="100%"/>
<img src="https://github.com/dstala/nocodb-files/blob/2c4ca2ff31460ee5636262e88ba303e2d436ba54/ColumnReorder.gif?raw=true" width="100%"/>
<!-- img src="https://media0.giphy.com/media/z5mYR1XoO85Umd5abh/giphy.gif?cid=790b7611f53d7e966bf9de3ae6b1cd5a7d6380b0ab8a4337&rid=giphy.gif&ct=g" width="60%"/ -->
### Hide/ Unhide Columns
To hide/Unhide columns, open `Fields` menu, tick checkbox to keep column visible, untick checkbox to remove it from view
To hide / unhide columns, open `Fields` menu, tick checkbox to keep the column visible, untick checkbox to remove it from the view.
<alert type="success">
Tip: You can create different grid views with different fields shown in each view.
</alert>
<img src="https://user-images.githubusercontent.com/86527202/144435852-47f87057-f42f-4691-abbd-9592cde50541.png" width="40%"/>
#### Demo
<img src="https://github.com/dstala/nocodb-files/blob/2c4ca2ff31460ee5636262e88ba303e2d436ba54/ColumnHide.gif" width="100%"/>
<img src="https://github.com/dstala/nocodb-files/blob/2c4ca2ff31460ee5636262e88ba303e2d436ba54/ColumnHide.gif?raw=true" width="100%"/>
<!-- img src="https://media2.giphy.com/media/8NXvWfHDoul72dwLhk/giphy.gif?cid=790b76116fa008b45c79bb91bfe611e324fa38cde21a255a&rid=giphy.gif&ct=g" width="60%"/ -->
## Sort
Sorting allows you to order contents alphabetically (A->Z) / (Z->A)
(OR) in ascending/ descending order
NocoDB allows nested sorting. You can choose column fields & order in which to apply nested sorting
Sorting allows you to order contents alphabetically (A -> Z) / (Z -> A) (OR) in ascending / descending order. NocoDB allows nested sorting. You can choose column fields & order in which to apply nested sorting. Lookup, Formula, Nested Data are also supported in Sorting.
<img src="https://user-images.githubusercontent.com/86527202/144435903-84ed8e81-64ec-45e5-a045-9a993238c78c.png" width="60%"/>
<img src="https://user-images.githubusercontent.com/86527202/144435903-84ed8e81-64ec-45e5-a045-9a993238c78c.png" width="75%"/>
<img src="https://user-images.githubusercontent.com/86527202/144435925-67b995a0-da10-45c9-bf54-9edcc63c5644.png" width="75%"/>
#### Demo
<img src="https://github.com/dstala/nocodb-files/blob/2c4ca2ff31460ee5636262e88ba303e2d436ba54/ColumnSort-2.gif" width="100%"/>
<img src="https://github.com/dstala/nocodb-files/blob/2c4ca2ff31460ee5636262e88ba303e2d436ba54/ColumnSort-2.gif?raw=true" width="100%"/>
<!-- img src="https://media4.giphy.com/media/ThQ8d42U2zdFyZGeZe/giphy.gif?cid=790b761183da2eb690295c5c25f83ace7acf5212c82569a1&rid=giphy.gif&ct=g" width="60%"/ -->
## Filter
Filters allow you to restrict/organize your data on the view as per your needs.
NocoDB allows nested filters. You can choose multiple columns and conditions to apply filter.
Between filters, you can opt for either `and` or `or` mode operation.
Filters allow you to restrict/organize your data on the view as per your needs. NocoDB allows nested filters. You can choose multiple columns and conditions to apply filter. Between filters, you can opt for either `and` or `or` mode operation. Lookup, Formula, Nested Data are also supported in Filtering.
<img src="https://user-images.githubusercontent.com/86527202/144435944-8498be32-76cb-48d1-883a-8f674f2eb68e.png" width="60%"/>
<img src="https://user-images.githubusercontent.com/86527202/144435955-361238d5-ecda-448e-a6de-a47086aeec6e.png" width="75%"/>
### Supported filters
Each filter can be of type as described below
| Type |
|---|
| is equal |
| is not equal |
| is like |
| is not like |
| is null |
| is not null |
| > |
| < |
| >= |
| <= |
#### Demo
<img src="https://github.com/dstala/nocodb-files/blob/2c4ca2ff31460ee5636262e88ba303e2d436ba54/ColumnFilter.gif" width="100%"/>
<!-- img src="https://media4.giphy.com/media/eap5WSJfa05Qk7F3gm/giphy.gif?cid=790b761142dbc95c4f86b23a57fb0a9cb261292a88908e06&rid=giphy.gif&ct=g" width="60%"/ -->
Currently we support filter types - `is equal`, `is not equal`, `is like`, `is not like`, `is null`, `is not null` for string fields. We also support filter types - `>`, `<`, `>=`, and `<=` for numeric fields. Also we provide `is empty` and `is not empty` for checking if the column is empty or not.

122
packages/noco-docs/content/en/setup-and-usages/column-types.md

@ -56,31 +56,29 @@ menuTitle: 'Column Types'
|**SQL Server**|_All types are available_|int|
|**SQLite**|_All types are available_|integer|
### LinkToAnotherRecord
N/A
### ForeignKey
#### Available Database Types
|Database| Types|
|-----|----------|
|**MySQL**|_All types are available_|
|**PostgreSQL**|_All types are available_|
|**SQL Server**|_All types are available_|
|**SQLite**|_All types are available_|
### SingleLineText
#### Available Database Types
|Database| Types| Default Type|
|-----|----------|----------|
|**MySQL**|||
|**PostgreSQL**|||
|**SQL Server**|||
|**SQLite**|||
|**MySQL**|char, varchar, nchar, text, tinytext, mediumtext, longtext|varchar|
|**PostgreSQL**|char, character, character varying, text|character varying|
|**SQL Server**|char, ntext, text, varchar, nvarchar|varchar|
|**SQLite**|character, text, varchar|varchar|
### LongText
@ -93,8 +91,6 @@ menuTitle: 'Column Types'
|**SQL Server**|char, ntext, text, varchar, nvarchar|text|
|**SQLite**|character, text, varchar|text|
### Attachment
#### Available Database Types
@ -105,10 +101,6 @@ menuTitle: 'Column Types'
|**SQL Server**|char, ntext, text, varchar, nvarchar| text |
|**SQLite**|character, text, varchar|text|
### Checkbox
#### Available Database Types
@ -120,10 +112,6 @@ menuTitle: 'Column Types'
|**SQL Server**|bigint, bit, int, tinyint|tinyint|
|**SQLite**|int, integer, tinyint, smallint, mediumint, bigint, int2, int8, boolean||
### MultiSelect
#### Available Database Types
@ -134,10 +122,6 @@ menuTitle: 'Column Types'
|**SQL Server**|text, ntext|text|
|**SQLite**|text, varchar|text|
### SingleSelect
#### Available Database Types
@ -145,13 +129,10 @@ menuTitle: 'Column Types'
|Database| Types| Default Type|
|-----|----------|----------|
|**MySQL**|enum, text, tinytext, mediumtext, longtext|enum|
|**PostgreSQL**|text|
|**PostgreSQL**|text|text|
|**SQL Server**|text, ntext|text|
|**SQLite**|text, varchar|text|
### Date
#### Available Database Types
@ -159,12 +140,9 @@ menuTitle: 'Column Types'
|Database| Types| Default Type|
|-----|----------|----------|
|**MySQL**|date, datetime, timestamp, varchar|varchar|
|**PostgreSQL**||character varying|
|**SQL Server**|||
|**SQLite**|date|varchar|
|**PostgreSQL**||date, timestamp, timestamp without time zone, timestamptz, timestamp with time zone | date
|**SQL Server**|date|date|
|**SQLite**|date, varchar|varchar|
### Year
@ -174,16 +152,11 @@ menuTitle: 'Column Types'
|**MySQL**|year|year|
|**PostgreSQL**|int|int|
|**SQL Server**|int|int|
|**SQLite**|int, integer, tinyint, smallint, mediumint, bigint, int2, int8||
|**SQLite**|int, integer, tinyint, smallint, mediumint, bigint, int2, int8|year|
### Time
#### Available Database Types
|Database| Types| Default Type|
|-----|----------|----------|
|**MySQL**|time|time|
@ -191,9 +164,6 @@ menuTitle: 'Column Types'
|**SQL Server**|time|time|
|**SQLite**|int, integer, tinyint, smallint, mediumint, bigint, int2, int8|time|
### PhoneNumber
#### Available Database Types
@ -205,9 +175,6 @@ menuTitle: 'Column Types'
|**SQL Server**|varchar|varchar|
|**SQLite**|varchar, text|varchar|
### Email
#### Available Database Types
@ -216,12 +183,9 @@ menuTitle: 'Column Types'
|-----|----------|----------|
|**MySQL**|varchar|varchar|
|**PostgreSQL**|character varying|character varying|
|**SQL Server**|varchar||
|**SQL Server**|varchar|varchar|
|**SQLite**|varchar, text|varchar|
### URL
#### Available Database Types
@ -233,9 +197,6 @@ menuTitle: 'Column Types'
|**SQL Server**|varchar, text|varchar|
|**SQLite**|varchar, text|varchar|
### Number
#### Available Database Types
@ -247,9 +208,6 @@ menuTitle: 'Column Types'
|**SQL Server**|int, bigint, bit, decimal, float, numeric, real, smallint, tinyint|int|
|**SQLite**|int, integer, tinyint, smallint, mediumint, bigint, int2, int8, numeric, real, double, double precision, float|integer|
### Decimal
#### Available Database Types
@ -261,9 +219,6 @@ menuTitle: 'Column Types'
|**SQL Server**|decimal, float|decimal|
|**SQLite**|real, double, double precision, float, numericdecimal|
### Currency
#### Available Database Types
@ -275,9 +230,6 @@ menuTitle: 'Column Types'
|**SQL Server**|int, bigint, bit, decimal, float, numeric, real, smallint, tinyint|decimal|
|**SQLite**|real, double, double precision, float, int, integer, tinyint, smallint, mediumint, bigint, int2, int8, numeric|double precision|
### Percent
#### Available Database Types
@ -289,15 +241,10 @@ menuTitle: 'Column Types'
|**SQL Server**|int, bigint, bit, decimal, float, numeric, real, smallint, tinyint|double|
|**SQLite**|real, double, double precision, float, int, integer, tinyint, smallint, mediumint, bigint, int2, int8, numeric|double|
### Duration
#### Available Database Types
|Database| Types| Default Type|
|-----|----------|----------|
|**MySQL**|decimal, float, double, serial', 'int, smallint, mediumint, bigint, bit|int|
@ -305,15 +252,10 @@ menuTitle: 'Column Types'
|**SQL Server**|int, bigint, bit, decimal, float, numeric, real, smallint, tinyint|int|
|**SQLite**|int, integer, tinyint, smallint, mediumint, bigint, int2, int8|integer|
### Rating
#### Available Database Types
|Database| Types| Default Type|
|-----|----------|----------|
|**MySQL**|decimal, float, double, serial', 'int, smallint, mediumint, bigint, bit|float|
@ -321,22 +263,14 @@ menuTitle: 'Column Types'
|**SQL Server**|int, bigint, bit, decimal, float, numeric, real, smallint, tinyint|float|
|**SQLite**|real, double, double precision, float, int, integer, tinyint, smallint, mediumint, bigint, int2, int8, numeric|float|
### Formula
For more about formula visit [here](./formula)
For more about formula, please visit [here](./formulas).
### Count
#### Available Database Types
|Database| Types| Default Type|
|-----|----------|----------|
|**MySQL**|int, smallint, mediumint, bigint, serial|int|
@ -344,15 +278,10 @@ For more about formula visit [here](./formula)
|**SQL Server**|int, bigint, smallint, tinyint|int|
|**SQLite**|int, integer, tinyint, smallint, mediumint, bigint, int2, int8|integer|
### DateTime
#### Available Database Types
|Database| Types| Default Type|
|-----|----------|----------|
|**MySQL**|datetime, timestamp, varchar|datetime|
@ -360,16 +289,10 @@ For more about formula visit [here](./formula)
|**SQL Server**|datetime, datetime2, datetimeoffset|datetime|
|**SQLite**|datetime, timestamp|datetime|
### CreateTime
#### Available Database Types
|Database| Types| Default Type|
|-----|----------|----------|
|**MySQL**|datetime, timestamp, varchar|datetime|
@ -382,7 +305,6 @@ For more about formula visit [here](./formula)
#### Available Database Types
|Database| Types|
|-----|----------|
|**MySQL**|geometry, point, linestring, polygon, multipoint, multilinestring, multipolygon|
@ -390,15 +312,9 @@ For more about formula visit [here](./formula)
|**SQL Server**|geometry|
|**SQLite**|text|
### SpecificDBType
#### Available Database Types
|Database| Types|
|-----|----------|
|**MySQL**|_All types are available_|

75
packages/noco-docs/content/en/setup-and-usages/dashboard.md

@ -6,7 +6,7 @@ category: 'Product'
menuTitle: 'Dashboard'
---
## Setup your first super admin
## Setup Your First Super Admin
Once you have started NocoDB, you can visit the dashboard via `example.com/dashboard`.
@ -22,17 +22,7 @@ Enter your work email and your password.
<img src="https://user-images.githubusercontent.com/35857179/126597144-0343b5ca-c7ca-47a4-926d-4e8df2f8c161.png" width="60%"/>
If you start your application without specifying `NC_DB`. A local SQLite will be created in root folder. Your data will be stored there.
If you are using Docker, it is recommended to mount `/usr/app/data/` for persistent volume (since `v0.10.6`), otherwise your data will be lost after recreating the container.
Example:
```
docker run -d -p 8080:8080 --name nocodb -v /local/path:/usr/app/data/ nocodb/nocodb:latest
```
## Initialize your first project
## Initialize Your First Project
Once you have logged into NocoDB, you should see `My Projects`.
@ -44,15 +34,20 @@ To create a project, you can click `New Project`.
<img src="https://user-images.githubusercontent.com/86527202/144373314-9146e855-0791-4815-a03f-303e5ffb2a63.png" width="60%"/>
### Creating empty project
### Creating Empty Project
Click `Create`, you need to specify the project name and API type.
<alert>
A local SQLite will be used.
</alert>
Click `Create`, you need to specify the project name and API type. A local SQLite will be used.
<img src="https://user-images.githubusercontent.com/35857179/126597259-b9552c71-d13b-463c-abc2-0f3be31627b2.png" width="60%"/>
### Connecting to external database
### Connecting to External Database
Click `Create By Connecting To An external Datbase`, you need to specify the project name, API type, and other database parameters.
Click `Create By Connecting To An External Database`, you need to specify the project name, API type, and other database parameters.
![image](https://user-images.githubusercontent.com/35857179/126597279-c1722d8b-c885-4e9e-9e94-44711102af20.png)
@ -64,17 +59,53 @@ You can also configure associated SSL & advanced parameters.
![image](https://user-images.githubusercontent.com/35857179/126597342-0c61ab15-a112-4269-8f30-78455fa09081.png)
Click `Test Database Connection` to see if the connection can be established or not.
<alert type="success">
Tip 1: You can click Edit Connection JSON and modify SSL settings in "ssl".
</alert>
```json
{
"client": "pg",
"connection": {
"host": "<YOUR_HOST>",
"port": "5432",
"user": "<YOUR_DB_USER>",
"password": "<YOUR_DB_PASSWORD>",
"database": "<YOUR_DB_NAME>",
"ssl": {
"require": true,
"rejectUnauthorized": false,
"sslMode": "no-verify"
}
}
}
```
<alert type="success">
Tip 2: You can click Edit Connection JSON and specify the schema you want to use in "searchPath".
</alert>
> NocoDB create's a new **empty database** with specified parameters, if the database doesn't exist.
```json
{
"client": "pg",
"connection": {
...
},
"searchPath": [ "<YOUR_TARGET_SCHEMA>" ]
}
```
### Creating project from Excel
Click `Test Database Connection` to see if the connection can be established or not. NocoDB create's a new **empty database** with specified parameters, if the database doesn't exist.
Click `Create Project from Excel`, you can either upload/ drag and drop Excel file (OR) specify Excel file URL
### Creating Project from Excel
Click `Create Project from Excel`, you can either upload / drag and drop Excel file (OR) specify Excel file URL.
<img src="https://user-images.githubusercontent.com/86527202/144373863-7ced9315-a70b-4746-9295-325e463dc110.png" width="60%"/>
<alert>
A local SQLite will be used.
</alert>
<img src="https://user-images.githubusercontent.com/86527202/144373863-7ced9315-a70b-4746-9295-325e463dc110.png" width="60%"/>
Supported file formats
@ -84,5 +115,3 @@ Supported file formats
- Ods
- Ots
A local SQLite will be used.

7
packages/noco-docs/content/en/setup-and-usages/formulas.md

@ -56,9 +56,10 @@ menuTitle: "Formulas"
| `*` | `column1 * column2` | Multiplication of numeric values |
| `/` | `column1 / column2` | Division of numeric values |
> To change order of arithmetic operation, use round bracket parantheses `()`
> Example: `(column1 + (column2 * column3) / (3 - column4 ))`
<alert type="success">
Tip :To change the order of arithmetic operation, you can use round bracket parantheses (). <br/>
Example: (column1 + (column2 * column3) / (3 - column4 ))
</alert>
### String Functions

19
packages/noco-docs/content/en/setup-and-usages/languages.md

@ -0,0 +1,19 @@
---
title: 'Languages'
description: 'Languages'
position: 1200
category: 'Product'
menuTitle: 'Languages'
---
NocoDB supports multiple lanuages on dashboard. By default, English will be used. However, if you prefer to display in other languages, you can do the following steps to change the language.
Click the icon on top right tool bar
![image](https://user-images.githubusercontent.com/35857179/161960398-a41f9f23-5786-4a1c-a57e-8c166a2785a5.png)
and select the one you prefer. Currently we support the following languages.
![image](https://user-images.githubusercontent.com/35857179/161960528-fb852ad5-8a12-4fbc-9ad1-7c285980603f.png)
If you want to help translate, please check out <a href ="../engineering/translation" target="_blank">i18n</a>. If you want to request a new language, please create an issue on <a href="https://github.com/nocodb/nocodb/issues" target="_blank">Github</a>.

43
packages/noco-docs/content/en/setup-and-usages/lookup.md

@ -8,44 +8,61 @@ menuTitle: "Lookup"
## Lookup
#### Sample simple Organization structure:
### Sample simple Organization structure
- 5 verticals, each vertical has a team name & associated team code. Vertical **has many** Employees - relationship has been defined
<img src="https://user-images.githubusercontent.com/35857179/161894091-6b6092c2-7184-4fe6-aa17-64ce5a7e97d5.png" width="70%"/>
- 5 verticals, each vertical has a team name & associated team code
- 5 employees working at different verticals
- Vertical **has many** Employees : relationship has been defined
<img src="https://user-images.githubusercontent.com/86527202/144038845-402d5401-a214-4166-bc07-fcf8dcc8a961.png" width="125%"/>
<img src="https://user-images.githubusercontent.com/35857179/161894109-9b1a45da-c721-4d42-b676-a7c801cc160d.png" width="50%"/>
Now, we can explore how to extract team-code information in Employee table using **"LOOKUP"** columns
Now, we can explore how to extract team-code information in Employee table using **LOOKUP** columns
## Adding a lookup column
### Adding a lookup column
### 1. Add new column
<img src="https://user-images.githubusercontent.com/86527202/144230901-11dc69e7-3e4d-481d-b682-b7d73e6352c0.png" width="60%"/>
Click on '+' icon to the left of column headers in Employee table
<img src="https://user-images.githubusercontent.com/35857179/161895281-a43058c9-00be-4e8e-bf12-925284b7bcf8.png" width="70%"/>
### 2. Feed column name
<img src="https://user-images.githubusercontent.com/86527202/144230954-40646872-4a05-45fd-9a4f-52b8b00a3a7d.png" width="60%"/>
<img src="https://user-images.githubusercontent.com/35857179/161895397-bde8bd31-6e0a-4251-8ffc-a0d0a2605899.png" width="50%"/>
### 3. Select column type as 'Lookup'
<img src="https://user-images.githubusercontent.com/86527202/144230982-37d08274-ce63-4a28-a30a-bd6b41c3b489.png" width="60%"/>
<img src="https://user-images.githubusercontent.com/35857179/161895489-046a3ee4-4a42-4a48-95f9-e6cfc92c598a.png" width="50%"/>
### 4. Choose child table
Table Verticals in our example
<img src="https://user-images.githubusercontent.com/86527202/144231016-b277270d-62e4-4607-9aaa-b253621808a0.png" width="60%"/>
<img src="https://user-images.githubusercontent.com/35857179/161895601-0e8924ed-9ff0-4215-ab61-151848d01d0d.png" width="50%"/>
### 5. Select child column
<img src="https://user-images.githubusercontent.com/86527202/144231774-2bdd9988-d3f8-4933-96c6-5b710d645905.png" width="60%"/>
<img src="https://user-images.githubusercontent.com/35857179/161895637-e9f9f444-d733-41a4-bd18-8efed6fd16ad.png" width="50%"/>
### 6. Click on 'Save'
<img src="https://user-images.githubusercontent.com/86527202/144231320-9e8b3465-a9a4-4cf7-a9fe-65d47ab8b96c.png" width="60%"/>
<img src="https://user-images.githubusercontent.com/35857179/161895740-e6df9739-178d-4e8c-ba0e-b7537b30b30d.png" width="50%"/>
### 7. Required information is populated in the newly created column
<img src="https://user-images.githubusercontent.com/86527202/144231230-0e013684-b11c-4dce-bacf-9feee5546f26.png" width="60%"/>
<img src="https://user-images.githubusercontent.com/35857179/161895950-e7b86c0e-74ab-4bf3-b43c-878fe1320fba.png" width="50%"/>
## Nested Lookup
On top of the previous structure, let's introduce one more table - `Project` which contains `ProjectName` and each employee can be assigned with multiple projects. If we want to include the lookup column `TeamCode` from Employee in Project, we can create a nested lookup.
<img src="https://user-images.githubusercontent.com/35857179/161897419-aa00f5eb-3553-46ce-80a1-6c8565366c27.png" width="50%"/>
We can apply the same steps to create the lookup column `TeamCode` in table `Project`. This time we choose the lookup column created previously in table `Employee` as a child table.
<img src="https://user-images.githubusercontent.com/35857179/161893922-e1c8b7e5-655b-4096-827c-75105231d9e0.png" width="50%"/>
Click save. Then `TeamCode` is populated in table `Project`.
<img src="https://user-images.githubusercontent.com/35857179/161898396-c5c96485-3ec2-4452-88a0-6ed7665d6f34.png" width="50%"/>

37
packages/noco-docs/content/en/setup-and-usages/meta-management.md

@ -6,9 +6,13 @@ category: 'Product'
menuTitle: 'Metadata'
---
To go to the Meta Management Portal, click ``Project Metadata`` under ``Settings`` on the leftmost menu.
Project Metadata can be found by clicking `Team & Settings` from the left navigation drawer
![image](https://user-images.githubusercontent.com/35857179/126929430-1ad086a8-0611-4f39-8c7f-580637574056.png)
![image](https://user-images.githubusercontent.com/35857179/161902474-fd06678c-a171-4237-b171-dc028b3753de.png)
and clicking `Project Metadata`.
![image](https://user-images.githubusercontent.com/35857179/161905030-6c5deef7-3a3d-4e71-8763-88e57586e5b4.png)
## Project Metadata
@ -31,34 +35,29 @@ Under ``Project Metadata``, you can perform the following operations.
Import / Export will only transfer metadata and files related to the project and not any table data in the project.
</alert>
## Migration example
### Export metadata
Source project : Under ``Meta Management`` tab, select ``Export zip``, click ``Submit``. This step extracts project metadata and stores it in compressed (zip) format
## Migration Example
![meta-dev](https://user-images.githubusercontent.com/86527202/130780497-89578bd0-a417-468a-92d8-88c5c07a72b0.png "Step-Export")
### Export Metadata
### Import metadata
Destination project : Under ``Meta Management`` tab, select ``Import zip``, select ``meta.zip`` file stored in previous step. This step imports project metadata from compressed file (zip) selected and restarts project.
From the source project, go to `Project Metadata`. Under ``Export / Import Metadata`` tab, select ``Export zip``, click ``Submit``. This step extracts project metadata and stores it in compressed (zip) format.
![meta-prod](https://user-images.githubusercontent.com/86527202/130781015-3477e596-b1bc-4189-9853-bfd850157ba8.png)
![image](https://user-images.githubusercontent.com/35857179/161904400-b926494a-4533-41e4-85c3-5c6ca9ea0803.png)
---
### Import Metadata
From the destination project, go to `Project Metadata`. Under ``Export / Import Metadata`` tab, select ``Import zip``, select ``meta.zip`` file stored in previous step. This step imports project metadata from compressed file (zip) selected and restarts the project.
## Database Metadata
![image](https://user-images.githubusercontent.com/35857179/161904452-da0ac683-1715-438a-9c9c-91b34f8f45ba.png)
Under ``DB Metadata``, You can manage your models. For example, if you do not want to expose some APIs, you can untick those under APIs here.
## Database Metadata
![image](https://user-images.githubusercontent.com/35857179/127611038-a10ccee5-72ca-42cf-a55b-c8268c9fbe5c.png)
Go to `Project Metadata`, under ``Metadata``, you can see your metadata sync status. If it is out of sync, you can sync the schema. See <a href="./sync-schema">Sync Schema</a> for more.
The relations of all tables are listed under ``Relations``.
![image](https://user-images.githubusercontent.com/35857179/161904869-e6c8fe74-3156-49bc-be66-09f8d676aa83.png)
![image](https://user-images.githubusercontent.com/35857179/127611116-0289f739-bad7-45a0-b2bd-bfd8565f50b8.png)
## UI Access Control
You can control the access to each table and relation by roles.
![image](https://user-images.githubusercontent.com/35857179/127611188-339de6ca-e648-47c0-a358-eee0d03ae9d0.png)
Go to `Project Metadata`, under ``UI Access Control``, you can control the access to each table by roles.
![image](https://user-images.githubusercontent.com/35857179/127611237-5c43e194-a8ba-4e33-b473-5b690a38e80d.png)
![image](https://user-images.githubusercontent.com/35857179/161904939-6869e36d-0612-4ae5-a123-fee371472ede.png)

4
packages/noco-docs/content/en/setup-and-usages/primary-value.md

@ -6,11 +6,11 @@ category: "Product"
menuTitle: "Primary value"
---
## What is a 'Primary value' ?
## What is a `Primary Value` ?
- Primary value as the name stands is the primary or main value within a row of a table that you generally associate that row with.
- It should be usually associated with a column which is uniquely identifiable. However, this uniqueness is not enforced at the database level.
## What is the use of 'Primary value' ?
## What is the use of `Primary Value` ?
- Within a spreadsheet, primary value are always highlighted so that it is easier to recognise what row we are in.
- And when LinkToAnotherRecord is created between two tables - it is the primary value that appears in LinkToAnotheRecord column.

35
packages/noco-docs/content/en/setup-and-usages/share-base.md

@ -6,15 +6,14 @@ category: "Product"
menuTitle: "Share Base"
---
## Generate 'Share base'
## Generate `Share base`
- Open Project
- Click on 'Share' button on top right tool bar
- Click on `Share` button on top right tool bar
![Screenshot 2022-02-19 at 11 11 39 AM](https://user-images.githubusercontent.com/86527202/154789342-11546764-11ac-4ad1-a830-84cb603156b7.png)
![image](https://user-images.githubusercontent.com/35857179/161957411-ee9ec53d-4745-43c3-99f2-600cb20923e7.png)
- Under 'Shared base link' tab
- Toggle from 'Disabled Share base' to 'Anyone with the link'
- Under `Shared base link` tab and toggle from `Disabled Share base` to `Anyone with the link`
![Screenshot 2022-02-19 at 11 16 02 AM](https://user-images.githubusercontent.com/86527202/154789352-87e65fcc-fbe5-48f0-a1e1-e54dce91a1f3.png)
@ -22,30 +21,28 @@ menuTitle: "Share Base"
![Screenshot 2022-02-19 at 12 01 58 PM](https://user-images.githubusercontent.com/86527202/154789725-a1194e30-3101-423a-bd5c-25009c361b96.png)
## Modify 'Share base'
## Modify `Share base`
Modify 'Share base' will invalidate earlier generated 'Share base' link & generate a new link.
Modifying `Share base` will invalidate the `Share base` link generated previously and will generate a new link.
- Open Project base
- Click on 'Share' button on top right tool bar
- Under 'Shared base link' tab
- Click on 'Reload' button
- Click on 'Reload' button on Quick menu (next to Shared base link)
## Disable 'Share base'
## Disable `Share base`
Disable 'Share base' will invalidate generated 'Share base' link
Disabling `Share base` will invalidate the generated `Share base` link
- Open Project base
- Click on 'Share' button on top right tool bar
- Under 'Shared base link' tab
- Toggle from 'Anyone with the link' to 'Disable Share base'
- Under `Shared base link` and toggle from `Anyone with the link` to `Disable Share base`
## 'Share base' access permissions
## `Share base` Access Permissions
Shared base can be configured as
- Viewer: User with the link will get READ ONLY access to the project data
- Editor: User with the link will get READ WRITE access to the project data
- Viewer - User with the link will get **READ ONLY** access to the project data.
- Editor - User with the link will get **READ & WRITE** access to the project data.
## Embeddable Frame
@ -58,7 +55,7 @@ NocoDB interface can be embedded into existing applications easily by making use
- Under 'Shared base link' tab
- Click on </> button to copy 'Embeddable HTML code'
Sample
Example:
```html
<iframe
@ -67,9 +64,9 @@ Sample
frameborder="0"
width="100%"
height="700"
style="background: transparent; border: 1px solid #ddd"
>
style="background: transparent; border: 1px solid #ddd"></iframe
>
</iframe>
```
### Embed into application's HTML Body

33
packages/noco-docs/content/en/setup-and-usages/share-view.md

@ -0,0 +1,33 @@
---
title: "Share View"
description: "Procedure to share a view"
position: 620
category: "Product"
menuTitle: "Share View"
---
## Generate `Share View`
- Open a table or a view
- Click `Share View`
![image](https://user-images.githubusercontent.com/35857179/161969991-b2c64970-e52a-4543-b36e-d7f505368b66.png)
- Copy the link and share to someone
![image](https://user-images.githubusercontent.com/35857179/161970085-88714fc1-4999-4ba3-8283-31835954856c.png)
- Toggle `Restrict access with a password` if you want a password-protected view.
![image](https://user-images.githubusercontent.com/35857179/161970131-0fa83989-0673-493d-968f-76913a09cc06.png)
## Access `Share View`
- Access the link. If it is password-protected, enter the password to unlock.
![image](https://user-images.githubusercontent.com/35857179/161970356-b22214cf-968c-4fa3-a590-4ea3eebaea91.png)
- Otherwise, you should see the share view.
![image](https://user-images.githubusercontent.com/35857179/161970420-c47545a9-7a98-420f-a7c4-f1f473bed6f1.png)

37
packages/noco-docs/content/en/setup-and-usages/sync-schema.md

@ -6,21 +6,36 @@ category: 'Product'
menuTitle: 'Sync Schema'
---
## How to sync schema changes to NocoDB.
NocoDB allows you to sync schema changes if you have made changes outside NocoDB GUI. However, it has to be noted then you will have to bring your own
schema migrations for moving from environment to other.
## How to sync schema changes to NocoDB
NocoDB allows you to sync schema changes if you have made changes outside NocoDB GUI. However, it has to be noted then you will have to bring your own schema migrations for moving from environment to others.
Below are the steps to sync schema changes.
1. Under `Settings` menubar, click `Project Metadata`
2. Under `Meta Management` tab, click on `Metadata` sub tab.
3. Changes carried outside GUI, identified by NocoDB are listed under `Sync state`
4. Click `Sync Now` to complete Schema sync procedure.
![metasync](https://user-images.githubusercontent.com/86527202/147923717-630f0e0f-7c7a-431c-a50d-8f9376a06eb7.png)
### 1. From the menu bar, click `Team & Settings`
![image](https://user-images.githubusercontent.com/35857179/161902474-fd06678c-a171-4237-b171-dc028b3753de.png)
### 2. Click `Project Metadata` under SETTINGS
![image](https://user-images.githubusercontent.com/35857179/161905030-6c5deef7-3a3d-4e71-8763-88e57586e5b4.png)
### 3. Under `Metadata` tab, click on `Metadata` sub tab
![image](https://user-images.githubusercontent.com/35857179/161956928-95d3646c-5ae4-4562-8a65-5e36a63e3c2a.png)
### 4. Changes carried outside GUI, identified by NocoDB are listed under `Sync state`
![image](https://user-images.githubusercontent.com/35857179/161957119-f66f22ad-9d37-45ed-84ca-35c99726078c.png)
### 5. Click `Sync Now` to complete Schema sync procedure
![image](https://user-images.githubusercontent.com/35857179/161957228-de6b0a50-0a0f-4d3d-8624-585a28851ad7.png)
#### Notes
## Note
1. Column rename operation will be treated like 'column delete' & 'column create' operation
2. Only table schema changes identified will be listed under `Sync state`; any changes to records are automatically synchronized.
1. Column rename operation will be treated like `column delete` & `column create` operation.
2. Only table schema changes identified will be listed under `Sync state`. Any changes to records are automatically synchronized.

49
packages/noco-docs/content/en/setup-and-usages/team-and-auth.md

@ -7,36 +7,33 @@ menuTitle: 'Team & Auth'
---
Team & Auth can be found by clicking `Team & Settings` from the left navigation drawer and clicking `Team & Auth`.
![image](https://user-images.githubusercontent.com/35857179/161902474-fd06678c-a171-4237-b171-dc028b3753de.png)
![image](https://user-images.githubusercontent.com/35857179/161902746-aa59b8e5-06d2-4c07-ac60-c82f92b42752.png)
## How to Add a User
1. On the left panel, click on "Team & Auth":
[](https://user-images.githubusercontent.com/55474996/142497814-c52e12e5-5ab5-41e7-ac48-2b6af5f31fdd.png)
2. Make sure you are on the "Users Management" tab. Click on "New User":
1. Go to `Team & Auth`, click on `New User`.
![image](https://user-images.githubusercontent.com/35857179/161903214-1e0f7ba0-6daf-4073-90c9-9d86a40c9f90.png)
[](https://user-images.githubusercontent.com/55474996/142498070-60c5a861-0e8e-49e9-8830-42f54aa1fbf1.png)
| ![1a](https://user-images.githubusercontent.com/86527202/149292053-e6dfef1e-9627-47a7-98ad-8a3b2f61591b.png) |
| ------ |
2. Enter the user's `E-mail`. Select `User Role`, and Click `Invite`.
3. Enter the person's `EMAIL`
4. Select `ROLE`
5. Click `Invite`
> You can add multiple comma (,) seperated emails
[](https://user-images.githubusercontent.com/55474996/142498163-032187e4-d375-4542-8211-e986880a2bb0.png)
<alert type="success">
Tip: You can add multiple comma (,) seperated emails
</alert>
| ![2 1](https://user-images.githubusercontent.com/86527202/149291166-d28a65b7-195a-4233-97a9-a3c2259c9fc8.png) |
| ------ |
![image](https://user-images.githubusercontent.com/35857179/161903296-cd6ea0d5-193f-4e66-aa7a-4cfc468216af.png)
If you do not have an SMTP sender configured, make sure to copy the invite link and manually send it to your collaborator:
[](https://user-images.githubusercontent.com/55474996/142498376-ff52276b-92d8-4aca-8c47-fd7efea50ab6.png)
If you do not have an SMTP sender configured, make sure to copy the invite link and manually send it to your collaborator.
| ![3](https://user-images.githubusercontent.com/86527202/149291202-967f164b-8ddc-4240-a470-ce8b4e0c2d41.png) |
| ------ |
| ![4](https://user-images.githubusercontent.com/86527202/149291223-dfc9e24b-658d-45fb-a0d5-c9773162bfbe.png) |
![image](https://user-images.githubusercontent.com/35857179/161903764-1c875441-87f4-4b25-a864-441a23c96cea.png)
## Explanation of User Role Permissions
## User Role Permissions
### Advanced options & configurations
### Advanced Options & Configurations
| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; Owner &nbsp; &nbsp;| &nbsp; &nbsp; Creator &nbsp; &nbsp; | &nbsp; &nbsp; Editor &nbsp; &nbsp;| Commenter | &nbsp; &nbsp; Viewer &nbsp; &nbsp;|
| :-- | :-: | :-: | :-: | :-: | :-: |
| Audit | ✅ | ✅ | ❌ | ❌ | ❌ |
@ -52,7 +49,7 @@ If you do not have an SMTP sender configured, make sure to copy the invite link
| Preview mode | ✅ | ✅ | ❌ | ❌ | ❌ |
### Schema options
### Schema Options
| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; Owner &nbsp; &nbsp;| &nbsp; &nbsp; Creator &nbsp; &nbsp; | &nbsp; &nbsp; Editor &nbsp; &nbsp;| Commenter | &nbsp; &nbsp; Viewer &nbsp; &nbsp;|
| :-- | :-: | :-: | :-: | :-: | :-: |
| Add table | ✅ | ✅ | ❌ | ❌ | ❌ |
@ -63,7 +60,7 @@ If you do not have an SMTP sender configured, make sure to copy the invite link
| Modify column | ✅ | ✅ | ❌ | ❌ | ❌ |
### Record options
### Record Options
| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; Owner &nbsp; &nbsp;| &nbsp; &nbsp; Creator &nbsp; &nbsp; | &nbsp; &nbsp; Editor &nbsp; &nbsp;| Commenter | &nbsp; &nbsp; Viewer &nbsp; &nbsp;|
| :-- | :-: | :-: | :-: | :-: | :-: |
| Add row | ✅ | ✅ | ✅ | ❌ | ❌ |
@ -85,7 +82,7 @@ If you do not have an SMTP sender configured, make sure to copy the invite link
| Create new view | ✅ | ✅ | ❌ | ❌ | ❌ |
| Share view | ✅ | ✅ | ❌ | ❌ | ❌ |
### Project generals
### Project Generals
| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; Owner &nbsp; &nbsp;| &nbsp; &nbsp; Creator &nbsp; &nbsp; | &nbsp; &nbsp; Editor &nbsp; &nbsp;| Commenter | &nbsp; &nbsp; Viewer &nbsp; &nbsp;|
| :-- | :-: | :-: | :-: | :-: | :-: |
| Created views access | ✅ | ✅ | ✅ | ✅ | ✅ |
@ -97,7 +94,9 @@ If you do not have an SMTP sender configured, make sure to copy the invite link
| Project Info | ✅ | ✅ | ✅ | ✅ | ✅ |
| Swagger API | ✅ | ✅ | ✅ | ✅ | ✅ |
### Automations
<!-- TODO: -->
<!-- ### Automations
| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; Owner &nbsp; &nbsp;| &nbsp; &nbsp; Creator &nbsp; &nbsp; | &nbsp; &nbsp; Editor &nbsp; &nbsp;| Commenter | &nbsp; &nbsp; Viewer &nbsp; &nbsp;|
| :-- | :-: | :-: | :-: | :-: | :-: |
@ -105,4 +104,4 @@ If you do not have an SMTP sender configured, make sure to copy the invite link
| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; Owner &nbsp; &nbsp;| &nbsp; &nbsp; Creator &nbsp; &nbsp; | &nbsp; &nbsp; Editor &nbsp; &nbsp;| Commenter | &nbsp; &nbsp; Viewer &nbsp; &nbsp;|
| :-- | :-: | :-: | :-: | :-: | :-: |
-->

5
packages/noco-docs/content/en/setup-and-usages/usage-information.md

@ -36,5 +36,8 @@ We do not collect private or sensitive information, such as:
## Opt-out
To disable usage information collection please set following environment variable.
> NC_DISABLE_TELE=true
```bash
NC_DISABLE_TELE=true
```

2
packages/noco-docs/nuxt.config.js

@ -2,7 +2,7 @@ import theme from '@nuxt/content-theme-docs'
export default theme({
docs: {
primaryColor: '#3282ff'
primaryColor: '#1348ba'
},
css: [
"./assets/main.css"

2
packages/noco-docs/package.json

@ -3,7 +3,7 @@
"version": "1.0.0",
"license": "MIT",
"scripts": {
"dev": "NODE_OPTIONS=--openssl-legacy-provider nuxt",
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt start",
"generate": "nuxt generate"

Loading…
Cancel
Save