training-center / R2D2

Front-End da Plataforma do Mentoria
MIT License
44 stars 9 forks source link

Desenvolvimento de estrutura inicial #6

Closed woliveiras closed 7 years ago

woliveiras commented 7 years ago

Visando agilizar o processo definimos que vamos partir para uma solução em Nodejs onde podemos usar o freeCodeCamp como projeto de exemplo de sucesso a seguir.

https://github.com/training-center/plataforma/issues/1#issuecomment-334153642

Esta issue serve para desenvolvimento de uma estrutura inicial para começarmos o desenvolvimento da plataforma.

O que precisamos

Precisamos da separação do que é backend e do que é frontend. Podemos criar uma pasta chamada client, admin e outra chamada server onde:

Precisaremos de uma pasta onde são compartilhados arquivos estáticos comuns a toda a plataforma, podemos chamar de public.

Visando o uso de React, podemos usar styled components e não será necessário o CSS separado do HTML/JS, somente a criação de componentes.

Para a criação do backend eu sugiro o Hapi.js, porém não tenho background em backend suficiente para ajudar nessa decisão. Só faço essa sugestão com base no que acompanho da comunidade Nodejs.

De resto acredito que vamos definindo de acordo com o que for precisando.

lflimeira commented 7 years ago

Opa, já pode colocar a mão na massa? Pode criar as estruturas?

Eu indico para o Back o Express, melhor para a galera que está começando poder ajudar tbm. Se quiser posso subir a estrutura inicial dele aqui @woliveiras .

woliveiras commented 7 years ago

Pode subir essa estrutura inicial, @lflimeira

Vai criar dentro da pasta server mesmo?

khaosdoctor commented 7 years ago

eu já discordo um pouco do @lflimeira com o uso do Express, prefiro o Hapi porque, lá na frente conforme o projeto for evoluindo, o express vai acabar ficando complicado. A vantagem no Hapi é não utilizar middlewares e podemos separar as rotas de forma bastante intuitiva em arquivos completamente separados (não temos que baixar muitas dependencias também porque ele vem bem completo).

khaosdoctor commented 7 years ago

Quanto a estrutura geral do projeto, não vou opinar muito no front porque não conheço tanto para criticar ou apoiar, mas no back-end, acredito que possamos ter uma arquitetura orientada a APIs e endpoints completamente separada, utilizando, a princípio, um monólito e depois quebrando em estruturas menores de microserviços que torne ainda mais fácil pra gente manter isso tudo aqui no github:

woliveiras commented 7 years ago

@khaosdoctor mas ai você está complicando demais algo que é pra ser simples pra ser lançado logo.

Ficar especificando demais só vai nos atrapalhar. Lembre que gastamos o tempo livre pra desenvolver e por isso não tem como sair a coisa mais perfeita do mundo.

Não temos nem grana pra fazer algo tão perfeito, por isso acredito que copiar o freeCodeCamp é o melhor caminho.

khaosdoctor commented 7 years ago

@woliveiras Realmente pode ficar mais complexo no inicio, mas eu acho que montar de uma vez vai ficar complexo para manter depois...

fernandofleury commented 7 years ago

O que acham de usarmos graphql? Acho que vai ajudar o consumo das APIs. Eu posso montar ele em cima das nossas APIs se for necessário (Se ninguém estiver afim de fazer).

lflimeira commented 7 years ago

Galera, como fiou resolvido? @khaosdoctor e @woliveiras ? Eu acho que é acrescentar muita complexidade para um POC, acho que podemos fazer acontecer e depois refatorar. Se aprovagem posso subir uma estrutura inicial. @fernandofleury vc acha que implementar graphql agora é realmente necessário?

khaosdoctor commented 7 years ago

Eu ia falar justamente isso @lflimeira, acho que por enquanto vamos montar algo simples e que todos conheçam, mas eu acho que os requisitos todos não vão sair de uma issue do github kk vamos precisar nos reunir em uma call e anotar tudo que temos em mente, tanto com mentores quanto com mentorados.

fernandofleury commented 7 years ago

@lflimeira é um trabalho muito pequeno. dá pra ser feito em paralelo enquanto os endpoints são feitos.

fernandofleury commented 7 years ago

Eu acho que pra ter um schema de db inicial, é possível seguirmos o template de pupilo/mentor que temos no gh.

khaosdoctor commented 7 years ago

Ver #4

Update

Criei um project também: https://github.com/training-center/plataforma/projects/1

woliveiras commented 7 years ago

Esta issue já pode ser fechada visto que já foi montada uma estrutura base e o restante está sendo discutido por slack e sendo aberto em issues separadas.