GithubHelp home page GithubHelp logo

impulsoteam / atena Goto Github PK

View Code? Open in Web Editor NEW
135.0 28.0 43.0 4.74 MB

Atena is an initiative of the Impulso Network in collaboration with several Impulsers, with the objective to promote the engagement and to reward the activities and efforts of each person in the Impulso Network.

Home Page: https://impulso.network

License: MIT License

JavaScript 99.57% Shell 0.43%
javascript slack-bot rocketchat-bot atena impulso-network

atena's Introduction

Atena

Website Website License: MIT Twitter Follow

Documentação em Português

Atena is an initiative of the impulse in collaboration with several Impulsers, with the objective to promote the engagement and to reward the activities and efforts of each person in the Impulse. In it you will be able to acquire Reputation Points through the execution of several activities and based on these two factors, the Impulsers will receive levels and achievements recognizing the effort expended in the activities.

Integrations

Atena has integrations with:

Setup

Here is a walkthrough of the minimum configuration you need to get Atena running:

Initial setup

Development

  • Fork the project to your account

  • Then, make a clone:

> git clone https://github.com/{your account}/atena
  • Navigate to the destination folder where you clone the project:
> cd atena/
  • Install the dependencies using yarn:
> yarn -i
  • Add remote references from Atena:
> git remote add upstream https://github.com/universoimpulso/atena
  • Create a .env file at the root of the project by copying and renaming the .env.example file and subsequently changing some values ​​cited below:

Configuring Github Integration

To use Github integration, follow the documentation steps by clicking here.

Configuring Wordpress Integration

To use Wordpress integration, follow the documentation steps by clicking here.

Running in development environment

Start the server using the following command:

> yarn start:dev

Debug

If you want to use a debug, start the server with the following command:

> yarn start:dev:debug

Run node inspect in another terminal

> node-inspect localhost:9229

Contributing

The main purpose of this repository is to continue to evolve Atena, making it faster and easier to use.

Athena's is a open-source project, and we are grateful to the community for contributing with bug fixes and improvements. Read more to learn how you can participate in improving Athena and the Impulso network.

user useruseruseruseruseruseruser

Impulso Network has adopted a Code of Conduct to guide our participants. Please read Code of Conduct for more infos.

Read our contribution guide to learn about our development process, how to propose bug,fixes and improvements, and how to build and test your changes in Atena.

Community

All comments and suggestions are welcome and can be made via Issues on Github

💬 Join the community in Impulso Network

License

This project is licensed under the MIT license - see the LICENSE file for details.

atena's People

Contributors

andrecavallari avatar cenicoemir avatar codacy-badger avatar depfu[bot] avatar enieber avatar gnuns avatar goldblade avatar iaurg avatar lazaroalvarenga avatar manoellobo avatar marianaviana avatar omarciovsena avatar patriciaclares avatar rtarantelli avatar thaismartins avatar thejullius avatar vyper 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

atena's Issues

#5 Correção de vulnerabilidades encontradas no projeto

Corrigir 3 vulnerabilidades no projeto, sendo uma crítica de DDOS.

Moderate ReDoS via long string of semicolons
Package tough-cookie
Patched in >=2.3.0
Dependency of async-request
Path async-request > tough-cookie
More info https://nodesecurity.io/advisories/130

High Regular Expression Denial of Service
Package tough-cookie
Patched in >=2.3.3
Dependency of async-request
Path async-request > tough-cookie
More info https://nodesecurity.io/advisories/525

Low Prototype Pollution
Package lodash
Patched in >=4.17.5
Dependency of async-request
Path async-request > lodash
More info https://nodesecurity.io/advisories/577

Mapear fluxos para design de telas

Criação de Fluxo do Usuário
Criação de Wireframes

  • Main Page/Como Funciona
  • Ranking Mensal/Geral
  • Dashboard/Perfil do Usuário
  • Feedback para integrações [Novo]

Separar Reactions Positivos de Reactions Negativos

Hoje os pontos de reações são exibidos juntos no perfil do usuário; não possiblitando uma análise mais detalhada para saber se este usuário é conhecido por suas reações negativas ou positivas, pois haverão conquistas associadas a estas duas reações.

Cenário 1

Dado que sou usuário do Core Team
Quando clicar no perfil do usuário no app Atena
Entao gostaria de poder visualizar reações positivas e negativa

Ranking exclusivo do core team

Tendo em vista que os Impulsers do Core Team não aparecerão no /ranking. A fim de medir o desempenho e interações oferecer um ranking particular para esses usuários.

Integração com Linkedin

  1. Pegar quem trabalha na Impulso no LinkedIn;

  2. Ganho de XP: +3 de XP pela ação, ganho uma única vez.
    Complicações: Implementar mecanismo para impedir que o usuário ganhe o benefício mais de uma vez, removendo e adicionando a Impulso no perfil do linkedin.

  3. Conquista Permanente: Linked In! - Bronze

Adicionar novos canais mensurados pelo Atena

Lista de canais
#academy [CDNGW796X]
#android [C8WEY5FDG]
#design [C8WJE0MQD]
#dev [C8XGMU79V]
#devops [CCG1P97HS]
#english [C8VU7CDL1]
#filmes-series [C8WC0G4D9]
#front-end-web [C8WEJ77C4]
#javascript [C8VU6UZ2M]
#jukebox [C8XALFB46]
#meetup [CAXDRTBV3]
#off-hours [CDP36K52A]
#open-source [CCDDMADK3]
#open-source-atena [CCZUDN0J0]
#python [C8XANSE3Y]
#php [C8VU8541X]
#react [CCRF2HR8A]
#ruby [C8VR6FBME]
#testes [CD88J4WJ3]
#vue [CCRLKDKAR]

Update async-request references to the latest version

3 vulnerabilities were found in the project.

Moderate ReDoS via long string of semicolons
Package tough-cookie
Patched in >=2.3.0
Dependency of async-request
Path async-request > tough-cookie
More info https://nodesecurity.io/advisories/130

High Regular Expression Denial of Service
Package tough-cookie
Patched in >=2.3.3
Dependency of async-request
Path async-request > tough-cookie
More info https://nodesecurity.io/advisories/525

Low Prototype Pollution
Package lodash
Patched in >=4.17.5
Dependency of async-request
Path async-request > lodash
More info https://nodesecurity.io/advisories/577

Formatação nos pontos do ranking /meuspontos

Percebi que na apresentação do meus pontos temos um problema de exibição por causa da divisão de ponto flutuante.

Exemplo: Olá Eduardo Junior, atualmente você está no nível 1 com 61.300000000000004 XP

Criação de modelos de badges para Atena Web

Criar o modelo para badges do projeto Atena (Gamificação), respeitando as referências definidas no manual de marca da Impulso: BrandbookImpulsov1.5.pdf

As badges devem ser baseadas nos metais na seguinte ordem de importância: Bronze, Prata, Ouro e Platina, um ícone correspondente a conquista e um campo para o nome da conquista.

Além disto, algumas badges de Bronze, Prata e Ouro possuirão 3 rankings internos (a platina não possui graus) internos que devem ser representados seja pelas números romanos I, II e III.

Testes

  • O que vamos usar? Jest

O que foi Implementado:

  • utils/calculateReceivedScore

O que falta Implementar:

  • Controller de Usuário
  • Controller de Interação
  • Model de Usuário
  • Model de Interação

Pipeline Github

Configurar as entregas contínuas nos servidores de staging e produção

  • Quando gerar um release atualizar produção

Atualizar package.json

  • Atualizar name, version, description, license;
  • Inserir informações do repositório e issues;

Filtrar Core Team do ranking

Atualmente o ranking não está filtrando os Impulsers do core team. Esses Impulsers não devem aparecer no ranking.

  • Listar todos os Impulsers do Core Team

Implementar Conquistas Permanentes/Feitos

Hoje não existe uma forma de atribuir conquistas permanentes para os usuários do game, o que poderia gerar mais engajamento e assim dar visibilidade as ações do usuários dentro da comunidade; com esta funcionalidade o usuário conquistará Feitos em forma de medalhas dividas em categorias, atribuídas ao teu perfil no app, garantido à ele diversos benefícios a serem definidos.

Cenário Usuário do Game no App Web

Dado que sou usuário do game
Quando clicar no meu perfil do app Atena
Entao gostaria de poder visualizar minhas conquistas divididas em categorias

Cenário Usuário do Game no Slack

Dado que sou usuário do game
Quando ao digitar o comando minhas conquistas
Entao gostaria de poder visualizar minhas ultimas conquistas e suas categorias

Cenário Usuário no Core Team

Dado que sou usuário do Core Team
Quando ao clicar no perfil do usuário
Entao gostaria de poder visualizar suas conquistas divididas em categorias

Mecânica das Conquistas

Conquistas são divididas em categorias

  • Network
  • Team
  • Academy
  • Mentoring
  • Meetups
  • Research
  • Núcleos
  • Missões

Conquistas possuem graus (divididos por metais) e podendo ter 3 sub-graus (numéricos)

  • Bronze
  • Prata
  • Ouro
  • Platina
  • Diamante

Conquistas de grau superior substituem as de grau inferior, mas mantém um histórico resumido visível para o Impulser

Conquistas conferem experiência quando for obtida pelo Impulser

  • Bronze: 3 XP
  • Prata: 5 XP
  • Ouro: 7 XP
  • Platina: 9 XP
  • Diamante: 11 XP

Conquistas devem ser visíveis por todos e mostrar barra de progresso para completa-las

Conquistas permanentes nunca poderão ser perdidas

Quantidade de ações para obter conquistas
https://drive.google.com/open?id=1ORkV9geyFoB6ugWLAsOhrPQxyhSZ9T2n8X6bMWCpQI8

Analisar possíveis configs backend/server

  • Instalar e configurar a aplicação e uma vm linux
  • Instalar e configurar a aplicação em uma imagem docker
  • Verificar possibilidade de utilização de containers (K8s)
  • Analise de custos da quantidade de requisições com base no volume que temos hoje no Slack
  • Tamanho do banco e verificar necessidade de disco de alta performance

Implementar conquistas temporárias diárias

Não existe uma forma de atribuir conquistas temporárias para os usuários do game, essas poderiam contribuir na motivação e engajamento do usuário com a Network e Atena; com esta funcionalidade o usuário conquistará Feitos em forma de medalhas dividas em categorias, atribuídas ao teu perfil no app sendo perdida se não mantiver frequência numa determinada ação ou cargo, sendo permanente apenas o grau mais alto que ele atingiu.

Cenário Usuário do Game no App Web

Dado que sou usuário do game
Quando clicar no meu perfil do app Atena
Entao gostaria de poder visualizar minhas conquistas temporárias divididas em categorias

Cenário Usuário do Game no Slack

Dado que sou usuário do game
Quando ao digitar o comando minhas conquistas
Entao gostaria de poder visualizar minhas ultimas conquistas temporárias e suas categorias

Cenário Usuário no Core Team

Dado que sou usuário do Core Team
Quando ao clicar no perfil do usuário
Entao gostaria de poder visualizar suas conquistas temporárias e histórico destas numa categoria a parte

Mecânica das Conquistas Temporárias

Conquistas temporárias também são divididas nas mesmas categorias
Network, Team, Academy, Mentoring, Meetups, Research, Núcleos e Missões

Conquistas temporárias também possuem os mesmos graus e possuem apenas um sub graus
Bronze, Prata, Ouro, Platina, Diamante

Conquistas temporárias de grau superior substituem as de grau inferior, mas mantém um histórico resumido visível para o Impulser

Conquistas temporárias conferem experiência quando forem obtidas pelo Impulser pela primeira vez
Bronze: 3XP, Prata: 5XP, Ouro: 7XP, Platina: 9XP e Diamante: 11XP

Conquistas devem ser visíveis por todos e mostrar barra de progresso para completa-las

Conquistas temporárias são perdidas, mas se mantém permanente o maior grau alcançado, se perdida a frequência tem se iniciar novamente da primeira conquista

Quantidade de ações para obter conquistas
https://drive.google.com/open?id=1ORkV9geyFoB6ugWLAsOhrPQxyhSZ9T2n8X6bMWCpQI8

Mandar feedback para Atena

Além de /meuspontos /ranking. A Atena poderia ter um comando para receber feedbacks e reenviarmos para Emir e Plínio ou colocarmos no Trello.

Integrar pontos do Blog

Hoje o Impulser que colaborar criando postagens no blog impulso não é pontuado/recompensado por essa ação, o que poderia criar estimular ele e outros Impulsers a fazer o mesmo, com essa funcionalidade o usuário ganhará experiência quando criar postagens no blog da Impulso;

Cenário Impulser no Blog Impulso

Dado que sou um Impulser
Quando criar postagem no blog impulso
Entao gostaria de ganhar 5 XP por post realizado

Mecânica dos pontos por postagem no blog

Blog da Impulso: https://blog.impulso.network/
Postagens JSON: https://blog.impulso.network/wp-json/wp/v2/posts

Crio uma postagem no blog: +5 de XP

Criação de layout para duas páginas para o Ranking Web

Criar o Layout para duas páginas do projeto Atena (Gamificação), respeitando as referências definidas no manual de marca da Impulso: BrandbookImpulsov1.5.pdf

Ranking Geral: Deve exibir os 5 primeiros colocados no Ranking + o Impulser que está consultando o ranking e sua posição (Atual: http://atena-network.herokuapp.com/ranking), além das seguintes informações:

  • Marca da Impulso;
  • Número de colocação no Ranking;
  • Avatar;
  • Nome;
  • Nível;
  • Experiência (XP);

Perfil do Impulser: Deve exibir informações detalhadas a respeito do Impulser (Atual: http://atena-network.herokuapp.com/ranking/user/U9670TYSJ):

  • Nome
  • Nível
  • Avatar/Foto;
  • Mensagens Enviadas;
  • Respostas dadas e recebidas;
  • Reações dadas
  • Reações recebidas, positivas e negativas;

Implementar Inatividade

Hoje quando um usuário fica inativo por determinado tempo, não é penalizado, assim não é possível saber se abandonou a comunidade e quão engajado está. Precisamos de um mecanismo para verificar a inativade do usuário após determinado tempo, para então reduzir os pontos do usuário, tornando o game mais competitivo.

Cenário Usuário do Game

Dado que sou usuário do game
Quando inativo por deteminado tempo
Entao o game passará a reduzir meus pontos dia a dia

Cenário Usuário do Game no Slack

Dado que sou usuário do game
Quando um dia antes de alcançado o período de inatividade
Entao o game enviará um alerta informando que meus pontos serão reduzidos no dia seguinte

Cenário Usuário do Game no Slack

Dado que sou usuário do game
Quando alcançado o período de inatividade
Entao reduzirá meus pontos reduzidos,
E o game enviará um alerta informando que meus pontos foram reduzidos

Cenário Usuário do Game no App Web

Dado que sou usuário do game no App Web
Quando clicar no meu perfil no App Web
Entao gostaria de visualizar o período de inatividade

Cenário Usuário do Core Team

Dado que sou usuário do Core Team
Quando clicar no perfil do usuário no App Web
Entao gostaria de visualizar o período de inatividade

Cenário Usuário do Core Team

Dado que sou usuário do Core Team
Quando selecionar o filtro usuários inativos no app web
Entao gostaria de visualizar todos os usuários em inatividade,
E o período de inatividade para cada usuário

Mecânica do game

  • Após 14 dias decrementar XP uma taxa de 1XP por dia.

Integrar pontos do Disqus (Blog)

Ao ler um post no blog e realizar comentários ou dar reações na postagem o Impulser não é pontuado/recompensado por essa ação, esta recompensa poderia estimular ainda mais o engajamento no blog e talvez a criação de postagens próprias, com essa funcionalidade o usuário ganhará experiência quando comentar ou reagir a postagens no blog;

Cenário Impulser no Blog Impulso comentando

Dado que sou um Impulser
Quando comentar numa postagem do blog
Entao gostaria de ganhar 2 XP por comentário realizado

Cenário Impulser no Blog Impulso reagindo

Dado que sou um Impulser
Quando reagir a uma postagem do blog
Entao gostaria de ganhar 1 XP por reação dada

Mecânica dos pontos por comentário/reação no blog

Blog da Impulso: https://blog.impulso.network/
Blog da Impulso utiliza o Disqus como plugin para comentários e reações

Comento uma postagem no blog: +2 de XP
Reajo a uma postagem no blog: +1 de XP

Integrar pontos do GitHub (Open-source)

Atualmente o Impulser não é pontuado/recompensado por sua participação em projetos open-source que a Impulso apoia, o que poderia criar motivação na participação desses projetos e engajamento, com essa funcionalidade o usuário ganhará experiência de acordo com a ação realizada no GitHub, seja ela a criação de uma issue, review de um código ou criação de PR;

Cenário Impulser no GitHub

Dado que sou um Impulser
Quando criar uma issue/realizar uma review/criar PR no GitHub de um projeto open-source da impulso
Entao gostaria de ganhar 1 XP por issue criada/1 XP por review realizado/3 XP por PR realizada

Mecânica dos pontos por projetos Open-source/Integração com GitHub

Crio uma Issue: +1 de XP
Faço uma Review: +1 de XP
Crio uma PR: +1 de XP
PR Aprovada/Merge: +3 de XP

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.