Contactando é uma aplicação web ASP.NET Core (TargetFramework: .NET 10 / net10.0) para gerenciar contatos, pipelines de vendas (deals)/Kanban, tags, locais e usuários multi-inquilino (tenants). O projeto utiliza Entity Framework Core com Npgsql para PostgreSQL, Identity para autenticação, e bibliotecas auxiliares como AutoMapper, CsvHelper e ClosedXML para mapeamento e importação/exportação.
Este README descreve como configurar, compilar, executar e implantar a aplicação em ambientes locais e com Docker.
- Tecnologias
- Estrutura do repositório
- Pré-requisitos
- Configuração (variáveis e secrets)
- Build e execução local
- Migrations e inicialização do banco
- Execução com Docker
- Tarefas comuns (migrar, seed, export/import)
- Arquitetura e responsabilidades
- Pontos de atenção
- Exemplos de string de conexão PostgreSQL
- Troubleshooting comum
- Licença
- .NET 10
- ASP.NET Core
- Entity Framework Core (Microsoft.EntityFrameworkCore + Npgsql)
- PostgreSQL
- ASP.NET Core Identity
- AutoMapper
- CsvHelper
- ClosedXML
- /ControleContatos - projeto principal (código fonte, controllers, models, services)
- Controllers/ - controladores MVC/API
- Data/ - ApplicationDbContext, inicialização (DbInitializer)
- Models/ - entidades e view models
- Services/ - serviços de domínio (ex.: ContatoService, TenantService)
- ViewModels/ e Views/ - interface e modelos para views
- Program.cs - configuração da aplicação
- appsettings.json / appsettings.Development.json - configuração
- Dockerfile - imagem Docker para a aplicação
- Migrations/ - migrações EF Core
- .NET 10 SDK (dotnet 10.x) — instalar a versão compatível com net10.0.
- PostgreSQL (versão compatível; por exemplo 14/15/16)
- Optionais:
- Docker e Docker Compose (para execução em contêiner)
- dotnet-ef (ferramenta CLI) — recomendada para aplicar/gerar migrações localmente
As configurações ficam em appsettings.json e appsettings.Development.json. Valores sensíveis (credenciais do banco, senha do SMTP) devem ser mantidos fora do repositório: use User Secrets em desenvolvimento ou variáveis de ambiente em produção.
Principais chaves de configuração:
-
ConnectionStrings:DefaultConnection — string de conexão PostgreSQL, ex: Host=localhost;Port=5432;Database=controlecontatos;Username=appuser;Password=senha
-
EmailSettings — (Host, Port, User, Password, UseSsl, FromEmail, FromName)
-
FileUpload (MaxSizeBytes, AllowedExtensions)
- Restaurar pacotes e compilar:
cd ControleContatos/ControleContatos
dotnet restore
dotnet build -c Release- Executar a aplicação (modo desenvolvimento):
dotnet run --environment DevelopmentPor padrão, o Kestrel irá expor as portas típicas (ex.: 5000/5001). Verifique a saída do terminal para o endereço exato (http/https).
O projeto inclui migrações em Migrations/. Para aplicar as migrações localmente:
Instale a ferramenta CLI (se ainda não tiver):
dotnet tool install --global dotnet-efNo diretório do projeto execute:
cd ControleContatos/ControleContatos
# Atualiza o banco para a última migração
dotnet ef database updateSe precisar criar uma nova migração após alterar modelos:
dotnet ef migrations add NomeDaMigracao
dotnet ef database updateObservações:
- Caso o projeto contenha múltiplos projetos na solução, utilize
--projecte--startup-projectquando necessário. - O projeto possui um
DbInitializer(emData/DbInitializer.cs) que contém a lógica de seed; verifique o conteúdo e execute manualmente se necessário.
O repositório inclui um Dockerfile. Exemplo mínimo para construir e executar a imagem:
# Na raiz onde está o Dockerfile
docker build -t controlecontatos:latest .
docker run -e ConnectionStrings__DefaultConnection='Host=db;Port=5432;Database=controlecontatos;Username=appuser;Password=senha' \
-e ASPNETCORE_ENVIRONMENT=Production \
-p 5000:80 \
--name controlecontatos controlecontatos:latestSe usar Docker Compose, defina um serviço para o banco (postgres) e para a aplicação, garantindo que a string de conexão aponte para o serviço do PostgreSQL.
- Gerar migração:
dotnet ef migrations add NomeDaMigracao - Aplicar migrações:
dotnet ef database update - Executar apenas a API local:
dotnet run - Limpar e rebuild:
dotnet clean && dotnet build
- Controllers: endpoints HTTP e coordenação de requests
- Services: lógica de negócio reutilizável (ex.:
IContatoService,TenantService) - Data (ApplicationDbContext): configuração de modelos EF e relacionamentos
- Mappings: perfis AutoMapper
- Models: entidades do domínio (Contact, Deal, Tenant, Tag, etc.)
- Hubs: SignalR realtime (RealtimeHub.cs)
- Banco de dados: o projeto usa Npgsql/Npgsql.EntityFrameworkCore.PostgreSQL. Certifique-se que a versão do PostgreSQL seja compatível.
- Arquivos de upload:
wwwroot/uploads/profiles/ewwwroot/uploads/tenants/são pastas usadas para armazenar uploads. Garanta permissões corretas no ambiente alvo. - SMTP/Emails: as configurações de e-mail estão em
EmailSettings. Para envio em produção, use credenciais e serviço SMTP confiáveis.
Exemplo local (substitua valores):
Host=localhost;Port=5432;Database=controlecontatos;Username=appuser;Password=senha
- Erro ao aplicar migrações: verifique se a string de conexão está correta e se o banco está acessível.
- Erros de dependências NuGet: execute
dotnet restoree verifique se a versão do SDK é compatível. - Permissões de pasta (uploads): ajuste proprietário/permissões (chown/chmod) nos diretórios em ambiente Linux.
O repositório está licenciado sob a MIT License. Consulte o arquivo LICENSE para detalhes.