O CoreMDFe é um sistema emissor de Manifesto Eletrônico de Documentos Fiscais (MDF-e) moderno, rápido e multiplataforma. Construído com foco em usabilidade (Heurísticas de Nielsen), ele suporta emissão normal, carregamento posterior, controle multi-empresa (Multi-Tenant) e atualizações automáticas silenciosas.
- Emissão de MDF-e: Suporte completo ao modal Rodoviário, com adição de NF-e, CT-e, controle de CIOT, Vale Pedágio e Seguros.
- Carregamento Posterior: Inclusão de DF-e em lote com controle inteligente de numeração de sequencial (Sefaz).
- Multi-Empresa (Multi-Tenant): Bancos de dados SQLite isolados por empresa.
- Auto-Atualização (Velopack): O sistema se atualiza sozinho sem a necessidade de intervenção do usuário, baixando pacotes diretamente do GitHub Releases.
- Multiplataforma: Roda nativamente em Windows e Linux.
- Logs Inteligentes: Integração com Serilog para registro de eventos e erros em arquivos rotativos (
.txt). - Prevenção de Múltiplas Instâncias: Uso de Global Mutex para evitar corrupção de banco de dados.
- Auto-Limpeza: Rotinas de background para manter o disco do cliente livre de XMLs intermediários inúteis e manifestos muito antigos.
- Framework Base: .NET 10.0
- Interface Gráfica: Avalonia UI (XAML Multiplataforma)
- Arquitetura: MVVM (CommunityToolkit.Mvvm) + CQRS (MediatR)
- Banco de Dados: SQLite via Entity Framework Core (EF Core)
- Comunicação SEFAZ: Biblioteca Zeus/DFe (.NET)
- Distribuição/Update: Velopack
- Logs: Serilog (Sinks: Console e File)
Para rodar e compilar este projeto na sua máquina, você precisará instalar algumas ferramentas globais.
- Instale o .NET 10 SDK.
- Instale a ferramenta do Entity Framework Core (para lidar com o banco de dados):
dotnet tool install --global dotnet-ef- Instale a CLI do Velopack (para empacotamento e distribuição):
dotnet tool install -g vpkClone o repositório, restaure os pacotes e inicie o projeto Desktop:
git clone https://github.com/Hacerfak/CoreMDFeApp.git
cd CoreMDFeApp/CoreMDFe.Desktop
dotnet restore
dotnet run
Se você for compilar e gerar as Releases usando um ambiente Linux, o sistema precisa de algumas bibliotecas de desenvolvimento e o vpk precisa de ferramentas do sistema operacional para manipular os pacotes AppImage. Instale-as via terminal:
# Em distribuições baseadas em Debian/Ubuntu:
sudo apt update
sudo apt install squashfs-tools libgdiplus libc6-dev
Sempre que alterar uma entidade no projeto CoreMDFe.Core, você deve gerar uma nova migration na camada de infraestrutura:
cd CoreMDFe.Infrastructure
dotnet ef migrations add NomeDaSuaAlteracao --startup-project ../CoreMDFe.Desktop
Nota: A aplicação do banco (Update) é feita automaticamente pelo sistema em tempo de execução via DbContext.Database.MigrateAsync() no momento em que o cliente loga na empresa (Tenant).
O processo de publicação utiliza o Velopack para gerar instaladores e arquivos de atualização diferencial (Delta). Siga o fluxo abaixo sempre que for lançar uma nova versão.
vpk pack) DEVE ser feito no mesmo sistema operacional de destino. Para gerar o instalador do Windows, você deve rodar o comando no Windows. Para gerar o instalador do Linux, você deve rodar o comando no Linux.
Abra o arquivo CoreMDFe.Desktop/CoreMDFe.Desktop.csproj e atualize a tag de versão. Esta é a "Fonte da Verdade" do sistema.
<PropertyGroup>
<Version>1.0.2</Version>
</PropertyGroup>
Abra o terminal (Powershell/CMD), navegue até a pasta CoreMDFe.Desktop e execute:
- Publicar (CMD):
set DOTNET_ROLL_FORWARD=Major
dotnet publish -c Release -r win-x64 -o ./publish-win
- Publicar (PowerShell):
$env:DOTNET_ROLL_FORWARD="Major"
dotnet publish -c Release -r win-x64 -o ./publish-win
- Gerar Pacotes Velopack:
vpk pack -u CoreMDFe -v 1.3.2 -p ./publish-win -e CoreMDFe.Desktop.exe --packAuthors "Eder Gross Cichelero" --packTitle "CoreMDFe" -i ./CoreMDFe.Desktop/Assets/icon.png
Abra o terminal de um ambiente Linux (ou WSL no Windows), navegue até a pasta CoreMDFe.Desktop e execute:
- Publicar (Publish Auto-contido):
export DOTNET_ROLL_FORWARD=Major
dotnet publish -c Release -r linux-x64 --self-contained -o ./publish-linux
- Gerar Pacotes Velopack: (Atenção: O executável no Linux não possui
.exe)
vpk pack -u CoreMDFe -v 1.3.2 -p ./publish-linux -e CoreMDFe.Desktop --packAuthors "Eder Gross Cichelero" --packTitle "CoreMDFe" -i ./CoreMDFe.Desktop/Assets/icon.png
O CoreMDFe é distribuído no Linux através de um formato universal (.AppImage). Dependendo da sua distribuição, você pode precisar instalar a biblioteca FUSE para permitir a montagem e execução do aplicativo:
- Ubuntu 22.04+, Pop!_OS, Mint e derivados recentes:
sudo apt install libfuse2
- Debian 12 e derivados:
sudo apt install libfuse2t64
Após instalar a dependência, basta dar permissão de execução ao arquivo (chmod +x CoreMDFe-*.AppImage) e dar um duplo clique para iniciar o sistema!
O sistema de auto-update do CoreMDFe lê diretamente as Releases do GitHub.
- Acesse a aba Releases deste repositório e clique em Draft a new release.
- Em Tag, informe a versão exata que você compilou (ex:
1.0.2). - Adicione um título e um changelog com as novidades.
- Na área de anexos (Attach binaries), arraste TODOS os arquivos gerados nas pastas
Releasesdo seu computador (Tanto os do Windows quanto os do Linux):
Setup.exe(Instalador Windows)CoreMDFe-1.0.2-linux-x64.AppImage(Instalador/Portable Linux)CoreMDFe-1.0.2-win-x64-Portable.zip(Portable Windows)CoreMDFe-1.0.2-win-x64-full.nupkgeCoreMDFe-1.0.2-linux-x64-full.nupkg(Pacotes de Atualização)- Arquivos
RELEASESeRELEASES-linux(Índices do Velopack)
- Clique em Publish release.
Pronto! Os clientes que já possuem o sistema verão o aviso de nova versão e o app fará o download da atualização de forma incremental e automática.
Desenvolvido com ❤️ e rigor técnico para entregar a melhor experiência na emissão de MDF-e.