ayrtonteshima / ead-api Goto Github PK
View Code? Open in Web Editor NEWAPI da plataforma de ensino a distância desenvolvida junto ao canal do YouTube Programador a Bordo
License: MIT License
API da plataforma de ensino a distância desenvolvida junto ao canal do YouTube Programador a Bordo
License: MIT License
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
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.
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);
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
A aplicação começou apresentar um erro de duplicação de id na hora de cadastrar o usuário, com isso não está sendo possível criar novos usuários.
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
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.
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.
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á.
inicia quando ?
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?
Pelo que entendi, depois de ver o primeiro vídeo 🤓 essa questão ainda está meio que indecisa certo? Seria legal, depois de fechar essa #2 issue debatermos sobre quais tecnologias(Frontend, Backend, Infra, e etc...) serão utilizadas.
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.