NocoDB
✨ A alternativa de opção de fonte aberta✨
Transforma qualquer MySQL, PostgreSQL, SQL Server, Sqlite e MariaDB em uma planilha inteligente.
[![Build Status](https://travis-ci.org/dwyl/esta.svg?branch=master)](https://travis-ci.com/github/NocoDB/NocoDB)
[![Node version](https://badgen.net/npm/node/next)](http://nodejs.org/download/)
[![Twitter](https://img.shields.io/twitter/url/https/twitter.com/NocoDB.svg?style=social&label=Follow%20%40NocoDB)](https://twitter.com/NocoDB)
Website •
Discord •
Twitter
![OpenSourceAirtableAlternative](https://user-images.githubusercontent.com/5435402/133762127-e94da292-a1c3-4458-b09a-02cd5b57be53.png)
# Experimente rápida
### 1-Click Deploy
#### Heroku
### Usando o Docker.
```bash
docker run -d --name nocodb -p 8080:8080 nocodb/nocodb:latest
```
> To persist data you can mount volume at `/usr/app/data/`.
### Usando npm.
```
npx create-nocodb-app
```
### Usando o git.
```
git clone https://github.com/nocodb/nocodb-seed
cd nocodb-seed
npm install
npm start
```
### GUI
Acessar o painel usando: [http://localhost:8080/dashboard](http://localhost:8080/dashboard)
# Junte-se a nossa comunidade
# Screenshots
![1](https://user-images.githubusercontent.com/86527202/136070349-cacc406d-9efe-406f-9aa2-1b81564332a7.png)
![2](https://user-images.githubusercontent.com/86527202/136070360-706a4976-c4c9-4fde-b66c-73b54199799a.png)
![5](https://user-images.githubusercontent.com/86527202/136070372-08c34b1a-9ecf-4486-b6db-23b2dc135afa.png)
![6](https://user-images.githubusercontent.com/86527202/136070375-337a5d77-7b97-496d-9634-e8d86014b357.png)
![7](https://user-images.githubusercontent.com/86527202/136070379-159bb1b7-0f36-46c6-a6ea-b1f8a3cb0568.png)
![8](https://user-images.githubusercontent.com/86527202/136070385-de1c34b3-0ecd-4127-8706-32fbd8675cb2.png)
![9](https://user-images.githubusercontent.com/86527202/136070398-24abb3d4-a76f-4c45-979e-9ef93691bc7f.png)
![9a](https://user-images.githubusercontent.com/86527202/136070405-5809d0c9-9280-4935-8d98-105f37f898a7.png)
![9b](https://user-images.githubusercontent.com/86527202/136070410-09ae3f18-95d0-40f1-b525-b05f888573ff.png)
![10](https://user-images.githubusercontent.com/86527202/136070414-0ea0890f-734c-473c-977b-bbf46a812557.png)
![11](https://user-images.githubusercontent.com/86527202/136070417-7fd60c3b-8dd2-4cdb-a6dd-1eec80e636ac.png)
# Recursos
### Interface de planilha rica
- ⚡ Pesquisar, classificar, filtrar, esconder colunas com uber facilidade
- ⚡ Criar visualizações: Grade, Galeria, Kanban, Gantt, Formulário
- ⚡ Compartilhar Visualizações: Public & Senha Protegido
- ⚡ Vistas pessoais e bloqueadas
- ⚡ Carregar imagens para as células (funciona com S3, Minio, GCP, Azure, Digitalocean, Linodo, OVH, Backblaze) !!
- ⚡ Funções: proprietário, criador, editor, comentarista, visualizador, comentador, funções personalizadas.
- ⚡ Controle de acesso: controle de acesso fino, mesmo no banco de dados, no nível da tabela e da coluna.
### App Store for Workflow Automations:
- ⚡ Bate-papo: Equipes Microsoft, folga, discórdia, material
- ⚡ Email: SMTP, SES, MailChimp
- ⚡ SMS: Twilio
- ⚡ whatsapp.
- ⚡ Qualquer APIs da 3ª parte
### Acesso programático da API via:
- ⚡ repouso APIs (Swagger)
- ⚡ APIs GraphQl.
- ⚡ Inclui autenticação JWT e autenticação social
- ⚡ Tokens de API para integrar com Zapier, integromat.
# Production Setup
O NOCODB requer um banco de dados para armazenar metadados de exibições de planilhas e bancos de dados externos. E parâmetros de conexão para este banco de dados podem ser especificados na variável de ambiente NC_DB.
## Docker
#### Example MySQL
```
docker run -d -p 8080:8080 \
-e NC_DB="mysql2://host.docker.internal:3306?u=root&p=password&d=d1" \
-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \
nocodb/nocodb:latest
```
#### Example Postgres
```
docker run -d -p 8080:8080 \
-e NC_DB="pg://host:port?u=user&p=password&d=database" \
-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \
nocodb/nocodb:latest
```
#### Example SQL Server
```
docker run -d -p 8080:8080 \
-e NC_DB="mssql://host:port?u=user&p=password&d=database" \
-e NC_AUTH_JWT_SECRET="569a1821-0a93-45e8-87ab-eb857f20a010" \
nocodb/nocodb:latest
```
## Docker Compose
```
git clone https://github.com/nocodb/nocodb
cd docker-compose
cd mysql or pg or mssql
docker-compose up
```
## Environment variables
| Variable | Mandatory | Comments | If absent |
|-------------------------|-----------|----------------------------------------------------------------------------------|--------------------------------------------|
| NC_DB | Yes | See our database URLs | A local SQLite will be created in root folder |
| 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_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_SENTRY_DSN | No | For Sentry monitoring | |
| NC_CONNECT_TO_EXTERNAL_DB_DISABLED | No | Disable Project creation with external database | |
| NC_DISABLE_TELE | No | Disable telemetry | |
| NC_BACKEND_URL | No | Custom Backend URL | ``http://localhost:8080`` will be used |
# Development setup
```
git clone https://github.com/nocodb/nocodb
cd nocodb
# run backend
cd packages/nocodb
npm install
npm run watch:run
# open localhost:8080/dashboard in browser
# run frontend
cd packages/nc-gui
npm install
npm run dev
# open localhost:3000/dashboard in browser
```
Changes made to code automatically restart.
## Running Cypress tests locally
```shell
# install dependencies(cypress)
npm install
# run required services by using docker compose
docker-compose -f ./docker-compose-cypress.yml up
# wait until both 3000 and 8080 porta are avalable
# and run cypress test using following command
npm run cypress:run
# or run following command to run it with GUI
npm run cypress:open
```
# Contributing
- Please take a look at ./scripts/contribute/HowToApplyLicense.md
- Ignore adding headers for .json or .md or .yml
# 🎯 Por que estamos construindo isso?
A maioria das empresas da Internet equipar-se com a planilha ou um banco de dados para resolver suas necessidades de negócios. Planilhas são usadas por um bilhão de seres humanos colaborativamente todos os dias. No entanto, estamos longe de trabalhar em velocidades semelhantes em bancos de dados que são muito mais poderosas ferramentas quando se trata de computação. As tentativas de resolver isso com ofertas de SaaS significam controles de acesso horríveis, lockin do fornecedor, lockin de dados, alterações abruptas de preços e mais importante, um teto de vidro no futuro.
# ❤ Nossa missão :
Nossa missão é fornecer a mais poderosa interface de código para bancos de dados que é fonte aberta para cada negócio de Internet no mundo. Isso não apenas democratizaria o acesso a uma poderosa ferramenta de computação, mas também produzirá um bilhão de pessoas que terão habilidades radicais de corda e construção na Internet."