Skip to content
This repository has been archived by the owner on May 28, 2023. It is now read-only.

Commit

Permalink
Merge pull request #66 from OpenDevUFCG/development
Browse files Browse the repository at this point in the history
Reformulação do laguinho
  • Loading branch information
JoseRenan authored Oct 24, 2019
2 parents b1411a7 + 50777e6 commit 33c2c17
Show file tree
Hide file tree
Showing 36 changed files with 490 additions and 3,770 deletions.
11 changes: 0 additions & 11 deletions .babelrc

This file was deleted.

2 changes: 0 additions & 2 deletions .env.example

This file was deleted.

3 changes: 3 additions & 0 deletions .flaskenv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
FLASK_APP=laguinho
FLASK_RUN_PORT=8080
FLASK_ENV=development
32 changes: 32 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
name: Reportar bug
about: Reporte um bug e ajude-nos a melhorar
labels: 'bug'

---

**Descreva o bug**
<!-- Uma descrição clara e concisa do que consiste o bug. -->

**Reprodução do bug**
<!-- Passos para reproduzir o comportamento indesejado:
1. Vá para '...'
2. Clique em '....'
3. Role até '....'
4. Veja o erro -->

**Comportamento desejado**
<!-- Uma descrição clara sobre como deveria ser o comportamento esperado. -->

**Capturas de tela**
<!-- Se aplicável, adicione capturas de tela para ajudar na descrição do problema. -->

**Configuração do ambiente de desenvolvimento em que foi encontrado o bug:**
<!-- Por exemplo:
- SO: [e.g. Mac OS, Linux Mint, Ubuntu]
- Navegador: [e.g. chrome, safari]
- Software: [e.g. insomnia, postman]
- Versão: [e.g. 22] -->

**Contexto adicional**
<!-- Adicione qualquer outro contexto ao problema reportado aqui. -->
21 changes: 21 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
name: Requisição de melhoria
about: Peça uma melhoria para esse projeto
labels: 'enhancement'

---

**Descrição da melhoria:**
<!-- Descreva a melhoria e suas características mais importantes. -->

**Necessidade da melhoria:**
<!-- Descreva o porquê da melhoria ser necessária. -->

**Como ela pode ser implementada:**
<!-- Dê ideias de como a melhoria pode ser implementada no projeto. -->

**Imagens:**
<!-- Se aplicável, adicione uma imagem que ajude no entendimento da melhoria. -->

**Contexto adicional:**
<!-- Adicione qualquer informação adicional que achar necessária. -->
11 changes: 11 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<!-- INSTRUÇÕES: -->

<!-- 1. Seja descritivo no nome de sua PR. -->

<!-- 2. Informe o número da issue a que sua PR se refere (usando #NUMERO_DA_ISSUE). -->

<!-- 3. Nos conte mais sobre sua PR e o que você fez! (: -->

<!-- 4. Garanta que sua contribuição esteja de acordo com as regras descritas nos links abaixo. -->

- [X] Minha contribuição respeita o [código de conduta](../CODE_OF_CONDUCT.md) do repositório.
25 changes: 22 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,23 @@
node_modules/
build/
.DS_Store
.env
yarn-error.log
*.pyc
*.pyo
env/
env*
dist/
build/
*.egg
*.egg-info/
_mailinglist
.tox/
.cache/
.pytest_cache/
.idea/
docs/_build/
.vscode

# Coverage reports
htmlcov/
.coverage
.coverage.*
*,cover
6 changes: 0 additions & 6 deletions .nowignore

This file was deleted.

25 changes: 25 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Changelog
Todas as mudanças desse projeto serão documentadas nesse arquivo.

O formato foi baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.0.0/),
e esse projeto adere a [Semantic Versioning](https://semver.org/lang/pt-BR/spec/v2.0.0.html).

## [Não publicado]

## [2.0.0] - 24/10/2019

### Adicionado

- API agora feita com `Python3`, utilizando `flask` e `pipenv`.
- Endpoint `/datasets` para requisições GET, que vai retornar os datasets cadastrados.
- Endpoint `/datasets` para requisições POST, para publicar um novo dataset.
- Endpoint `/datasets/<nome>` para requisições GET, que vai retornar metadados a respeito de um dataset a partir do seu nome.
- Esse arquivo de changelog para servir de exemplo para lançamentos futuros.

### Modificado

- Foi dado início à [reformulação do laguinho](https://github.com/OpenDevUFCG/laguinho-api/issues/31).

### Removido

- API feita em `node` (versão 1.0.0-legacy).
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,4 @@ determinadas por outros membros da liderança do projeto.
## Atribuição

Este Código de Conduta é adaptado do [Contributor Covenant](https://www.contributor-covenant.org),
versão 1.4, disponível em https://www.contributor-covenant.org/pt-br/version/1/4/code-of-conduct.html
versão 1.4, disponível em https://www.contributor-covenant.org/pt-br/version/1/4/code-of-conduct.html
61 changes: 32 additions & 29 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,48 +1,51 @@
# Como contribuir?
# Contribuindo para o Laguinho

Aqui vai um tutorialzinho sobre como contribuir com o Laguinho API, qualquer dúvida que tiver pode criar issue ou chamar no [gitter](https://gitter.im/OpenDevUFCG/laguinho-api) ;)
Contribuições sempre serão bem vindas, sejam pequenas ou grandes!

## Código de Conduta

Adotamos um [código de conduta](./CODE_OF_CONDUCT.md) que esperamos que todos sigam a participar do projeto. Leia para entender que ações toleramos e quais não antes de abrir qualquer issue ou pull request.

## Estrutura do projeto

A estrutura de arquivos do projeto se assemelha ao exemplo abaixo:

```
/src
/v1
/endpoint1
endpoint1-controller.js
endpoint1-data.js
[ talvez mais alguns arquivos ]
/endpoint2
endpoint2-controller.js
endpoint2-data.js
[ talvez mais alguns arquivos ]
/laguinho
/models
__init__.py
metadata.py
error_messages.py
[ futuros outros arquivos de modelagem ]
/routes
__init__.py
datasets.py
[ futuros outros arquivos para rotas ]
/errors
__init__.py
handlers.py
[ futuros outros arquivos para gerenciamento de erros ]
__init__.py
```

Na pasta `/src` temos todo o código do projeto, dentro dele encontraremos subpastas que seguem a estrutura da URI, por exemplo, o endpoint `GET /v1/repositories` está definido na pasta `/src/v1/repositories`

## Contribuindo com novos endpoints
## Organização de Issues

Para criar um novo endpoint, seguimos a receitinha abaixo:
As issues são um espaço aberto para requisitar criação ou correção de funcionalidades da API. Também pode ser usada como um espaço de discussão sobre assuntos gerais do projeto.

1. Procuramos a pasta da última versão da API, (Ex: se existir dentro do `/src` as pastas `/v1` e `/v2` escolhemos a `/v2`)
1. Criamos nela uma nova pasta com o nome do endpoint a ser criado, por exemplo `/xerox-geolocalization` e dentro dela um controller com o padrão `[nome-endpoint]-controller.js` que vai ser o módulo que implementa e exporta a(s) nova(s) rota(s)
1. Caso seja necessário um dataset para popular nosso(s) endpoint(s), criamos um `[nome-endpoint]-data.js` que vai ser responsável por conter os dados ou dados necessários para popular o(s) novo(s) endpoint(s)
1. Importamos o router no módulo da versão da API (`/src/vX/index.js`, sendo X o número da versão)
1. Adicionamos a documentação do(s) endpoint(s) no [docs](https://github.com/OpenDevUFCG/laguinho-api/blob/master/docs/README.md) baseados nos já existentes
Veja sobre nossa [organização de Issues](https://github.com/OpenDevUFCG/laguinho-api/wiki/Organiza%C3%A7%C3%A3o-de-Issues)!

Dica 1: Olhe a implementação e organização de endpoints existentes para entender melhor os padrões usados.
## Propondo uma mudança

Dica 2: Sinta-se livre para criar outros arquivos ou sub-diretórios caso julgue necessário (Seja pra modularizar melhor ou o que for).
Caso deseje propor uma mudança, primeiro verifique se já não existe uma Issue sobre o que você deseja. Se não, [abra uma Issue](https://github.com/OpenDevUFCG/laguinho-api/issues/new) relacionada ao seu problema e espere a comunidade te responder.

Dica 3: O endpoint pode ter sub-rotas (Ex: `/v1/repositories/contributors`) definidas no mesmo controller caso julgue desnecessário criar uma sub-pasta para isso.
## Primeira contribuição

## Contribuindo com endpoints existentes
Caso tenha se interessado pela nossa comunidade, deseja contribuir para o nosso projeto, mas não sabe por onde começar, dê uma olhada em issues com a tag [`good first issue`](https://github.com/OpenDevUFCG/laguinho-api/labels/good%20first%20issue) que serão um bom ponto de partida. Também vale a pena olhar sobre Issues relacionadas a tecnologias que você já tem uma certa familiaridade.

Como já foi dito anteriormente, a estrutura de arquivos do projeto é baseada na URI esperada do endpoint, nesse caso, se desejar contribuir para o endpoint `GET /v1/repositories` poderá facilmente encontrar o código do endpoint na pasta `/src/v1/repositories`, o endpoint estará definido num arquivo que segue o padrão `[nome-endpoint]-controller.js`.
Se você decide fazer alguma mudança, e não existe uma Issue sobre, crie uma nova informando o que será feito e manifeste que você irá querer fazer. Caso exista a Issue, verifique nos comentários se já não existe alguém trabalhando nisso, e comente que você deseja fazer.

## Sugerindo e/ou adicionando dados
Não tenha medo de pedir por orientação ou ajuda, mas, acima de tudo, seja destemido e respeitoso. Você também pode participar de discussões para ajudar a comunidade a realizar boas escolhas!

Caso você tenha um dataset interessante sobre a UFCG e queira compartilhar com a gente, sinta-se livre para criar uma issue falando sobre isso e até (caso desejar) fazer um PR [implementando um novo endpoint](#contribuindo-com-novos-endpoints) que sirva esses dados!!!
## Enviando uma Pull Request

Caso queira adicionar mais dados aos datasets existentes de algum endpoint, você poderá verificar na [documentação do endpoint](https://github.com/OpenDevUFCG/laguinho-api/blob/master/docs/README.md) se existe informação de como contribuir para esses dados, e caso não exista... cria uma issue, pfvr <3
Está pronto para submeter uma Pull Request? Primeiro dê uma olhada nesse [guia](https://github.com/OpenDevUFCG/laguinho-api/wiki/Submetendo-uma-Pull-Request)!
21 changes: 21 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM python:alpine

EXPOSE 80
# set proper ENV to run app on docker
ENV FLASK_RUN_HOST="0.0.0.0"
ENV PIP_NO_CACHE_DIR="true"

WORKDIR /opt

# copy project files to /opt
COPY . /opt/

# installs pipenv, and gcc to compile required cython and then purge it to save space.
# this is needed to run on a single RUN to create only one container layer.
RUN apk add --no-cache --virtual .build-deps gcc musl-dev \
&& pip install pipenv \
&& pipenv install waitress \
&& pipenv install --deploy --system \
&& apk del .build-deps

ENTRYPOINT ["pipenv", "run", "waitress-serve", "--port=80", "--call", "laguinho:create_app"]
19 changes: 19 additions & 0 deletions Pipfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]
python-dotenv = "*"
pylint = "*"

[packages]
flask = "*"
marshmallow = "*"

[requires]
python_version = "3"

[scripts]
lint = "pylint laguinho/"
start = "flask run"
Loading

0 comments on commit 33c2c17

Please sign in to comment.