-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sugestão arquitetural #1
Comments
aqui eu fiz sugestão da divisão de algumas camadas, uma modelagem inicial para o core, alguns sugestões de pastas para o projeto e padrões de nomenclatura (foi o primeiro que o google trouxe). fica faltando um monte de coisas: definição da arquitetura do client/ui, dos crawlers, etc. |
|
Se entendi a proposta da seed, é preencher o banco com dados pré-definidos. O problema dessa abordagem é que são dados falsos, mas podemos começar a testar a modelagem com eles antes de inserir dados reais. |
Achei a modelagem inicial ok. O único comentário sobre ela é que eu sugiro termos ids separados dos ids dos órgãos governamentais (o caso das tabelas candidato e partido). A modelagem ficaria algo como:
Para a criação das seeds e para a criação dos migrations eu sugiro que a gente use o db-migrate. |
Por mim está tudo OK somente optaria for fazer logo uma API em vez de um site estático pois o mesmo terá constantes atualizações. Uma estrutura de projeto que vem funcionando muito bem para mim é esta:
|
Coloquei na wiki do projeto: https://github.com/codeforsaopaulo/assimfalouocandidato/wiki/Arquitetura:-Vis%C3%A3o-Geral |
pensei em manter o banco de dados integro para aquela eleição e não para muitas eleições, para manter o mais simples possível
fiquei na dúvida também, mas preferi deixar uma tabela para ficar bem didático para quem for dar manutenção (ao invés de usar alguma feature do banco para manter integridade)
done
pelo o que entendi ficou decidido que na nossa página teria links para páginas parceiras ou públicas que teriam esse conteúdo, certo?
a ideia é ter uma forma rápida de alimentar com dados reais os dados dos candidatos. algo que seja fácil das pessoas colaborarem também. pensei num arquivo de seed, que é fácil de editar via github direto. podemos usar o faker para teste, mas ai é outra coisa.
done |
@alanhoff se separarmos a parte de business da infra, a API e Web (site) são só apresentação do mesmo dado e lógica. indo nessa linha, sugiro a estrutura do nodebase, que fica claro o papel de business (models, repositórios, etc) e o que é camada de visualização/interação (infra\service, infra\web, infra...) mas confesso que no final tenho pouco apego à estrutura do projeto. fica o que o pessoal achar melhor. |
Descrição da arquitetura
Lista dos candidatos (core)
Essa parte da arquitetura é responsável por guardar e garantir os dados alimentados de maneira manual. É através dessas informações que:
Inicialmente não há necessidade de UI para a manutenção (CRUD) desses dados, sendo mantido via um arquivo de seed (ex: http://davidmles.com/blog/seeding-database-rails/)
Bando de dados
Tabela: candidato
Tabela: candidatura
Tabela: partido
Tabela: candidato_link
Tabela: tipo_link
Info: é importante manter as tabelas normalizadas e suas constraints ligadas entre os relacionamentos, garantindo que os dados aqui não sejam corrompidos. Outras tabelas, como as do crawler, talvez não necessitem do mesmo rigor.
Client / UI: Home, páginas e filtros [~/client]
[TBD]
Crawler 1: Posts da página do candidato [~/crawler/posts]
Atualiza quais os posts de cada página (no FB) de cada candidato nos últimos N dias.
Bando de dados
[TBD]
Parametros
Crawler 2: Engajamento do post [~/crawler/likes]
Atualiza quantos likes e quantos comentários cada post tem.
Bando de dados
[TBD]
Parametros
Apêndice
Padrão para o bando de dados:
The text was updated successfully, but these errors were encountered: