Giter VIP home page Giter VIP logo

eventos-api's Introduction

frontendbr-eventos-api

JavaScript Style Guide

Master: Build Status Coverage Status Greenkeeper badge

Esse projeto tem como intuito criar uma API capaz de fornecer os dados para os eventos do frontendbr.

Draft

O desenho da API está sendo feito no Swagger. Para visualizar, você pode acessar a documentação (Em atualização)

Com isso é possível visualizar o atual draft, qualquer sugestão pode ser feita pelas issues.

Run

As seguintes tecnologias são usadas nesse projeto:

  • Node
  • Express 4
  • ES6
  • MongoDB
  • Babel (Para uso das novas features)
  • Mocha + Chai + Mongo-In-Memory + pow-mongodb-fixtures
  • Nodemon

Você pode, se desejar, configurar uma aplicação do github através do arquivo dev.json, a aplicação atual aponta para o callback http://localhost:3000/auth/callback.

Para rodar, basta executar npm i na raiz, em seguida npm start.

Dev

Para contribuir com o projeto é muito simples!

Você tem algumas opções:

  • Para subir a aplicação para desenvolver, você pode rodar o comando npm run dev. Isso inicia o servidor com o nodemon, o que permite um desenvolvimento mais ágil.
  • Você pode rodar o linter do projeto, usando a opção npm run eslint. Por favor, faça isso antes de submeter um pull request.
  • Você pode rodar os testes do projeto, usando a opção npm t ou npm test, essa opção já vai rodar o linter por padrão sempre. Por favor, faça isso antes de submeter um pull request.
  • Se você quiser, pode usar o comando npm run watch para iniciar o modo watch, que roda o lint e os testes sempre que um arquivo for salvo. Isso nos permite agilidade e feedback rápido. :)

Testes

A nossa aplicação tem dois tipos de testes, Integração e Unidade. Todos os testes estão dentro da pasta test.

Testes de integração

Os testes de integração são todos os arquivos terminados em integration.spec.js. Todos os testes são rodados com base em um servidor conectado a uma base do mongo-in-memory. É possível fazer um load de dados nessa base, adicionado informações a pasta fixtures. Esses dados são carregados através do pow-mongodb-fixtures.

Testes de unidade

Os testes de unidade são todos os arquivos terminados em unit.spec.js.

Deploy

A plataforma de Deploy escolhida, foi o WeDeploy.

Para realizar o deploy, é necessário ter instalado o CLI do WeDeploy e alterar o arquivo wedeploy.json colocando as variáveis do Admin do Firebase. Sem isso a aplicação não ira funcionar corretamente.

Faça deploy através do comando we deploy -p eventosapi, onde eventosapi é o nome do projeto.

Futuramente vamos configurar para que o Deploy seja feito pelo próprio TravisCI após o Build da master.

Pull-Request e Issues

Você pode abrir uma Issue a qualquer momento e todas elas são bem vindas. Nós pedimos que você abra uma issue antes de realizar um PR, para que possamos debater sobre a sua ideia e guiar o projeto para o melhor caminho junto com você.

Nós temos algumas restrições para o merge do PR:

  • O build do Travis tem que passar, sem isso não podemos realizar o merge.
  • É necessário que um admin aprove o PR.
  • Entendemos que todos os PRs são importantes, então se você abriu um PR e ninguêm deu um feedback em uma semana, por favor marque alguem para um follow-up. (A ideia de esperar uma semana é para não atolar ninguém com milhões de mensagens)

Dúvidas? Problemas? Quer ajudar? Sinta-se a vontade para abrir uma issue.

eventos-api's People

Contributors

angeliski avatar greenkeeper[bot] avatar hbsis-marcelzanluca avatar klauskpm avatar lazaroalvarenga avatar marcellz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eventos-api's Issues

An in-range update of mongoose is breaking the build 🚨

The dependency mongoose was updated from 5.4.13 to 5.4.14.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

mongoose is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

Commits

The new version differs by 18 commits.

  • 35b90d2 chore: release 5.4.14
  • 8dc47a5 docs(schema): add examples for remaining functions
  • 764735b fix(documentarray): report validation errors that occur in an array subdoc created using create() and then set()
  • 3fec456 test(documentarray): repro #7504
  • 660fe60 chore: remove unnecessary print statements
  • 13c7a00 docs(schema): add examples to schema functions
  • 270732e docs(migrating_to_5): link to migrating to 5 docs on the mongoosejs.com website
  • db79cfc Merge branch 'master' of github.com:Automattic/mongoose
  • 67754bd style: fix lint
  • 8e30004 Merge pull request #7530 from sarpik/master
  • 3e44bc2 Merge branch 'master' of github.com:Automattic/mongoose
  • aa43200 docs: add MongooseError to API docs and add list of error names
  • 0daf626 Merge pull request #7521 from nocksapp/master
  • 8752502 fix anchor tag
  • b5f1723 chore: now working on 5.4.14

There are 18 commits in total.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Melhorar a documentação do README

Hoje existem algumas "barreiras" para rodar o projeto do zero, seria ideal documentar as informações necessárias para entender como rodar este projeto.
Pontos importantes:

  • Configuração do Github APP
  • Configuração do Firebase Admin
  • Configuração de Autenticação do Firebase com o Github
  • Secrets e Deploy

Atualizar mecanismo de autenticação

Hoje a autenticação é realizada em um modelo de passport+github+firebase. Essa issue tem como intuito, remover esse modelo e atualizar ele para não usar o firebase.
Nessa issue deve ser realizado o seguinte cenário:

  • O usuário deve ser capaz de se autenticar com o github
  • A API deve ser capaz de identificar se o usuário autenticado é admin #49
  • Deve ser enviado um token por requisição na API, para manter stateless
  • A API deve garantir que o token é do Github, para evitar brechas de segurança
  • Remover os lugares onde o firebase é usado e se necessário remover o passport também.

Login via Github

É necessário desenvolver os endpoints de Login. Talvez seja interessante gerenciar isso com o Passport ou delegar direto para o Firebase.

Listar eventos por status

É necessário desenvolver o seguinte endpoint:
GET /event/findByStatus Finds Events by status
Esse endpoint segue a ideia do #3 a diferença entre eles é que nesse caso é necessário estar logado e é possível listar também os eventos pendentes.

Utilizar babel como transpilador

@angeliski O que acha de utilizar o babel para transpilação do código NodeJS ? Assim poderemos utilizar as features mais recentes do JavaScript que não tem implementada ainda na V8 😄.

Stack - NodeJS + LokiJS

Galera, tive uma ideia e já até comentei com alguns, de utilizar uma stack um pouco diferente, mas bem simples! Seria criar uma API utilizando NodeJS e como banco de dados utilizar LokiJS, pra quem não conhece pode dar uma olhada aqui, é um banco NoSql simples e muito bacana!

Upload de imagem do Evento

É necessário desenvolver o seguinte endpoint:
POST /event/{eventId}/uploadImage uploads an image for the event
Esse endpoint serve para disponibilizar imagens para o evento. Considerações:

  • É necessário estar logado
  • É necessário ser um adm

Obter Evento

É necessário desenvolver o seguinte endpoint:
GET /event/{eventId} Find event by ID
Esse endpoint deve retornar um único evento.

Melhorias e Revisão da API

Essa issue é para a revisão co código ser feita antes do lançamento da V1. Qualquer comentário e sugestão é bem vinda.

Criar camada de persistência dos administradores

Hoje é necessário guardar a informação de quem são os administradores. Idelmente, será salvo apenas o email do usuário, identificando ele como administrador.Nessa issue deve ser realizado o seguinte cenário:

  • Criar o schema que permite registrar um administrador
  • Atualizar os locais onde a verificação de administrador é feita para simplificar conforme o mongo
  • Remover as referências do firebase e do firebase-admin onde necessário(O firebase só será removido após tudo ter sido removido).

Deletar Evento

É necessário desenvolver o seguinte endpoint:
DELETE /event/{eventId} Deletes a event
Esse endpoint é responsável por realizar a deleção fisica do evento. Considerações:

  • É necessário estar logado
  • É necessário ser um adm
  • Somente eventos reprovados devem ser deletados

Listagem de Eventos

É necessário desenvolver o seguinte endpoint:
GET /event - List all events
Esse endpoint é responsável por listar todos os eventos aprovados considerandos os filtros:

  • Mês (month) [ Janeiro a Dezembro]
  • Estado (state) [SP, RJ,MG]
  • Palavras Chave (keywords) [pode se usar um like no titulo e descrição, considerar a performance]
  • offset (Paginação)
  • limit (Paginação)

Opção postergada:
A opção de informar o mês através de números é para evitar problemas de internacionalização (Outubro, October)

Melhorar suite de testes

Uma das coisas que eu acho que hoje está muito complexa nos testes é a suite de testes.
Quando eu fiz ela, não considerei aspectos de teste de unidade, teste de integração e afins.

Acho que vale um refactor nela, depois que a implementação do banco e do auth for definida, para simplificar e dar maior segurança nas nossas regras de negocio.

[question] Firebase x WeDeploy

Não baixei o projeto para estudá-lo e entender a implementação, mas uma coisa que me chamou a atenção no readme foi o fato de utilizar o Firebase e o Wedeploy. Qual a função do Firebase no projeto? Questiono isso, pois se a API vai ficar no wedeploy, acredito que dê pra fazer tudo com os próprio serviços deles (hosting, auth, db)

[]s

Desenvolver Dasboard de ADMIN

Depois da #13 É preciso fazer o dashboard ondes os administradores vão poder aprovar/reprovar os eventos, deletar e fazer upload das fotos.
Para esse dash é necessário fazer login no github e ser adm.

Revisar as dependências do projeto

O Github está emitindo um alerta de vunerabilidades, é interessante revisar isso para garantir que as dependências estão sem brechas.

network_dependencies_ _frontendbr_eventos-api

Realizar a configuração do mongodb

Optamos por usar o mongodb como nossa base de persistência. Para isso, vamos usar o serviço do mongo lab. Nessa issue deve ser realizado o seguinte cenário:

  • Adicionar as configurações de start do mongo no arquivo de configuração
  • Adicionar os testes de integração (mongo-in-memory ou outro para os testes)
  • Atualizar o README explicando qual tecnologia usamos e como alterar as configurações (Se necessário)

Pode se usar a POC de referência.

Atualizar um evento

É necessário desenvolver o seguinte endpoint:
PUT /event/{eventId} Updates a event
Esse endpoint deve atualizar o evento. Considerações importantes:

  • É necessário estar logado
  • É necessário ser um adm
  • A atualização deve seguir o padrão PATCH (atualização parcial), ou seja, só é atualizado aquilo que for enviado

An in-range update of nodemon is breaking the build 🚨

The devDependency nodemon was updated from 1.18.5 to 1.18.6.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

nodemon is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • continuous-integration/travis-ci/push: The Travis CI build could not complete due to an error (Details).

Release Notes for v1.18.6

1.18.6 (2018-11-05)

Bug Fixes

Commits

The new version differs by 1 commits.

  • 521eb1e fix: restart on change for non-default signals (#1409) (#1430)

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Criar a camada de persistência do Evento

Após a #47 é necessário criar o schema para persistir o evento no mongo. Nessa issue deve ser realizado o seguinte cenário:

  • Criar o schema do mongo para o Evento
  • Remover as referências de persistência do Firebase para o evento(O firebase só será removido após tudo ter sido removido).
  • Atualizar os métodos que realizam o cadastro, atualização, deleção e listagem do evento.

Cadastro de Eventos

É necessário desenvolver o seguinte endpoint:
POST /event - Add a new event
Esse endpoint é responsável por cadastrar um evento. Todo os eventos devem entrar com o status pendente de aprovação para que os moderadores tenham que aprovar.

  • Titulo (title)
  • Data (dateEvent)
  • Local (local)
  • CEP (zip) (Opcional)
  • Descrição (shortDescription)
  • Valor (price) [0 para eventos gatruitos]
  • Website do evento (eventLink)

Em caso de sucesso, o retorno deve ser 200. Pode se retornar 400 em caso de erro de preenchimento.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.