diff --git a/.gitignore b/.gitignore
index de9587b4..e044448b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
.env
bin/
data/
+site/
~/data/.gitkeep
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..4de2342a
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,23 @@
+# Contribuindo com a Minha Receita
+
+Escreva testes, rode os testes e reconstrua os containers para saber se está tudo certo:
+
+```console
+$ go test ./...
+$ docker-compose build
+```
+
+## Documentação
+
+Utilizamos o [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/):
+
+```console
+$ docker pull squidfunk/mkdocs-material
+$ docker run --rm -v $(pwd):/docs squidfunk/mkdocs-material build
+```
+
+A documentação vai ser gerada em `site/index.html`. Para servir enquanto desenvolve:
+
+```console
+$ docker run -p 8000:8000 --rm -v (pwd):/docs squidfunk/mkdocs-material serve --dev-addr 0.0.0.0:8000
+```
diff --git a/README.md b/README.md
index 08d237c6..0e4102b2 100644
--- a/README.md
+++ b/README.md
@@ -1,289 +1,11 @@
-# Minha Receita [![Tests](https://github.com/cuducos/minha-receita/workflows/API/badge.svg)](https://github.com/cuducos/minha-receita/actions)
+
-API web para consulta de informações do CNPJ (Cadastro Nacional da Pessoa Jurídica) da Receita Federal.
-
-1. [Sobre](#sobre)
- 1. [Histórico](#historico)
- 1. [Propósito](#proposito)
- 1. [Qual a URL para acesso?](#qual-a-url-para-acesso)
-1. [Instalação](#instalacao)
- 1. [Requisitos](#requisitos)
- 1. [Configurações](#configuracoes)
-1. [Uso](#uso)
- 1. [Download dos dados](#download-dos-dados)
- 1. [Carregamento do banco de dados](#carregamento-do-banco-de-dados)
- 1. [API web](#api-web)
-1. [Contribuindo](#contribuindo)
-1. [Muito obrigado](#muito-obrigado)
-
-## Sobre
-
-### Histórico
-
-Pela [Lei de Acesso à Informação](http://www.acessoainformacao.gov.br/assuntos/conheca-seu-direito/a-lei-de-acesso-a-informacao), os dados de CNPJ devem ser públicos e acessíveis por máquina. A Receita Federal oferece esses dados escondidos atrás de um CAPTCHA ou em formato pouco convencional (um _fixed-width text file_), com links lentos e instáveis para download arquivos somando gigas. Isso não é acessível o suficiente.
-
-O [Turicas](https://twitter.com/turicas) já baixou e converteu esses arquivos para CSV, e ainda oferece um _mirror_ para download mais estável desses arquivos — tudo isso no [`socios-brasil`]() e disponibilizado no [Brasil.IO](https://brasil.io/).
-
-### Propósito
-
-O código desse repositório faz esses dados ainda mais acessíveis:
-
-1. Transformando os dados em CSV (assim como o [`socios-brasil`](https://github.com/turicas/socios-brasil) já faz)
-2. Importando automaticamente os dados para um banco de dados PostgreSQL
-3. Adicionando dados com descrições dos CNAEs (inexistente nos arquivos da Receita Federal)
-4. Fornecendo uma API web para a consulta de dados de um CNPJ
-
-### Qual a URL para acesso?
-
-Disponibilizo essa aplicação para que cada um rode na sua própria infraestrutura, mas existe um protótipo no ar em [minhareceita.org](https://minhareceita.org). O protótipo não tem nenhuma [garantia de nível de serviço](https://pt.wikipedia.org/wiki/Acordo_de_n%C3%ADvel_de_servi%C3%A7o) e a única forma de aumentar sua disponibilidade é contribuindo via [financiamento coletivo aqui no GitHub](https://github.com/sponsors/cuducos). Mais sobre o protótipo nesse [fio](https://twitter.com/cuducos/status/1339980776985808901).
-
-Não tenho interesse em desenvolver um sistema para cobrar por esse serviço.
-
-## Instalação
-
-### Requisitos
-
-Existem duas formas de rodar essa aplicação:
-
-* ou diretamente a partir do seu sistema operacional
-* ou com Docker
-
-_Talvez_ seja necessário um sistema UNIX (Linux ou macOS), mas não tenho certeza pois não testei em Windows.
-
-É necessário cerca de 30Gb disponíveis de espaço em disco para armazenar os dados.
-
-#### Requisitos e instalação sem Docker
-
-* [Go](https://golang.org/) versão 1.15
-* Cliente [PostgreSQL](https://www.postgresql.org/) (comando `psql` disponível no seu terminal — em sistemas Debian, `apt install postgresql-client` resolve)
-* Variável de ambiente`POSTGRES_URI` com credenciais de acesso a um banco de dados PostgreSQL (como no exemplo `.env.sample`)
-
-Baixe as dependências e compile a aplicação para um diretório incluído no `PATH`, por exemplo:
-
-```console
-$ go get
-$ go build -o /usr/local/bin minha-receita
-```
-
-#### Requisitos e instalação com Docker
-
-* [Docker](https://www.docker.com/)
-* [Docker Compose](https://docs.docker.com/compose/install/)
-
-Gere as imagens dos containers com:
-
-```console
-$ docker-compose build
-```
-
-### Configurações
-
-Todas as configurações são passadas via variáveis de ambiente e estão documentadas no `--help` da aplicação.
-
-#### Exemplo
-
-Sem Docker:
-
-```console
-$ minha-receita --help
-$ minha-receita api --help
-```
-
-Com Docker:
-
-```console
-$ docker-compose run --rm minha-receita --help
-$ docker-compose run --rm minha-receita api --help
-```
-
-## Uso
-
-### Download dos dados
-
-O comando `download` faz o download dos arquivos necessários para alimentar o banco de dados. Na sequência, o comando `parse` transforma os arquivos para o formato CSV. Ambos aceitam o argumento `--directory` (ou `-d`) com um diretório onde encontrar os dados (o padrão é `data/`).
+![Minha Receita](docs/minha-receita.svg)
-Por padrão o comando `download` baixa dados do servidor da Receita Federal, que é lento e instável, então, como alternativa, podemos utilizar o _mirror_ do [Brasil.IO](https://brasil.io) com a opção `--mirror`.
+![Tests](https://img.shields.io/github/workflow/status/cuducos/minha-receita/Tests?label=tests) ![Docs](https://img.shields.io/netlify/259319f9-af84-41a0-b481-f7226a7a823e?label=docs)
-#### Exemplo
-
-Sem Docker:
-
-```console
-$ minha-receita download --mirror
-$ minha-receita parse
-```
-
-Com Docker:
-
-```console
-$ docker-compose run --rm minha-receita download --directory /mnt/data/
-$ docker-compose run --rm minha-receita parse --directory /mnt/data/
-```
-
-### Carregamento do banco de dados
-
-Primeiro é necessário criar as tabelas no banco de dados, para isso utlize o comando `create`.
-
-Caso seja necessário limpar o banco de dados para começar um novo carregamento de dados, é possível excluir as tabelas com comando `drop`.
-
-Para importar os dados, utilize o comando `import` — esse comando pode demorar horas, depdendendo do equipamento. Esse comando também aceita a opção `--directory` ou `-d` para especificar um local diferente do padrão onde encontrar os arquivos.
-
-#### Questões de privacidade
-
-Assim como o [`socios-brasil`](https://github.com/turicas/socios-brasil#privacidade) removemos alguns dados para evitar exposição de dados sensíveis de pessoas físicas, bem como SPAM. Ao contrário do `socios-brasil`, não temos uma opção para desativar essa camada de provacidade (mas PRs são bem-vindos).
-
-#### Exemplos de uso
-
-Sem Docker:
-
-```console
-$ minha-receita drop # caso necessário
-$ minha-receita create
-$ minha-receita import
-```
-
-Com Docker:
-
-```console
-$ docker-compose run --rm minha-receita drop # caso necessário
-$ docker-compose run --rm minha-receita create
-$ docker-compose run --rm minha-receita import -d /mnt/data/
-```
-
-### API web
-
-A API web é uma aplicação super simples que, por padrão, ficará disponível em [`localhost:8000`](http://localhost:8000).
-
-#### Exemplos de uso
-
-Sem Docker:
-
-```console
-$ minha-receita api
-```
-
-Com Docker:
-
-```console
-$ docker-compose up
-```
-
-A API web tem apenas dois _endpoints_:
-
-##### `POST /`
-
-| Caminho da URL | Tipo de requisição | Dados enviados | Código esperado na resposta | Conteúdo esperado na resposta |
-|---|---|---|---|---|
-| `/` | `GET` | | 405 | `{"message": "Essa URL aceita apenas o método POST."}` |
-| `/` | `HEAD` | | 405 | `{"message": "Essa URL aceita apenas o método POST."}` |
-| `/` | `POST` | | 400 | `{"message": "conteúdo inválido na requisição POST."}` |
-| `/` | `POST` | `cpf=foobar` | 400 | `{"message": "CNPJ não enviado na requisição POST."}` |
-| `/` | `POST` | `cnpj=foobar` | 400 | `{"message": "CNPJ foobar inválido."}` |
-| `/` | `POST` | `cnpj=00000000000000` | 404 | `{"message": "CNPJ 00.000.000/0001-91 não encontrado."}` |
-| `/` | `POST` | `cnpj=19131243000197` | 200 | _Ver JSON de exemplo abaixo._ |
-| `/` | `POST` | `cnpj=19.131.243/0001-97` | 200 | _Ver JSON de exemplo abaixo._ |
-
-###### Exemplo de requisição usando o `curl`
-
-```console
-$ curl -i -X POST -d cnpj=19131243000197 0.0.0.0:8000
-```
-
-###### Exemplo de resposta válida
-
-```json
-{
- "cnpj": "19131243000197",
- "identificador_matriz_filial": 1,
- "descricao_matriz_filial": "Matriz",
- "razao_social": "OPEN KNOWLEDGE BRASIL",
- "nome_fantasia": "REDE PELO CONHECIMENTO LIVRE",
- "situacao_cadastral": 2,
- "descricao_situacao_cadastral": "Ativa",
- "data_situacao_cadastral": "2013-10-03",
- "motivo_situacao_cadastral": 0,
- "nome_cidade_exterior": null,
- "codigo_natureza_juridica": 3999,
- "data_inicio_atividade": "2013-10-03",
- "cnae_fiscal": 9430800,
- "cnae_fiscal_descricao": "Atividades de associações de defesa de direitos sociais",
- "descricao_tipo_logradouro": "ALAMEDA",
- "logradouro": "FRANCA",
- "numero": "144",
- "complemento": "APT 34",
- "bairro": "JARDIM PAULISTA",
- "cep": 1422000,
- "uf": "SP",
- "codigo_municipio": 7107,
- "municipio": "SAO PAULO",
- "ddd_telefone_1": "11 23851939",
- "ddd_telefone_2": null,
- "ddd_fax": null,
- "qualificacao_do_responsavel": 10,
- "capital_social": 0.0,
- "porte": 5,
- "descricao_porte": "Demais",
- "opcao_pelo_simples": false,
- "data_opcao_pelo_simples": null,
- "data_exclusao_do_simples": null,
- "opcao_pelo_mei": false,
- "situacao_especial": null,
- "data_situacao_especial": null,
- "cnaes_secundarios": [
- {
- "codigo": 9493600,
- "descricao": "Atividades de organizações associativas ligadas à cultura e à arte"
- },
- {
- "codigo": 9499500,
- "descricao": "Atividades associativas não especificadas anteriormente"
- },
- {
- "codigo": 8599699,
- "descricao": "Outras atividades de ensino não especificadas anteriormente"
- },
- {
- "codigo": 8230001,
- "descricao": "Serviços de organização de feiras, congressos, exposições e festas"
- },
- {
- "codigo": 6204000,
- "descricao": "Consultoria em tecnologia da informação"
- }
- ],
- "qsa": [
- {
- "identificador_de_socio": 2,
- "nome_socio": "NATALIA PASSOS MAZOTTE CORTEZ",
- "cnpj_cpf_do_socio": "***059967**",
- "codigo_qualificacao_socio": 10,
- "percentual_capital_social": 0,
- "data_entrada_sociedade": "2019-02-14",
- "cpf_representante_legal": null,
- "nome_representante_legal": null,
- "codigo_qualificacao_representante_legal": null
- }
- ]
-}
-```
-
-##### `GET /healthz`
-
-| Caminho da URL | Tipo de requisição | Código esperado na resposta | Conteúdo esperado na resposta |
-|---|---|---|---|
-| `/healthz` | `GET` | 200 | |
-| `/healthz` | `HEAD` | 405 | `{"message": "Essa URL aceita apenas o método GET."}` |
-| `/healthz` | `POST` | 405 | `{"message": "conteúdo inválido na requisição GET."}` |
-
-## Contribuindo
-
-Escreva testes, rode os testes e reconstrua os containers para saber se está tudo certo:
-
-```console
-$ go test ./...
-$ docker-compose build
-```
+API web para consulta de informações do CNPJ (Cadastro Nacional da Pessoa Jurídica) da Receita Federal.
-## Muito obrigado
+Confira a [documentação](https://docs.minhareceita.org), o [guia de contribuição](CONTRIBUTING.md), e [ajude a manter o servidor no ar](https://github.com/sponsors/cuducos).
-Ao [Turicas](https://twitter.com/turicas) por todo ativismo mais o trabalho de coleta, tratamento, e carinho que faz os dados serem cada vez mais acessíveis. Muito desse projeto se deve a ele. Ao [Bruno](https://twitter.com/555112299jedi), sem o qual [nunca teríamos acesso a esses dados por menos de R$ 500 mil](https://medium.com/serenata/o-dia-que-a-receita-nos-mandou-pagar-r-500-mil-para-ter-dados-p%C3%BAblicos-8e18438f3076). E ao [Fireman](https://twitter.com/daniellfireman), pela amizade e pela mentoria em Go!
+
diff --git a/docs/cliente.md b/docs/cliente.md
new file mode 100644
index 00000000..61a6c29f
--- /dev/null
+++ b/docs/cliente.md
@@ -0,0 +1,108 @@
+# Cliente
+
+A API web tem apenas dois _endpoints_:
+
+## `POST /`
+
+| Caminho da URL | Tipo de requisição | Dados enviados | Código esperado na resposta | Conteúdo esperado na resposta |
+|---|---|---|---|---|
+| `/` | `GET` | | 405 | `{"message": "Essa URL aceita apenas o método POST."}` |
+| `/` | `HEAD` | | 405 | `{"message": "Essa URL aceita apenas o método POST."}` |
+| `/` | `POST` | | 400 | `{"message": "conteúdo inválido na requisição POST."}` |
+| `/` | `POST` | `cpf=foobar` | 400 | `{"message": "CNPJ não enviado na requisição POST."}` |
+| `/` | `POST` | `cnpj=foobar` | 400 | `{"message": "CNPJ foobar inválido."}` |
+| `/` | `POST` | `cnpj=00000000000000` | 404 | `{"message": "CNPJ 00.000.000/0001-91 não encontrado."}` |
+| `/` | `POST` | `cnpj=19131243000197` | 200 | _Ver JSON de exemplo abaixo._ |
+| `/` | `POST` | `cnpj=19.131.243/0001-97` | 200 | _Ver JSON de exemplo abaixo._ |
+
+### Exemplo de requisição usando o `curl`
+
+```console
+$ curl -i -X POST -d cnpj=19131243000197 0.0.0.0:8000
+```
+
+### Exemplo de resposta válida
+
+```json
+{
+ "cnpj": "19131243000197",
+ "identificador_matriz_filial": 1,
+ "descricao_matriz_filial": "Matriz",
+ "razao_social": "OPEN KNOWLEDGE BRASIL",
+ "nome_fantasia": "REDE PELO CONHECIMENTO LIVRE",
+ "situacao_cadastral": 2,
+ "descricao_situacao_cadastral": "Ativa",
+ "data_situacao_cadastral": "2013-10-03",
+ "motivo_situacao_cadastral": 0,
+ "nome_cidade_exterior": null,
+ "codigo_natureza_juridica": 3999,
+ "data_inicio_atividade": "2013-10-03",
+ "cnae_fiscal": 9430800,
+ "cnae_fiscal_descricao": "Atividades de associações de defesa de direitos sociais",
+ "descricao_tipo_logradouro": "ALAMEDA",
+ "logradouro": "FRANCA",
+ "numero": "144",
+ "complemento": "APT 34",
+ "bairro": "JARDIM PAULISTA",
+ "cep": 1422000,
+ "uf": "SP",
+ "codigo_municipio": 7107,
+ "municipio": "SAO PAULO",
+ "ddd_telefone_1": "11 23851939",
+ "ddd_telefone_2": null,
+ "ddd_fax": null,
+ "qualificacao_do_responsavel": 10,
+ "capital_social": 0.0,
+ "porte": 5,
+ "descricao_porte": "Demais",
+ "opcao_pelo_simples": false,
+ "data_opcao_pelo_simples": null,
+ "data_exclusao_do_simples": null,
+ "opcao_pelo_mei": false,
+ "situacao_especial": null,
+ "data_situacao_especial": null,
+ "cnaes_secundarios": [
+ {
+ "codigo": 9493600,
+ "descricao": "Atividades de organizações associativas ligadas à cultura e à arte"
+ },
+ {
+ "codigo": 9499500,
+ "descricao": "Atividades associativas não especificadas anteriormente"
+ },
+ {
+ "codigo": 8599699,
+ "descricao": "Outras atividades de ensino não especificadas anteriormente"
+ },
+ {
+ "codigo": 8230001,
+ "descricao": "Serviços de organização de feiras, congressos, exposições e festas"
+ },
+ {
+ "codigo": 6204000,
+ "descricao": "Consultoria em tecnologia da informação"
+ }
+ ],
+ "qsa": [
+ {
+ "identificador_de_socio": 2,
+ "nome_socio": "NATALIA PASSOS MAZOTTE CORTEZ",
+ "cnpj_cpf_do_socio": "***059967**",
+ "codigo_qualificacao_socio": 10,
+ "percentual_capital_social": 0,
+ "data_entrada_sociedade": "2019-02-14",
+ "cpf_representante_legal": null,
+ "nome_representante_legal": null,
+ "codigo_qualificacao_representante_legal": null
+ }
+ ]
+}
+```
+
+## `GET /healthz`
+
+| Caminho da URL | Tipo de requisição | Código esperado na resposta | Conteúdo esperado na resposta |
+|---|---|---|---|
+| `/healthz` | `GET` | 200 | |
+| `/healthz` | `HEAD` | 405 | `{"message": "Essa URL aceita apenas o método GET."}` |
+| `/healthz` | `POST` | 405 | `{"message": "conteúdo inválido na requisição GET."}` |
diff --git a/docs/favicon.svg b/docs/favicon.svg
new file mode 100644
index 00000000..103881af
--- /dev/null
+++ b/docs/favicon.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 00000000..4b487dd2
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,32 @@
+# Sobre
+
+![Minha Receita](minha-receita.svg)
+
+## Histórico
+
+Pela [Lei de Acesso à Informação](http://www.acessoainformacao.gov.br/assuntos/conheca-seu-direito/a-lei-de-acesso-a-informacao), os dados de CNPJ devem ser públicos e acessíveis por máquina. A Receita Federal oferece esses dados escondidos atrás de um CAPTCHA ou em formato pouco convencional (um _fixed-width text file_), com links lentos e instáveis para download arquivos somando gigas. Isso não é acessível o suficiente.
+
+O [Turicas](https://twitter.com/turicas) já baixou e converteu esses arquivos para CSV, e ainda oferece um _mirror_ para download mais estável desses arquivos — tudo isso no [`socios-brasil`]() e disponibilizado no [Brasil.IO](https://brasil.io/).
+
+## Propósito
+
+O código desse repositório faz esses dados ainda mais acessíveis:
+
+1. Transformando os dados em CSV (assim como o [`socios-brasil`](https://github.com/turicas/socios-brasil) já faz)
+2. Importando automaticamente os dados para um banco de dados PostgreSQL
+3. Adicionando dados com descrições dos CNAEs (inexistente nos arquivos da Receita Federal)
+4. Fornecendo uma API web para a consulta de dados de um CNPJ
+
+## Qual a URL para acesso?
+
+Disponibilizo essa aplicação para que cada um rode na sua própria infraestrutura, mas existe um protótipo no ar em [`https://minhareceita.org/`](https://minhareceita.org).
+
+O protótipo não tem nenhuma [garantia de nível de serviço](https://pt.wikipedia.org/wiki/Acordo_de_n%C3%ADvel_de_servi%C3%A7o) e a única forma de aumentar sua disponibilidade é contribuindo via [financiamento coletivo no GitHub](https://github.com/sponsors/cuducos).
+
+Mais sobre o protótipo nesse [fio no Twitter](https://twitter.com/cuducos/status/1339980776985808901).
+
+Não tenho interesse em desenvolver um sistema para cobrar por esse serviço.
+
+## Muito obrigado
+
+Ao [Turicas](https://twitter.com/turicas) por todo ativismo mais o trabalho de coleta, tratamento, e carinho que faz os dados serem cada vez mais acessíveis. Muito desse projeto se deve a ele. Ao [Bruno](https://twitter.com/555112299jedi), sem o qual [nunca teríamos acesso a esses dados por menos de R$ 500 mil](https://medium.com/serenata/o-dia-que-a-receita-nos-mandou-pagar-r-500-mil-para-ter-dados-p%C3%BAblicos-8e18438f3076). E ao [Fireman](https://twitter.com/daniellfireman), pela mentoria em Go!
diff --git a/docs/instalacao.md b/docs/instalacao.md
new file mode 100644
index 00000000..b3d44ab6
--- /dev/null
+++ b/docs/instalacao.md
@@ -0,0 +1,56 @@
+# Instalação
+
+## Requisitos
+
+Existem duas formas de rodar essa aplicação:
+
+* ou diretamente a partir do seu sistema operacional
+* ou com Docker
+
+_Talvez_ seja necessário um sistema UNIX (Linux ou macOS), mas não tenho certeza pois não testei em Windows.
+
+É necessário cerca de 30Gb disponíveis de espaço em disco para armazenar os dados.
+
+### Requisitos e instalação sem Docker
+
+* [Go](https://golang.org/) versão 1.15
+* Cliente [PostgreSQL](https://www.postgresql.org/) (comando `psql` disponível no seu terminal — em sistemas Debian, `apt install postgresql-client` resolve)
+* Variável de ambiente`POSTGRES_URI` com credenciais de acesso a um banco de dados PostgreSQL (como no exemplo `.env.sample`)
+
+Baixe as dependências e compile a aplicação para um diretório incluído no `PATH`, por exemplo:
+
+```console
+$ go get
+$ go build -o /usr/local/bin minha-receita
+```
+
+### Requisitos e instalação com Docker
+
+* [Docker](https://www.docker.com/)
+* [Docker Compose](https://docs.docker.com/compose/install/)
+
+Gere as imagens dos containers com:
+
+```console
+$ docker-compose build
+```
+
+## Configurações
+
+Todas as configurações são passadas via variáveis de ambiente e estão documentadas no `--help` da aplicação.
+
+### Exemplo
+
+Sem Docker:
+
+```console
+$ minha-receita --help
+$ minha-receita api --help
+```
+
+Com Docker:
+
+```console
+$ docker-compose run --rm minha-receita --help
+$ docker-compose run --rm minha-receita api --help
+```
diff --git a/docs/minha-receita.svg b/docs/minha-receita.svg
new file mode 100644
index 00000000..b3810ab5
--- /dev/null
+++ b/docs/minha-receita.svg
@@ -0,0 +1,37 @@
+
+
diff --git a/docs/servidor.md b/docs/servidor.md
new file mode 100644
index 00000000..f86c1587
--- /dev/null
+++ b/docs/servidor.md
@@ -0,0 +1,71 @@
+# Servidor
+
+## Download dos dados
+
+O comando `download` faz o download dos arquivos necessários para alimentar o banco de dados. Na sequência, o comando `parse` transforma os arquivos para o formato CSV. Ambos aceitam o argumento `--directory` (ou `-d`) com um diretório onde encontrar os dados (o padrão é `data/`).
+
+Por padrão o comando `download` baixa dados do servidor da Receita Federal, que é lento e instável, então, como alternativa, podemos utilizar o _mirror_ do [Brasil.IO](https://brasil.io) com a opção `--mirror`.
+
+### Exemplos de uso
+
+Sem Docker:
+
+```console
+$ minha-receita download --mirror
+$ minha-receita parse
+```
+
+Com Docker:
+
+```console
+$ docker-compose run --rm minha-receita download --directory /mnt/data/
+$ docker-compose run --rm minha-receita parse --directory /mnt/data/
+```
+
+## Carregamento do banco de dados
+
+Primeiro é necessário criar as tabelas no banco de dados, para isso utlize o comando `create`.
+
+Caso seja necessário limpar o banco de dados para começar um novo carregamento de dados, é possível excluir as tabelas com comando `drop`.
+
+Para importar os dados, utilize o comando `import` — esse comando pode demorar horas, depdendendo do equipamento. Esse comando também aceita a opção `--directory` ou `-d` para especificar um local diferente do padrão onde encontrar os arquivos.
+
+### Questões de privacidade
+
+Assim como o [`socios-brasil`](https://github.com/turicas/socios-brasil#privacidade) removemos alguns dados para evitar exposição de dados sensíveis de pessoas físicas, bem como SPAM. Ao contrário do `socios-brasil`, não temos uma opção para desativar essa camada de provacidade (mas PRs são bem-vindos).
+
+### Exemplos de uso
+
+Sem Docker:
+
+```console
+$ minha-receita drop # caso necessário
+$ minha-receita create
+$ minha-receita import
+```
+
+Com Docker:
+
+```console
+$ docker-compose run --rm minha-receita drop # caso necessário
+$ docker-compose run --rm minha-receita create
+$ docker-compose run --rm minha-receita import -d /mnt/data/
+```
+
+## Iniciando a API web
+
+A API web é uma aplicação super simples que, por padrão, ficará disponível em [`localhost:8000`](http://localhost:8000).
+
+### Exemplos de uso
+
+Sem Docker:
+
+```console
+$ minha-receita api
+```
+
+Com Docker:
+
+```console
+$ docker-compose up
+```
diff --git a/mkdocs.yml b/mkdocs.yml
new file mode 100644
index 00000000..49ec83c4
--- /dev/null
+++ b/mkdocs.yml
@@ -0,0 +1,22 @@
+site_name: Minha Receita
+repo_url: https://github.com/cuducos/minha-receita
+edit_uri: edit/main/docs/
+theme:
+ language: en
+ name: material
+ logo: favicon.svg
+ favicon: favicon.svg
+ palette:
+ primary: deep purple
+ accent: purple
+ features:
+ - navigation.instant
+ - toc.integrate
+ icon:
+ repo: fontawesome/brands/github
+plugins:
+ - search
+ - minify:
+ minify_html: true
+ htmlmin_opts:
+ remove_comments: true