Skip to content

Commit

Permalink
Merge pull request #132 from fga-eps-mds/develop
Browse files Browse the repository at this point in the history
Preparação R1
  • Loading branch information
viniciusoliveira96 authored Oct 4, 2018
2 parents 359a031 + 99b92ec commit 03fcb6f
Show file tree
Hide file tree
Showing 111 changed files with 5,785 additions and 66 deletions.
11 changes: 9 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
.DS_Store
_Store

node_modules

lib/core/metadata.js
lib/core/MetadataBlog.js

src/comex_stat/assets/migrations/*
docs/website/translated_docs
docs/website/build/
docs/website/yarn.lock
docs/website/node_modules
docs/website/i18n/*
**/__pycache__/
db.sqlite3

src/comex_stat/static/**

*.pyc
__pycache__
57 changes: 48 additions & 9 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,53 @@
# .travis.yml
sudo: required
language: node_js
node_js:
- '8'
branches:
only:
- master
- '8'
services:
- docker

env:
- DOCKER_COMPOSE_VERSION=1.21.0

language: node_js
before_install:
- sudo rm /usr/local/bin/docker-compose
- curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname
-s`-`uname -m` > docker-compose
- chmod +x docker-compose
- sudo mv docker-compose /usr/local/bin

cache:
yarn: true

script:
- git config --global user.name "${GH_NAME}"
- git config --global user.email "${GH_EMAIL}"
- echo "machine github.com login ${GH_NAME} password ${GH_TOKEN}" > ~/.netrc
- cd docs/website && yarn install && GIT_USER="${GH_NAME}" yarn run publish-gh-pages
- docker-compose up -d
- docker-compose exec web flake8 --exclude='ipython_log.py*,migrations,templates,
settings.py, manage.py'
- sudo docker-compose exec web coverage run src/manage.py test
- git config --global user.name "${GH_NAME}"
- git config --global user.email "${GH_EMAIL}"
- echo "machine github.com login ${GH_NAME} password ${GH_TOKEN}" > ~/.netrc
- cd docs/website && yarn install && GIT_USER="${GH_NAME}" GIT_BRANCH=master yarn run publish-gh-pages

before_script:
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
- chmod +x ./cc-test-reporter
- ./cc-test-reporter before-build

# deploy:
# - provider: heroku
# app: api-comexstat
# on:
# master
# api_key:
# secure: gndgDVvj2SlJ+vX7BIcIoauDb4KX2pwucuokyQSjrM7L6X4UjNNJYXfzwetRpWhN4ha8AJtHlDiIPKTgB0yf8UcWZPjGjKQ3JexGm3tCLWQd/uTpFswksr/yXEkmwLwvZVA2ukM6JQ0/MRGGHsQXD5FInxOvdLFboNuslxpnCrbHG5YKRVxUKWOD6rkd7AP1A9n8z7iAYAAMyM0wowypLvhoshAeSTcK95b64oZ3TFbfoiuQ1NMwmflgfDAb5F408trYHdoc9gTkEa2tsddIYMrtIYRl1rX3Do0fpWOJ9r6H/5uZlff9dF1VIv2bRWzAwywz1ch2p20sKXfL1WZt2rb+s91jeUjKv8kDYBUxYjvyi7I5T3j06EsJyKnAfDAezKZ4yhsL+Jo4Et4drEvHB5K7cqjEVLbKN1hl2TKO48ydTkCS+uQ4TvYoYRafWLBFiWALOViDZMxCsChwjo82laX4VA0MGUB9/wp1PhSqHsohz6fuV9wt8FZ16QmyuOhBC3PwN/nmBr3cOMPl6EBVNGbMW0QLi2hajrsNCBeUhbTNh/tbqNxsw7zIKmz9v5OxszeF/AJdLn6EVnFhTD4PMP36XyfYK5jvfkr38oziC41qhTMaw1VMxqJcpEodXTgkun4o1GKgbtmPBhZZAc//X3MjomPv67784JqK6D/SSdo=
#
# - provider: heroku
# app: api-comexstat-staging
# on:
# develop
# api_key:
# secure: gndgDVvj2SlJ+vX7BIcIoauDb4KX2pwucuokyQSjrM7L6X4UjNNJYXfzwetRpWhN4ha8AJtHlDiIPKTgB0yf8UcWZPjGjKQ3JexGm3tCLWQd/uTpFswksr/yXEkmwLwvZVA2ukM6JQ0/MRGGHsQXD5FInxOvdLFboNuslxpnCrbHG5YKRVxUKWOD6rkd7AP1A9n8z7iAYAAMyM0wowypLvhoshAeSTcK95b64oZ3TFbfoiuQ1NMwmflgfDAb5F408trYHdoc9gTkEa2tsddIYMrtIYRl1rX3Do0fpWOJ9r6H/5uZlff9dF1VIv2bRWzAwywz1ch2p20sKXfL1WZt2rb+s91jeUjKv8kDYBUxYjvyi7I5T3j06EsJyKnAfDAezKZ4yhsL+Jo4Et4drEvHB5K7cqjEVLbKN1hl2TKO48ydTkCS+uQ4TvYoYRafWLBFiWALOViDZMxCsChwjo82laX4VA0MGUB9/wp1PhSqHsohz6fuV9wt8FZ16QmyuOhBC3PwN/nmBr3cOMPl6EBVNGbMW0QLi2hajrsNCBeUhbTNh/tbqNxsw7zIKmz9v5OxszeF/AJdLn6EVnFhTD4PMP36XyfYK5jvfkr38oziC41qhTMaw1VMxqJcpEodXTgkun4o1GKgbtmPBhZZAc//X3MjomPv67784JqK6D/SSdo=

after_script:
- ./cc-test-reporter after-build -t lcov --debug --exit-code $TRAVIS_TEST_RESULT
11 changes: 11 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
FROM python:3.5
ENV PYTHONUNBUFFERED 1

RUN mkdir /code
WORKDIR /code

ADD . /code/
RUN pip install -r requirements.txt && \
chmod +x boot.sh

CMD ["./boot.sh"]
21 changes: 21 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
The MIT License

Copyright (c) 2018 ComexStat MDIC.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
1 change: 1 addition & 0 deletions Procfile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
web: python src/manage.py runserver 0.0.0.0:$PORT
7 changes: 7 additions & 0 deletions boot.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/sh

pip install -r requirements.txt
cd src
python manage.py makemigrations
python manage.py migrate
python manage.py runserver 0.0.0.0:8000
19 changes: 19 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@

version: '3.5'

services:

db:
image: postgres
ports:
- 5000:5432

web:
build: .
command: /bin/sh ./boot.sh
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
2 changes: 1 addition & 1 deletion docs/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# Issue Relacionada

#
fixes #

# Tipo de Mudanças

Expand Down
36 changes: 35 additions & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,37 @@

# Comex Stat

Dados abertos sobre o comércio exterior de bens e serviços no Brasil.
[![Build Status](https://travis-ci.org/fga-eps-mds/2018.2-ComexStat.svg?branch=develop)](https://travis-ci.org/fga-eps-mds/2018.2-ComexStat)
[![Maintainability](https://api.codeclimate.com/v1/badges/f8c2e994cae38bdd6ce7/maintainability)](https://codeclimate.com/github/fga-eps-mds/2018.2-ComexStat/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/f8c2e994cae38bdd6ce7/test_coverage)](https://codeclimate.com/github/fga-eps-mds/2018.2-ComexStat/test_coverage)

## Sobre

O ComexStat, vem com o objetivo de tornar mais fácil o acesso aos dados relacionados ao comércio exterior de bens, e posteriormente serviços no Brasil, proporcionando aos usuários a possibilidade de trabalhar com as informações desejadas de forma mais adequada as suas necessidades.

## Documentação

Para entender um pouco mais sobre o produto, acesse nossa [documentação](https://fga-eps-mds.github.io/2018.2-ComexStat).

## Instalação

Nesta seção está descrito cada passo necessário para a configuração e utilização da aplicação.

#### Pré-requisitos
* [Git](https://git-scm.com/)
* [Docker](https://www.docker.com/get-docker)
* [Docker-composer](https://docs.docker.com/compose/install/#install-compose)

#### Configuração

Clone o repositório no diretório desejado

git clone https://github.com/fga-eps-mds/2018.2-ComexStat.git

Utilize o seguinte comando para subir a aplicação

docker-compose up

A aplicação pode ser acessada através do localhost:

localhost:8000
115 changes: 115 additions & 0 deletions docs/docs/Definição-da-Arquitetura.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
---
id: definicaoArquitetura
title: Definição Arquitetural
---

## 1. Introdução

A arquitetura que vamos utilizar será a de microsserviços. Os microsserviços são um
estilo de arquitetura de aplicativo em que programas autônomos independentes, com uma
única finalidade, podem se comunicar entre si por meio de uma rede. Normalmente, esses
microsserviços podem ser implantados independentemente porque eles têm uma forte separação
de responsabilidades por meio de uma especificação bem definida com compatibilidade reversível
significativa para evitar a quebra súbita de dependência.

Com base na arquitetura microserviços, foram definidas as seguintes tecnologias.

## 2. Tecnologias que Serão Utilizadas

Todas as tecnologias adotadas foram escolhidas em conjunto com o cliente, por meio
de reuniões que fazermos semanalmente.

### 2.1. Django

O Django é um framework web na linguagem Python, que permite rápido desenvolvimento e
design claro e objetivo de aplicações web..

O Django será utilizado no back-end do projeto por apresentar uma adequeda estrutura base
para projetos, por ser a maior comunidade e ter maior aceitação entre os frameworks
web Python, além de acarretar em um boa curva de aprendizado para a equipe.

### 2.2. Angular

Angular é um framework para construção da interfaces de usuário usando
HTML, CSS e JavaScript, através de suas bibliotecas facilita o desenvolvimento
de aplicações web.

O Angular será aplicado como o front-end do projeto por ser um framework completo e por
possuir diversos componentes disponíveis para as várias necessidades da aplicação.


### 2.3. GraphQL

GraphQL é uma linguagem de consulta para APIs, o GraphQL fornece uma descrição
completa e compreensível dos dados contidos na API.

Características principais:
* Permite que o cliente especifique exatamente quais dados deseja obter.
* Facilita a agregação de dados de várias fontes.
* Usa um sistema de tipos para descrever dados.

GraphQL foi escolhido por oferecer características arquiteturais que vão de
acordo com a aplicação.

### 2.4. PostgreSQL

O PostgreSQL é um sistema de gerenciamento de banco de dados do tipo objeto-relacional
(ORDBMS) com ênfase em extensibilidade e em padrões de conformidade.

Como um servidor de banco de dados, sua principal função é armazenar dados de forma
segura, apoiando as melhores práticas, permitindo a recuperação dos dados a pedido de
outras aplicações de software.

O PostgreSQL sará usado por ter muitos recursos destinados a ajudar os desenvolvedores
a gerenciar e a proteger a integridade dos dados.

## 3. Relacionamento das Tecnologias

### 3.1. GraphQL com Django

O ComexStat contará com a implementação do GraphQL e Python, para essa integração
onde será utilizado a biblioteca Graphene. Será utilizado basicamente o query
do GraphQL, para fazer buscas de informações do banco de dados.

### 3.2. GraphQL com Angular

O Apollo Client possui uma implementação em Angular para GraphQL. O Apollo Client foi
projetado desde o início para facilitar a construção de componentes de interface
do usuário que buscam dados com o GraphQL.

O Apollo Client é flexível para a plataforma Angular, onde foi cuidadosamente
desenvolvida para funcionar bem com todas as ferramentas usadas pelos
desenvolvedores Angular.


### 3.3. Diagrama

![Diagrama_Representacao_Arquitetural](https://fga-eps-mds.github.io/2018.2-ComexStat/img/Representacao_Arquitetural.png)

## 4. Arquitetura do Software

Foi decidido junto ao cliente a posibilidade de uma arquitetura monolítica, visto
que o escopo do projeto está bem acoplado e que vamos utilizar bibliotecas externas
para as funcionalidades da aplicação.

Uma arquitetura monolítica é o modelo unificado tradicional para o design de um
programa de software.

O software monolítico é projetado para ser independente, os componentes do programa
são interconectados e interdependentes, em vez de fracamente acoplados, como é o
caso dos programas de software modulares. Em uma arquitetura bem acoplada, cada
componente e seus componentes associados devem estar presentes para que o código
seja executado ou compilado.

### 4.1. Diagrama

![Diagrama-Monolitico](https://fga-eps-mds.github.io/2018.2-ComexStat/img/Diagrama-Monolitico.png)

## 5. Referências

> * GraphQL. Disponível em: <https://graphql.org/>. Acessado em 13/09/2018.
> * GREIF, Sacha. Disponível em: <https://medium.freecodecamp.org/so-whats-this-graphql-thing-i-keep-hearing-about-baf4d36c20cf>. Acessado em 13/09/2018.
> * AFONSO, Alexandre. Disponível em: <https://blog.algaworks.com/o-que-e-angular/>. Acessado em 13/09/2018.
> * Edson. Disponível em: <https://www.devmedia.com.br/postgresql-tutorial/33025>. Acessado em 13/09/2018.
> * PostgreSQL. Disponível em: <https://www.postgresql.org/about/>. Acessado em 13/09/2018.
> * SCARPA, João Mateus. Disponível em: <https://blog.designa.com.br/padr%C3%B5es-de-arquitetura-de-software-voc%C3%AA-sabe-do-que-estamos-falando-4858967c4054>. Acessado em 19/09/2018.
Loading

0 comments on commit 03fcb6f

Please sign in to comment.