Skip to content

Sistema de controle de contatos com autenticação, listagem, e alteração de contatos. Salve seus contatos, modifique, e gerencie com facilidade e praticidade

License

Notifications You must be signed in to change notification settings

Xcode-sketcher/Contactando

Repository files navigation

Contactando

Resumo

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.

Índice

Tecnologias

  • .NET 10
  • ASP.NET Core
  • Entity Framework Core (Microsoft.EntityFrameworkCore + Npgsql)
  • PostgreSQL
  • ASP.NET Core Identity
  • AutoMapper
  • CsvHelper
  • ClosedXML

Estrutura do repositório (resumo)

  • /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

Pré-requisitos

  • .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

Configuração

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)

Build e execução local

  1. Restaurar pacotes e compilar:
cd ControleContatos/ControleContatos
dotnet restore
dotnet build -c Release
  1. Executar a aplicação (modo desenvolvimento):
dotnet run --environment Development

Por 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).

Migrations e inicialização do banco

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-ef

No diretório do projeto execute:

cd ControleContatos/ControleContatos
# Atualiza o banco para a última migração
dotnet ef database update

Se precisar criar uma nova migração após alterar modelos:

dotnet ef migrations add NomeDaMigracao
dotnet ef database update

Observações:

  • Caso o projeto contenha múltiplos projetos na solução, utilize --project e --startup-project quando necessário.
  • O projeto possui um DbInitializer (em Data/DbInitializer.cs) que contém a lógica de seed; verifique o conteúdo e execute manualmente se necessário.

Execução com Docker

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:latest

Se 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.

Tarefas comuns

  • 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

Arquitetura e responsabilidades

  • 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)

Pontos de atenção

  • 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/ e wwwroot/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.

Exemplos de string de conexão PostgreSQL

Exemplo local (substitua valores):

Host=localhost;Port=5432;Database=controlecontatos;Username=appuser;Password=senha

Troubleshooting comum

  • 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 restore e 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.

Licença

O repositório está licenciado sob a MIT License. Consulte o arquivo LICENSE para detalhes.

About

Sistema de controle de contatos com autenticação, listagem, e alteração de contatos. Salve seus contatos, modifique, e gerencie com facilidade e praticidade

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors