Giter Site home page Giter Site logo

ead-api's People

Contributors

ayrtonteshima avatar diegodario88 avatar joaohenrique-hs avatar walefe 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ead-api's Issues

Atualizar versão do Node no projeto

A imagem Docker do Node está na versão 10.5.3. Precisamos fazer o upgrade dessa imagem para a versão mais recente.
Atualmente a versão mais recente é 14.3.0 e a stable 12.16.3.
Utilizar a 14 é interessante pois já disponibiliza os novos recursos do ES2020

ES Modules

A forma como importamos um código atualmente no projeto utiliza CommonJS/RequireJS, o que é algo legal pois é possível fazer algumas 'OneLiners' para importar e executar um código, como require('dotenv-safe').config(); e também omitir a extensão do arquivo.

Porém existe a possibilidade de usar o padrão ESM o qual já estamos acostumados a fazer na web. Estou estudando o assunto ainda mas consigo enxergar algumas vantagens em relação ao atual modo, conforme Gil Tayar demonstrou em sua palestra https://www.youtube.com/watch?v=kK_3OP0uJ0Y

  • Strict Por padrão o modo estrito é habilitado e impede que variáveis sejam declaradas no escopo global.

  • Browser Compatible Será possível, em um futuro próximo, reutilizar um módulo da API no projeto Web utilizando
    <script type="module" src="./esm-module.mjs"></script>

  • Statically parsed As importações com ESM são carregadas primeiro e não executadas diretamente como no CJS. Load+Parse+Bind antes de executar o código que importamos ajuda a entender possíveis erros comuns.
    SyntaxError: The requested module './greet.mjs' does not provide an export named 'greet'
    CJS executaria o código e apresentaria
    TypeError: greet is not a function.

  • Async Com o fluxo do processo acima conseguimos fazer importação assíncrona, o que impede de a importação travar a fila de execução. Ou seja é possível executar todos awaits paralelos a importação. Também é possível usar Top-level await, quando essa funcionalidade estiver disponível, isso evitaria a necessidade de escrever uma função async para usar await como nesse caso:

const init = async () => {
  // Inicializando servidor
  const server = await start();
  console.log('Server running on %ss', server.info.uri);
};
init();

Com as vantagens e algumas desvantagens descritas acima e tendo em vista a possibilidade da base de código desse projeto crescer, gostaria de propor a discussão sobre uma refatoração gradual para ESM nesse estágio inicial. Vale salientar que isso por si só já seria bastante mudança e envolveria refletir sobre as ferramentas e bibliotecas já existentes mas evitaria uma major refac posteriormente.

Fazer o Hash da senha diretamente no model

const mongoose = require('mongoose');
const { Schema } = mongoose
const UUIDv4 = require('uuid').v4();
const bcrypt = require('bcryptjs');

const UserSchema = new Schema({
  _id: {
    type: String,
    default: UUIDv4,
  },
  name: String,
  dateOfBirth: Date,
  docType: String,
  docNumber: String,
  email: String,
  status: Number,
  password: String,
  address: {
    street: String,
    complement: String,
    country: String,
    state: String,
    city: String,
    zipcode: String,
    number: String,
  },
}, {
  timestamps: {}
});

UserSchema.pre('save', async function(next) {
  const hash = await bcrypt.hash(this.password, 10);
  this.password = hash;

  next();
});

module.exports = new mongoose.model('User', UserSchema);

Criação do usuário no mongo

Ao tentar criar o usuário no mongo conforme está no README dá erro "bash: mongo: command not found"

Li esse post que menciona para passar a utilizar o comando mongosh

Ficaria dessa forma a criação do usuário:

mongosh -u root -p example <<EOF use eadapi db.createUser({ user: "ead_api_user", pwd: "ead_api_user", roles: ["readWrite"] }) EOF

Vamos definir o escopo que vamos desenvolver primeiro?

Pessoal,
Precisamos definir o coração da aplicação, o que vamos desenvolver primeiro!

Lembrando os que vai ser uma API RESTFul e com sistema de recorrência e a possibilidade também de compra de curso avulso.

Vamos agrupar os itens levantados na issue #2 em categorias de importância! As principais (ultra importante), os interessantes e os extras (não necessariamente esses nomes)

O que vocês acham que são principais, interessantes e extras?

Principais features levantadas

  • Padrão SCORM
  • Catálogo de cursos
  • Aulas com diferentes mídias (vídeo, pdf, imagem, texto, quiz, etc.)
  • Gamificação
  • Ranking
  • Provas
  • Exercício online/interativo
  • Certificação
  • Chat
  • Área de dúvidas
  • Aula online
  • Sala de aula
  • Assinaturas
  • Plano mensal/semestral/anual
  • Curso único
  • Cupom de desconto
  • Ser um portal multidiomas
  • Compartilhamento social (ementas de curso, curso, etc.)
  • Rede social interna (permita interação entre os alunos, monitores)
  • Formação de grupos
  • Integração com diversos meio de pagamento
  • Simulados (correções, cartão resposta)
  • Diferentes permissionamentos (professor, aluno, admin, monitor, etc.)
  • Pontuação para alunos (ex: que ajudarem outros alunos)
  • Cadastro do aluno com apelido
  • Barra de progresso para os cursos
  • Notificação de cada curso lançado
  • Certificado digital (compatível com linkedin, entre outros?)
  • Área para abertura de chamados/tickets de suporte
  • Videoaulas off-line
  • Compra de curso/aula avulso
  • Link de indicação

Executar build dos arquivos com Node do Docker

Atualmente para instalar as dependências do projeto é utilizado a versão do Node da máquina, enquanto a execução do projeto é feito com a versão do Node do container do Docker.

Precisamos fixar isso para que tudo aconteça na mesma versão, de preferência com a versão especificada no Docker.

Site para documentação

Olá a todos!

Gostaria de colaborar com a criação de um site para a documentação aqui mesmo neste repositório. Pode ser feito facilmente na pasta docs.

Pesquisei bastante sobre estes geradores de sites estáticos que podem ser hospedados no GitHub. O que mais gostei foi do mkdocs, mas se alguém conhecer outro que seja melhor vamos trocar ideia.
https://www.mkdocs.org/

Ele trabalha com markdown e gera em HTML.

Por que Typescript não foi adotado neste projeto?

Perdoem-me se por acaso levantei a questão no local errado. Pensei em escrever nos comentários de alguns dos vídeos, mas decidi fazê-lo por aqui.

Sou noob neste mundo(JS, NodeJS e HapiJS), mas bem entusiamado a entender. E nas minhas leituras, me deparo muito com as orientações sobre usar Typescript(que não curto muito, pois venho do mundo Ruby. 😅️).

E gostaria de entender por que o mesmo não adotado neste projeto, já que é bem sugerido por parte da comunidade?

Inclusive li este ebook: https://hapibook.jjude.com/book

Muito obrigado desde já.

Quais funcionalidades um EAD tem?

E aí pessoal, vamos fazer um brainstorm de ideias que um EAD precisa/pode ter e no fim definir o que vamos atacar primeiro?

O ideal é começarmos pelo "coração" da aplicação, as principais funcionalidades e futuramente ir atacando os extras.

Porém, vamos sem restrição e listar todas as funcionalidades possíveis, ok?

Algumas sugestões

  • Padrão SCORM
  • Catálogo de cursos
  • Aulas com diferentes mídias (vídeo, pdf, imagem, texto, etc.)
  • Gamificação
  • Ranking
  • Provas
  • Exercício online/interativo
  • Certificação
  • Chat
  • Área de dúvidas
  • Aula online
  • Sala de aula
  • Assinaturas
    • Plano mensal/semestral/anual
    • Curso único
  • Cupom de desconto

Sessão do usuário.

Tempo em que o usuário pode permanecer no EAD, determinar um prazo para cada tipo de permissionamento ficar on-line, deslogando o usuário caso o mesmo não renove o prazo da sessão.

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.