diff --git a/source/guide.rst b/source/guide.rst
new file mode 100644
index 0000000000000000000000000000000000000000..52a33a3eaf4fee2f12c450bf856a1609176286a0
--- /dev/null
+++ b/source/guide.rst
@@ -0,0 +1,14 @@
+
+# with overline, for parts
+
+* with overline, for chapters
+
+= for sections
+
+- for subsections
+
+^ for subsubsections
+
+" for paragraphs
+
+
diff --git a/source/index.rst b/source/index.rst
index 569e9cbda6df505f3c1af06fcb20e80ab8bad344..6c5a180e7d4264a043895e3c61ae130945d82e53 100644
--- a/source/index.rst
+++ b/source/index.rst
@@ -3,27 +3,32 @@
    You can adapt this file completely to your liking, but it should at least
    contain the root `toctree` directive.
 
+####################
 C3HPC - Cluster C3SL
-====================
+####################
+
 O C3SL possui um computador de alto desempenho (HPC), também conhecido como um cluster, para utilização em computação científica e de alta performance. O cluster foi adquirido com recursos provenientes de projetos de P&D do C3SL e é utilizado por diversos docentes e alunos do grupo.
 
 Acesso ao cluster:
-------------------
+******************
 Para utilizar o cluster, é necessário requisitar uma conta, vinculada a um professor C3SL, responsável pelo seu uso. A requisição pode ser feita pelo email `c3hpc@c3sl.ufpr.br`.
 
 .. toctree::
-   :maxdepth: 2
+   :maxdepth: 3
    :caption: Documentação:
    :glob:
 
-   pages/*
+   pages/basic.rst
+   pages/architecture.rst
+   pages/application.rst
+   pages/advanced.rst
 
 Descrição do cluster:
----------------------
+=====================
 .. include:: components/nodes.rst
 
 
 Descrição das filas:
---------------------
+====================
 .. include:: components/partitions.rst
 
diff --git a/source/pages/acesso.rst b/source/pages/acesso.rst
index 7b333f7af60f126101e3f8937868cd5e6c250fc3..d8b8ce66bad207ff6501a40bbce417b1123f59b8 100644
--- a/source/pages/acesso.rst
+++ b/source/pages/acesso.rst
@@ -1,28 +1,29 @@
-Acesso
-######
+Acesso ao cluster
+*****************
+
 Esta página destina a mostrar meios de interagir com o cluster do C3SL. Acessar remotamente o cluster e copiar arquivos do computador pessoal para o cluster e depois copiar arquivos do cluster para computador pessoal.
 
 .. contents:: Formas de acesso
    :depth: 4
 
 Acesso via ssh
-**************
+==============
 | A forma de acessar o cluster é por meio do protocolo de acesso ssh (secure shell).
 | O nome do cluster para acesso é: c3hpc.c3sl.ufpr.br
 
 Acesso ssh Linux
-================
+----------------
 A principal forma de utilizar o *ssh* no Linux é por meio do terminal.
 
 *ssh* terminal Linux
---------------------
+^^^^^^^^^^^^^^^^^^^^
 | Abra o terminal e digite o comando: ``ssh <login>@c3hpc.c3sl.ufpr.br``. 
 | Onde:
 
 - <login> é o seu usuário do cluster
 
 Exemplo de acesso por terminal Linux
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+""""""""""""""""""""""""""""""""""""
 
 .. code-block:: console
 
@@ -37,20 +38,20 @@ Exemplo de acesso por terminal Linux
   ➜  ~
 
 Acesso ssh windows
-==================
+------------------
 TODO
 
 Termius
--------
+^^^^^^^
 TODO
 
 
 Copiar de arquivos para o cluster
-*********************************
+=================================
 Para copiar arquivos para o cluster é possível utilizar os comandos: *scp* ou *rsync*
 
 Comando *scp*
-=============
+-------------
 | O comando scp (secure copy) funciona da mesma maneira que o comando *cp* só que precisa passar o servidor para onde está copiando.
 
 | Para copiar um arquivo local para o cluster utilize o comando:
@@ -65,7 +66,7 @@ Comando *scp*
 | ``scp -r <diretório> <login>@c3hpc.c3sl.ufpr.br:~/<destino>``
 
 Exemplo de cópia com *scp*
---------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^
 O exemplo a seguir mostra como copiar um arquivo ou diretório com scp para sua conta no cluster:
 
 .. code-block:: console
@@ -86,7 +87,7 @@ Para copiar do cluster para sua máquina local é só inverter a ordem dos parâ
   [odair@zaros ~]$
 
 Comando *rsync*
-===============
+---------------
 | O comando rsync é mais robusto que o scp, e segue a mesma lógica de uso.
 | Para copiar um arquivo local para o cluster use:
 | ``rsync -avhHP <arquivo> <login>@c3hpc.c3sl.ufpr.br:~/<destino>``
@@ -108,7 +109,7 @@ Os parâmetros utilizados no comando do ``rsync`` significam:
 - ``-P`` Mostrar o progresso durante a cópia
 
 Exemplo de cópia com comando *rsync*
-------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 Copiando diretório local para o cluster:
 
diff --git a/source/pages/advanced.rst b/source/pages/advanced.rst
new file mode 100644
index 0000000000000000000000000000000000000000..5b116a61c6028e3443847bb2a73af46bccb1169b
--- /dev/null
+++ b/source/pages/advanced.rst
@@ -0,0 +1,2 @@
+Mecanismos internos
+###################
diff --git a/source/pages/application.rst b/source/pages/application.rst
new file mode 100644
index 0000000000000000000000000000000000000000..61dc9c6fc0022ce7e622802ad97165900d689c5c
--- /dev/null
+++ b/source/pages/application.rst
@@ -0,0 +1,9 @@
+##########
+Aplicações
+##########
+
+.. toctree::
+  :maxdepth: 1
+  :caption: Aplicações
+
+  ml.rst
diff --git a/source/pages/architecture.rst b/source/pages/architecture.rst
new file mode 100644
index 0000000000000000000000000000000000000000..727640ddaf2a59a93c42af118cf43374b08e6ba6
--- /dev/null
+++ b/source/pages/architecture.rst
@@ -0,0 +1,3 @@
+Arquitetura do cluster
+######################
+
diff --git a/source/pages/basic.rst b/source/pages/basic.rst
new file mode 100644
index 0000000000000000000000000000000000000000..40dfe4cea8c0f249da07baa3f8dde9ff484fee0c
--- /dev/null
+++ b/source/pages/basic.rst
@@ -0,0 +1,11 @@
+################
+Primeiros passos
+################
+
+.. toctree::
+  :maxdepth: 1
+  :caption: Primeiros passos
+
+  acesso.rst
+  overview.rst
+  quickstart.rst
diff --git a/source/pages/keras.rst b/source/pages/keras.rst
new file mode 100644
index 0000000000000000000000000000000000000000..5ba724e77363b5b7fe9a90c6d7b0515c82d1fb0f
--- /dev/null
+++ b/source/pages/keras.rst
@@ -0,0 +1,205 @@
+===============
+Framework Keras
+===============
+
+Estudo de caso de como executar aplicações que utilizam framework **keras** no cluster C3HPC.
+
+Keras é um framework de *machine learning* escrito emcima do tensorflow.
+
+.. contents::
+   :depth: 1
+   :local:
+
+Preparando ambiente
+-------------------
+
+O primeiro passo consiste em preparar um ambiente para executar experimentos que utilize o framework
+keras. Os seguintes pacotes são requeridos que sejam instalado pelo usuário:
+
+  * tensorflow-gpu
+  * keras
+
+| Crie um diretório para o seu experimento:
+.. code-block:: shell
+   :name: example-create-direcotry-env
+   :caption: Crie um diretório para o experimento.
+
+    mkdir -p <directory> && cd <directory>
+
+Onde `<directory>` corresponde ao nome do diretório do seu experimento.
+
+Exemplo:
+
+.. code-block:: shell
+   :caption: Exemplo de criar um diretório para o experimento
+   :name: example-create-direcotry-env
+
+    [odair@c3hpc:~ ]$ mkdir -p deepdream && cd deepdream
+    [odair@c3hpc:~/deepdream ]$
+
+
+Inicie um ambiente python para o experimento e instale os pacotes:
+  * tensorflow-gpu
+  * keras
+
+Os seguintes gerenciadores de ambiente estão disponiveis:
+
+.. contents::
+  :depth: 1
+  :local:
+
+Gerenciador de ambiente Pipenv
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+O gerenciador de ambiente `pipenv` é preferível para gerenciar ambientes python. 
+
+Criar o ambiente
+""""""""""""""""
+Para criar ambiente python com `pipenv` use o comando `pipenv shell` que vai criar o ambiente e
+ativar ele.
+
+**Exemplo:**
+
+.. code-block:: shell
+   :caption: Criando e ativando o gerenciador de ambiente pipenv
+   :name: pipenv-create-env
+
+    
+    [odair@c3hpc:~/deepdream ]$ pipenv shell
+    Creating a virtualenv for this project...
+    Pipfile: /home/odair/deepdream/Pipfile
+    Using /usr/bin/python3 (3.9.2) to create virtualenv...
+    ⠴ Creating virtual environment...created virtual environment CPython3.9.2.final.0-64 in 352ms
+      creator Venv(dest=/home/odair/.local/share/virtualenvs/deepdream-djfpP2vq, clear=False, no_vcs_ignore=False, global=False, describe=CPython3Posix)
+      seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/odair/.local/share/virtualenv)
+        added seed packages: pip==20.3.4, pkg_resources==0.0.0, setuptools==44.1.1, wheel==0.34.2
+      activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
+
+    ✔ Successfully created virtual environment!
+    Virtualenv location: /home/odair/.local/share/virtualenvs/deepdream-djfpP2vq
+    Creating a Pipfile for this project...
+    Launching subshell in virtual environment...
+     . /home/odair/.local/share/virtualenvs/deepdream-djfpP2vq/bin/activate
+    [odair@c3hpc:~/deepdream ]$  . /home/odair/.local/share/virtualenvs/deepdream-djfpP2vq/bin/activate
+    deepdream[odair@c3hpc:~/deepdream ]$
+
+Quando executa `pipenv shell` ele cria o ambiente e inicia ele, veja que no exemplo
+`pipenv-create-env`_ ele cria o ambiente com a versão do python que está instalado no nodo de login,
+c3hpc, para utilizar outra versão é necessário carregar a versão do python que deseja e iniciar o
+ambiente com `pipenv --python <versao>`
+
+**Exemplo:**
+
+.. code-block:: shell
+   :caption: Criando e ativando ambiente python com versão especifica
+   :name: pipenv-create-env-specific
+
+    [odair@c3hpc:~/deepdream ]$ module load python/3.6.8
+    [odair@c3hpc:~/deepdream ]$ pipenv shell --python 3.6.8
+    Creating a virtualenv for this project...
+    Pipfile: /home/odair/deepdream/Pipfile
+    Using /cluster/interpreters/python/3.6.8/bin/python3.6m (3.6.8) to create virtualenv...
+    ⠧ Creating virtual environment...created virtual environment CPython3.6.8.final.0-64 in 206ms
+      creator Venv(dest=/home/odair/.local/share/virtualenvs/deepdream-djfpP2vq, clear=False, no_vcs_ignore=False, global=False, describe=CPython3Posix)
+      seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/odair/.local/share/virtualenv)
+        added seed packages: pip==20.3.4, pkg_resources==0.0.0, setuptools==44.1.1, wheel==0.34.2
+      activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
+
+    ✔ Successfully created virtual environment!
+    Virtualenv location: /home/odair/.local/share/virtualenvs/deepdream-djfpP2vq
+    Creating a Pipfile for this project...
+    Launching subshell in virtual environment...
+     . /home/odair/.local/share/virtualenvs/deepdream-djfpP2vq/bin/activate
+    [odair@c3hpc:~/deepdream ]$  . /home/odair/.local/share/virtualenvs/deepdream-djfpP2vq/bin/activate
+    deepdream [odair@c3hpc:~/deepdream ]$
+
+Iniciar o ambiente
+""""""""""""""""""
+Para iniciar um ambiente python com pipenv utilize o comando `pipenv shell`.
+
+**Exemplo:**
+
+.. code-block:: shell
+   :caption: iniciando um ambiente python com pipenv
+   :name: pipenv-start-env
+
+  [odair@c3hpc:~/deepdream ]$ pipenv shell
+  Launching subshell in virtual environment...
+   . /home/odair/.local/share/virtualenvs/deepdream-djfpP2vq/bin/activate
+   [odair@c3hpc:~/deepdream ]$  . /home/odair/.local/share/virtualenvs/deepdream-djfpP2vq/bin/activate
+  deepdream [odair@c3hpc:~/deepdream ]$
+
+É possível executar código python sem que esteja dentro do ambiente, com o comando `pipenv run
+<file>` o pipenv vai iniciar o ambiente, executar código contido em `file` e sair do ambiente.
+
+
+Instalar pacotes
+""""""""""""""""
+Para instalar pacotes com `pipenv` utilize o comando `pipenv install <pacotes>`, onde `<pacotes>`
+é a listas de pacotes python a ser instalado no ambiente. No caso de estudo é necessário instalar
+dois pacotes, então segue o exemplo:
+
+**Exemplo:**
+
+.. code-block:: shell
+   :caption: instalação de pacote com pipenv
+   :name: pipenv-install-package
+
+    deepdream [odair@c3hpc:~/deepdream ]$ pipenv install keras tensorflow-gpu
+    Installing keras...
+    Adding keras to Pipfile's [packages]...
+    ✔ Installation Succeeded
+    Installing tensorflow-gpu...
+    Adding tensorflow-gpu to Pipfile's [packages]...
+    ✔ Installation Succeeded
+    Pipfile.lock not found, creating...
+    Locking [packages] dependencies...
+    Building requirements...
+    Resolving dependencies...
+    ✔ Success!
+    Locking [dev-packages] dependencies...
+    Updated Pipfile.lock (c53080)!
+    Installing dependencies from Pipfile.lock (c53080)...
+    deepdream [odair@c3hpc:~/deepdream ]$
+
+Desativar o ambiente
+""""""""""""""""""""
+Para sair do ambiente python existem as seguintes formas:
+
+ * `ctrl-d`
+ * `exit`
+
+
+.. note::
+
+  Ao executar um experimento com `sbatch` é necessário que o ambiente esteja ativado ou seja ativado
+  dentro do arquivo do `sbatch`
+
+Gerenciador de ambiente Anaconda3
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Gerenciador de ambiente Virtual env
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Estudo de caso: redes geradoras **DeepDream**
+---------------------------------------------
+
+Para representar o framework `keras` foi escolhido um exemplo contido na documentação oficial do
+keras: `DeepDream`. **DeepDream** é uma técnica de imagem feito com redes neurais geradoras.
+
+.. note::
+
+  O código fonte e como funciona não é relevante para nosso objetivo, que é demostrar como executar
+  experimentos que utilizam framework keras no cluster. Então faça o download do código fonte e
+  daremos uma rapida olhada
+
+Execução em CPU
+---------------
+
+Execução em GPU
+---------------
+
+Analise de desempenho
+---------------------
+
+Dicas e recomendações
+---------------------
diff --git a/source/pages/ml.rst b/source/pages/ml.rst
new file mode 100644
index 0000000000000000000000000000000000000000..d6675f179fba816d313f83451a96907f4b32104c
--- /dev/null
+++ b/source/pages/ml.rst
@@ -0,0 +1,9 @@
+****************
+Machine learning
+****************
+
+.. toctree::
+  :maxdepth: 1
+  :caption: Primeiros passos
+
+  keras.rst
diff --git a/source/pages/overview.rst b/source/pages/overview.rst
index 9629a01636a55ecc1fec82d85a0e0752286e8d03..71a2fc6be7eb2350e1e2d597602a9287f3e714c0 100644
--- a/source/pages/overview.rst
+++ b/source/pages/overview.rst
@@ -1,11 +1,12 @@
 Visão geral do cluster
-######################
+**********************
+
 A visão geral do cluster pode ser entendido pelos conceitos básicos de como funciona cada componente. Essa página se destina apenas introduzir os conceitos, que serão aprofundados em outras páginas.
 
 .. contents:: :depth: 4
 
 Fluxo de trabalho do HPC
-************************
+========================
 O primeiro passo é entender como o cluster e executar programas em computadores de alto desempenho funciona.
 
 
@@ -21,7 +22,7 @@ O uso de HPC para realizar processamento paralelo e de alto desempenho consiste
 #. A execução do seu experimento será feito em algum nodo de processamento *computing node*, o nodo escolhido será conforme as especificações do seu experimento. Os nodos de processamentos são representados pelo quadrado vermelhos.
 
 Conceitos fundamentais
-**********************
+======================
 
 
 .. contents:: Os principais conceitos que precisam serem entendidos são:  
@@ -31,7 +32,7 @@ Conceitos fundamentais
 
 
 *Jobs*
-======
+------
 
 Quando submete um programa para executar em um computador de processamento chamamos de jobs. Um jobs pode ter os seguintes estados:
 
@@ -39,12 +40,12 @@ Quando submete um programa para executar em um computador de processamento chama
  * RUNNING: está sendo executado
 
 Partições
-=========
+---------
 | Partições *partitions* podem serem vistas como filas de trabalho do cluster. Um cluster pode ter várias partições, normalmente as partições representam uma divisão de recursos físicos ou lógicos. Por exemplo, uma partição contém somente servidoras com placas de vídeos.
 | Para visualizar as partições utilize o comando ``sinfo``.
 
 Exemplo de ``sinfo``: Visualizando partições:
----------------------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 .. code-block:: console
 
@@ -61,12 +62,12 @@ Exemplo de ``sinfo``: Visualizando partições:
     odair@c3hpc:~$
 
 Filas
-=====
+-----
 | As filas mostram os trabalhos que estão em execução, aguardando recursos serem liberados para executar e trabalhos com falhas. O comando para visualizar as filas é:
 | ``squeue``
 
 Exemplo de ``squeue``
----------------------
+^^^^^^^^^^^^^^^^^^^^^
 .. code-block:: console
 
  odair@c3hpc:~$ squeue -l
@@ -93,14 +94,14 @@ No exemplo mostra trabalhos que estão sendo executados e os que não estão, al
 
 
 Módulos
-=======
+-------
 | O cluster possui diversos softwares com diversas versões, para lidar com vários softwares com muitas versões se utiliza um mecanismo de módulo, onde o usuário carrega um software na versão X apenas para a sessão dele.
 | Utilize o comando `module avail` para mostrar todos os módulos disponíveis. A saída será algo do gênero:
 
 Em alguns casos algumas bibliotecas só funcionam em versões especifica do ``python`` ou do ``cuda``. Para o exemplo veremos qual a versão padrão do python3 e mudara para versão 3.8.4.
 
 Mostrando módulos
------------------
+^^^^^^^^^^^^^^^^^
 | Para mostrar todos os módulos disponíveis no cluster utilize o comando:
 | ``module avail``
 | A saída deve ser algo semelhante ao exemplo abaixo:
@@ -124,13 +125,13 @@ Mostrando módulos
   odair@c3hpc:~$
 
 Carregando módulos
-------------------
+^^^^^^^^^^^^^^^^^^
 | Para carregar um módulo utilize o comando:
 | ``module load <modulo>``
 | Onde: ``<module>`` é o nome do módulo a ser carregado.
 
 Exemplo carregando *python3* versão 3.8.14
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+""""""""""""""""""""""""""""""""""""""""""
 Para demostrar como funciona verificaremos a versão padrão do ``python3`` e carregar a versão ``3.8.14``
 
 .. code-block:: console
@@ -151,11 +152,11 @@ Para demostrar como funciona verificaremos a versão padrão do ``python3`` e ca
 | A versão do ``python3`` muda. Módulos são uteis principalmente quando se deseja utilizar diferentes versões de cuda e python. 
  
 Descarregando módulo
---------------------
+^^^^^^^^^^^^^^^^^^^^
 | Para fazer o *unload* de um determinado módulo execute o comando:
 | ``module unload <modulo>`` Onde ``modulo`` é o nome do módulo.
 
 Requisitando módulos e softwares
---------------------------------
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 Para requisitar módulos, novas versões de softwares ou até mesmo a instalação de novas aplicações envie e-mail para c3hpc@c3sl.ufpr.br.
 
diff --git a/source/pages/quickstart.rst b/source/pages/quickstart.rst
index 4344a3d7f968b41d94c97252ad610c6679392555..f64fc3ae7e28b594d6639334fb4b5303d53ac4d6 100644
--- a/source/pages/quickstart.rst
+++ b/source/pages/quickstart.rst
@@ -1,11 +1,13 @@
 Guia rápido de submissão
 ************************
+
 A submissão de *jobs* pode ser realizado por dois comandos do gerenciador do cluster: ``srun`` e ``sbatch``. O comando ``srun`` executa na linha de comando e é bloqueante, enquanto o comando ``sbatch`` executa um arquivo de configuração e não é bloqueante.
 
 .. contents:: :depth: 4
 
 Principais parâmetros de submissão:
 ===================================
+
     * ``-p|--partition nome`` Especifica o nome da partição que o *job* será executado.
     * ``-t|--time tempo`` Especifica um tempo limite para a execução do job. Caso o tempo limite especificado seja maior que o tempo da partição, o job ficará com o estado pendente (PENDING), possivelmente para sempre. Formatos de tempo aceitos: “minutos”, “minutos:segundos”, “horas:minutos:segundos”, “dias-horas”, “dias-horas:minutos” e “dias-horas:minutos:segundos”.
     * ``-c|--cpus-per-task`` Especifica a quantidade de core/threads o seu programa utilizará.