pokemongovet / pokemongovet.github.io

Projeto para incentivar adoção de animais pessoas que amam pokemons virtuais
https://pokemongovet.github.io/
Other
102 stars 38 forks source link

Definição das tecnologias básicas do projeto #12

Open carvalhobruno opened 8 years ago

carvalhobruno commented 8 years ago

Bom pessoal, pretendo começar a colaborar com o projeto.

Analisei o issue #11 e acho que vale muito a pena começar a pensar no que será utilizado no projeto além do site estático que existe hoje.

O próprio issue menciona a necessidade de tirar o form do google e criar um próprio.

Vejo duas soluções:

A ultima opção resolveria muitos outros problemas, e tornaria futuras melhorias muito mais viáveis.

Seguindo essa linha, gostaria de discutir o que usar em questão de:

Já gostaria de adicionar no issue o @fititnt , pois vejo que ele é um dos devs mais envolvidos com o projeto.

evansantos commented 8 years ago

@carvalhobruno acho que a linguagem/banco inicialmente para não haver custo por ser um mvp o legal seria usar o firebase/rethinkdb ou similar

fititnt commented 8 years ago

Pessoal, eu estou aqui mais como uma pessoa para ajudar as duas "lideres de ginásio" do que geralmente decidindo sobre o projeto. A @rcgivisiez e a @icoffani são, respetivamente, entusiastas de software livre e adoção de animais.

Se tiver gente suficiente para colaborar, eu prefiro ficar mais com revisar os Pull Requests do que fazer código mesmo.

O ponto é que se começar a ter mais gente ajudando, faria diferença ter mais gente pra me ajudar a revisar os PRs

fititnt commented 8 years ago

Um dos mantras que o pessoal que está na iniciativa quer manter é, se por um lado é uma meta incentivar a primeira adoção de animal resgatado, por outro também o ideal é ser o primeiro pull request de gente que nunca contribuiu com software livre.

Acho que com isso vocês já pegam a ideia geral. O pessoal aqui que tiver MUITO mais experiência pode nesse momento colaborar chamando um amigo que nunca commitou pra ajudar no projeto e, no PR, dizer que "revisou e está ok" para que seja aceito.

evansantos commented 8 years ago

@fititnt sim, é mais um code review e um possível mentoring para aqueles que nunca ajudaram com projetos open-source 😄

carvalhobruno commented 8 years ago

@evansantos concordo que o fator não haver custo no inicio é muito importante.

Mas acho que hoje em dia há serviços gratuitos (ou bem baratos) pra todas as stacks que sejam razoavelmente populares.

@fititnt valeu pelo esclarecimento. Inclusive eu não costumo participar de projetos opensource, e como apoio bastante a causa to disposto a participar mais :)

Mas sobre o tópico do issue em si, vocês têm alguma sugestão pra dar ? Acho que os primeiros a realmente por a "mão na massa" podem tomar a liberdade de tomar essas decisões, estando todos em um consenso, não ?

alvarengathomas commented 8 years ago

Que tal usar React, Node e MySQL ou MongoDB? Acho que seria legal pra incetivar o estudo do React para iniciantes e manteria javascript no backend.

evansantos commented 8 years ago

@alvarengathomas discordo do uso dessas tecnologias, você espanta os iniciantes de poder ajudar, react não envolve somente saber sobre react puro, mas sim outras coisas a mais

alvarengathomas commented 7 years ago

@evansantos concordo a respeito do react, mas em relação ao NodeJS acho viável e com uma curva de aprendizado bem menor.

lucasbento commented 7 years ago

@evansantos React vai atrair muitas outras pessoas, hoje é o que temos de mais procurado pra devs front-end, ainda que um desenvolvedor iniciante tenha problemas para aprender, estaremos todos aqui para ajudar.

Acho que React é com certeza uma opção válida, ainda mais que podemos utilizar React Native para um futuro desenvolvimento de um app para dispositivo móvel.

A maioria deve iniciar com React mesmo que aparente ser difícil, ele traz diversos novos conceitos e ideias que ajudam bastante o desenvolvimento de um produto.

alvarengathomas commented 7 years ago

@lucasbento agora ficou ainda mais fácil começar com React, eles criaram tipo um "boilerplate" que não precisa configurar nada para iniciar, acho uma ótima alternativa. https://github.com/facebookincubator/create-react-app

lucasbento commented 7 years ago

@alvarengathomas eu vi, muito legal, estou esperando um projeto para poder usar. 👍

evansantos commented 7 years ago

@lucasbento @alvarengathomas sim, eu concordo com o que você argumentou, Mas pensa você é inicante vindo do freecodecamp, codecademy e afins louco para ajudar em OS, dai você encontra uma plataforma toda codada em javascript/react o que você faria? eu simplesmente fugiria do projeto

cc @icoffani @fititnt

carvalhobruno commented 7 years ago

Minha opinião: O projeto não pode ficar pra sempre com as tecnologias mais simples possíveis.

Acho importante o cuidado ao se escolher as tecnologias usadas, e após isso, aos que quiserem ajudar e não conhecem a tecnologia usada, fica a oportunidade do aprendizado, junto aos envolvidos no projeto.

Acho que assim o projeto evolui tecnologicamente, e os colaboradores tecnicamente. Essa é uma das maiores premissas do open-source.

Relacionado: #35

fititnt commented 7 years ago

Minha opinião: O projeto não pode ficar pra sempre com as tecnologias mais simples possíveis.

Eu gostei de você ter dito isso. É importante ter discussão, até pra evoluir no assunto, e não for ordem "de cima pra baixo". E o fato de ter essa discussão permite que isso gere frutos.

Convido você a ler este artigo http://codebetter.com/markneedham/2010/03/18/essential-and-accidental-complexity/

Essential complexity is the core of the problem we have to solve, and it consists of the parts of the software that are legitimately difficult problems. Most software problems contain some complexity.

Accidental complexity is all the stuff that doesn’t necessarily relate directly to the solution, but that we have to deal with anyway.

evansantos commented 7 years ago

concordo contigo @carvalhobruno, mas o que você acha inicialmente termos esse mvp, simples e aos passos que for levantando requisitos e necessidades ir convertendo o projeto para novas tecnologias tais como react, firebase e demais, quiça virar um SaaS ou PaaS? e até um app ou pwa

@fititnt muito bom esse texto :D

lapa182 commented 7 years ago

Btw, essas discussões não seriam melhor acontecer em outra plataforma além do Git? Tipo um slack channel com um board do trello (isso também serviria para apresentar métodos de desenvolvimento e também como funciona um board de task).

carvalhobruno commented 7 years ago

Sugestão de stack:

Node.js +express para api e servir o site - é javascript puro, com uma documentação muito boa, e é realmente muito fácil de ser configurado (criar rotas simples + API Restful)

Handlebars.js como engine template - funciona basicamente com html puro, suportando lógica e reaproveitamento de código

Mysql como banco de dados - é o banco mais usado na comunidade

Sass como pré-processador CSS;


Gosto dessa stack porque:

Servindo o site com node + handlebars você tem o site sendo renderizado no servidor, diferente de quando se utiliza react ou angular (sem uso de alguma ferramenta externa), o que ajuda e MUITO a indexação nos motores de busca.

Além disso, você tem a criação de uma API Rest simples muito fácil, assim como qualquer pessoa sem maiores conhecimentos em javascript pode editar os htmls normalmente, pois estará sendo usado handlebars como template engine.

Utiliza-se o MySQL por ser de longe o banco de dados com que o maior número de iniciantes terem familiaridade, e ele dar conta do que o projeto demanda.

Sugiro o SASS por facilitar e MUITO a organização do CSS, ser muito pouco diferente do CSS puro (contém basicamente suporte a mais recursos do que o css puro);

Caso aceita a stack, me responsabilizo a criar um boilerplate para ser instalado por quem quiser colaborar e não se sentir confortável com a stack. Me disponho também a ajudar a dar mentoria a esses colaboradores do projeto.

Com o boilerplate pronto, qualquer pessoa que quiser ajudar com o projeto precisará apenas baixar o repositório localmente, saber usar minimamente o NPM (no caso usar npm install pra baixar e instalar todos os pacotes do projeto), e o GIT (pra clonar o projeto e commitar);

Tentei me ater a tecnologias extremamente simples e com GRANDE aceitação da comunidade de desenvolvedores (incluindo iniciantes).

Vou postar a mesma coisa nos outros posts de Definição de tecnologia.

matheusmessora commented 7 years ago

Olá pessoal, acabei de encontrar esse repositorio e estou bem interessado em tentar ajudar. Concordo com @carvalhobruno na maioria dos pontos. O banco de dados acho que tanto MySQL quanto MongoDB seriam ótimas escolhas (apesar de 1 ser relacional e o outro não). Mas isso vai acabar esbarrando em qual serviço de hosting o sistema está rodando. Será utilizado a AWS, GoogleCloud ou algum servidor dedicado, isso influencia nas decisões.

Mas acho que o mais importante seria elencar as primeiras funcionalidades do sistema (issues), e com isso definir a melhor arquitetura do sistema.