Seed é um projeto de template para construir sistemas com administrativos e até mesmo sites, o objetivo desse projeto é fornecer o esqueleto básico de um projeto dotnet core com uma API Rest, um FontEnd SPA Angular e um SSO com Identity serve 4, prover as camadas, as dependências básicas entre elas e pacotes principais como logs e acesso a dados.
Depois de clonado esse repositório, existe um projeto nele chamado Gerador.Gen.Core ele utiliza uma série de arquivos texto construídos com palavras chaves envolvidas pelo caracteres <##>, assim o gerador troca essas palavras por informações obtidas dos metadados de um banco de dados Sql Server, como nome de tabelas e tipos de dados. Ou seja, basta modelar o banco e depois especificar o nome das tabelas na classe ConfigContext método ConfigContextDefault que o gerador vai criar um projeto 100% funcional com autenticação, back-end customizável em front-end customizável capaz de fazer as principais operações de um CRUD. Toda a estrutura foi feita de forma muito granular possibilitando o reuso e customização em qualquer camada do projeto.
TableInfo = new UniqueListTableInfo
{
new TableInfo().FromTable("Sample").MakeBack().MakeFront().AndConfigureThisFields(new List<FieldConfig> {
new FieldConfig(){
Name = "descricao",
TextEditor = true
},
new FieldConfig(){
Name = "FilePath",
Upload = true
}
}),
new TableInfo().FromTable("SampleType").MakeBack().MakeFront(),
new TableInfo().FromTable("SampleItem").MakeBack().MakeFront()
}
Essa configuração está baseada em um script de exemplo igual a esse Sample.Seed.sql basta rodá-lo em algum banco de dados SQL Server e alterar a Connectionstring do arquivo appsettings.json do gerador.
A estrutura é dividida em vários repositórios independentes que são gerenciados também pelo gerador na classe ConfigExternalResources, ela vai apontar para os repositórios do git que representam os seguintes componentes:
- Arquivos de Template para o Back-end
- Arquivos de Templates para o Front-end
- Um Framework para o Back-end
- Um Framework para o Front-end
- Um esqueleto de projeto para um sistema administrativo
- Um esqueleto de projeto para um site convecional
- Um esqueleto de projeto para toda a solução de front ao back