12

Pitch: Larguei a ideia de SaaS e fiz um ERP local para MEI (.NET 10 + WinForms + SQLite)

Depois de ver vários microempreendedores ao meu redor controlando cliente, produto e venda em planilha (ou de cabeça mesmo), resolvi fazer um ERP simples, focado só no que o MEI realmente precisa no dia a dia — sem tentar ser um sistema gigante e genérico.

Por que desktop e não SaaS

A decisão que mais me marcou no projeto foi essa: nada de nuvem, nada de mensalidade, nada de dependência de internet. O banco (SQLite) fica no computador do usuário, ele escolhe até a pasta onde os dados ficam salvos. Baixou, instalou, já tá usando.

Isso trouxe um problema interessante: comecei pensando em SQLite fixo, mas deixei a camada de persistência preparada atrás de interfaces de repositório, para poder migrar para MySQL no futuro sem reescrever a aplicação — só troca a implementação.

Stack e arquitetura

  • .NET 10 / Windows Forms (MDI)
  • SQLite como banco local
  • 4 camadas: Domain, Infrastructure, Application, UI
  • Repositórios por interface (IClienteRepository, IProdutoRepository, etc.)
  • Tudo async/await, valores monetários sempre decimal
  • Erros de regra de negócio via exceção de domínio própria, nunca exceção genérica

O que o sistema faz

  • Cadastro de clientes, fornecedores, produtos e serviços
  • Venda de produtos e venda de serviços separadas (são fluxos e obrigações fiscais diferentes: NF-e x NFS-e)
  • Orçamentos, com conversão em venda
  • Controle de estoque
  • Relatórios básicos do negócio
  • Geração de um XML interno (não é a NF-e oficial — isso eu deixo bem claro na descrição, porque não quero confundir ninguém: a emissão fiscal continua responsabilidade do usuário)
  • Backup/restauração do banco

Sobre a distribuição

Publiquei na Microsoft Store em vez de distribuir instalador solto — resolve assinatura de código, atualização automática e dá uma camada de confiança pra quem vai instalar um sistema desconhecido no computador de trabalho.

Link: https://apps.microsoft.com/detail/9P3PB6ZRXMBB

Manual do Usuário: www.martelli.dev.br/Manual_do_Usuario

Ainda é uma versão inicial (a parte de nota fiscal, por exemplo, hoje só gera o XML pra conferência/exportação manual — emissão automática via API é o próximo passo). Feedback de quem manja de gestão pra pequeno negócio, ou crítica de arquitetura mesmo, é bem-vindo.

Carregando publicação patrocinada...
1

Mano, a forma de divulgação muda um pouco já que o estilo de negócio agora é o B2B, não sei se já teve o seu primeiro cliente, mas boa parte deles não está navegando, é interessante entrar em contato direto com pequenos negócios, descobrir qual sistema utilizado por eles e tentar conseguir ao menos fazer uma apresentação.

Sorte nessa empreitada mano!

1

Valeu, boa observação! Faz total sentido — grande parte desse público não tá em fórum nenhum. Vou tentar contato direto mesmo, ir em pequenos negócios da região perguntar o que usam hoje antes de tentar empurrar o sistema. Se você já passou por venda B2B assim, tem algum erro comum que vale eu evitar logo de cara?

1

Rapaz, vai depender de ti se isso é um problema ou não. Há um tempo atrás fiz um sistema sob demanda que exigia algo parecido com sua proposta mas com a regra de negócios voltada a logística, após a entrega percebi que poderia adequar isso a muitos outros setores, negociei com a empresa em si para citar ela como um caso de sucesso e cederia alguns benefícios, descontos etc

Por email não obtive retorno algum, através de anúncios também não, precisei abordar pequenos comerciantes o que é bem sofrido na minha humilde visão, muitos só dizem que não é necessário por temor de estarem sendo enganados, outros são extremamente secos e alguns simplesmente dão esperança e desaparecem, quem conseguiu ter sorte foi meu pai ao divulgar para alguns amigos dele sem muita pretensão e o próprio cliente pra quem eu fiz o sistema me conseguiu mais um cliente...

Abandonei pelo mesmo motivo qual disse para ti que só vai ser um problema caso você veja isso como um problema, eu não sou um bom vendedor, eu queria só produzir meu código, mas sou horrível oferecendo um produto. Se você tiver boas habilidades com vendas mano pode te ajudar muito, de repente até mesmo firmar uma parceria que cuide dessa parte pra ti.

Mas não deixe que minha experiência te desanime, boa sorte nessa caminhada mano, o ponto é não desistir, cuide bem da carteira de clientes que conseguir, aprenda com seus erros e volta depois pra dizer como está se saindo. Sucesso!

2

Cara, muito obrigado por compartilhar essa experiência com tanto detalhe, ajuda muito mais que qualquer teoria genérica de marketing. O padrão que você viu (indicação funcionando, o resto não) bate com o que outras pessoas também falaram — vou focar nisso: cuidar bem de cada cliente que conseguir pra virar fonte de indicação, em vez de insistir em canal que não converte pra esse público.
E entendo bem essa parte de não curtir vender — também prefiro codar. Valeu mesmo, sucesso pra você também!

1

Projeto bem legal! Meu primeito projeto comercial tbm foi com .net winForms, com sqlite, tbm em camadas hahah tudo local, um crud que resolvia um problema que meu pai tinha pra gerenciar alguns clientes devedores, na feira que a gente trabalhava. Parabens pelo seu projeto, a ideia de fazer local e resolver o problema de forma rapida é interessante!

Caso queira dar uma olhadinha, o repo github(https://github.com/RuanSR/VS-CV2020)

2

Sim eu dei uma olhada, voce tinha um nicho especifico e eu também tento focar nisso, a idéia de oferecer um orçamento com vendas de serviço e de produtos e uma vez aprovada e efetivada o sistema separa para emitir duas notas para serviço e para produtos, além de validação de estoque, então levou tempo até tudo ficar redondinho e funcionando nesta parte, sem duvidas o estóque é o modulo que mais problematico. Eu tenho o sistema na cabeça como se fosse um lego gigante e é facil acrescentar novos modulos e atender outros nichos, o sistema está pensado para ser dessa forma.

1

Acredito que o mundo está caminhando para criação de soluções específicas. Se o cliente é MEI e é bem Micro, acredito que cabe algumas recomendações, tipo indicar que o banco seja salvo pelo menos em algum drive online.

1

Sim eu tenho uma mensagem que aparece sempre sugerindo o Backup, como é banco local deixei sem criptografia, por que vai que o MEI esquece a senha como vai resgatar depois? Tambem deixei livre para abrir o banco em outros aplicativos porque os dados é do MEI e não do app.

1

Atualmente deselvonvi uma aplicao desktop multiplataforma usando tauri, rust e duckdb. Experiencia bem legal, a atualizacao pega do github release. Mas preciso notarizar na microsoft ou algo do tipo. Vou da uma lida no link que voce deixou.

1

Interessante, entrei nesse de criar app local first, fiquei curioso sobre a parte de pegar atualizar via github release, seria um autoupdate?

1

A certificação foi tediosa, pra deixar tudos nos trinks, kkkkk, toda a papelada em si é dificl de conseguir, mas ainda sim a parte mais dificil é vender, não tenho duvida!

1

Muito massa a iniciativa, cara. Em um cenário onde quase tudo virou SaaS com assinatura mensal e uma stack desnecessariamente complexa pra coisas simples, ver alguém apostando no básico bem feito (local-first, WinForms e SQLite) é até um alívio.
A sacada de distribuir pela Microsoft Store foi excelente. Além de resolver a parte de updates, tira de cara aquele atrito chato do SmartScreen / Windows Defender apitando que o executável baixado é suspeito — o que assusta muito usuário comum.
Uma dúvida prática: como o público MEI costuma ser bem leigo com backup e troca/formata computador sem lembrar de salvar nada, você pensou em colocar algum alerta de backup ao fechar o app ou sugerir salvar o arquivo .db direto na pasta de sincronização do OneDrive/Google Drive do usuário?
Parabéns pelo projeto e pela sobriedade técnica nas escolhas!

1

Valeu demais, cara! Esse tipo de feedback é ótimo de ouvir, principalmente vindo de quem entende a dor de tentar simplificar em vez de complicar.

Sobre a Store: foi exatamente por isso que optei — tirar o atrito do SmartScreen e resolver update automaticamente foi decisivo.

Sobre backup: pontuou uma dor real, o MEI é o público que mais perde dado por não ter cultura de backup. Hoje já tenho avisos de backup implementados (com prazos ajustáveis) e a base fica salva em Meus Documentos, justamente pra ficar bem visível e claro pro usuário onde os dados estão. Além disso, o usuário pode escolher onde quer fazer os backups (dá pra apontar pra pasta do OneDrive/Drive sincronizada, por exemplo), e a restauração também é simples, com validação pra não correr risco de corromper os dados depois de uma atualização.

Valeu pela dica e pelo elogio!

1

Amigo, não quero te desanimar, mas apenas passar um pouco da experiência que tenho vivido como programador e sócio em uma software house que desenvolve ERP para pequenas e médias empresas.

Nós hoje temos dois softwares desktop, um mais completo e outro mais "lite", ideal para pequenas empresas ou MEI.
O que tenho visto é de os clientes atuais e os novos quererem um software web para usarem no celular e até fora da empresa, nem todos tem como investir em um computador bom ou até tenham "licença" do Windows para baixar direto da loja do Windows (se eu tiver falado besteira nesta parte, por favor me corrija).
O cara que é MEI, "as vezes" ele tem um celular e um sonho, não tem funcionários e acaba que não tem muito tempo ou conhecimento para usar um computador (não vejo que é difícil usar um computador, mas as pessoas mais antigas tem dificuldade), fora que os mais novos que estão entrando no mercado agora não sabem operar um computador, infelizmente.
Isto que estou falando não quer dizer que você não vai conseguir mercado, você vai sim, mas vai esbarrar nestes questionamentos:

  • Da para acessar no celular?
  • Eu consigo acessar de casa?

Continue o seu projeto, mas pense a médio prazo pra criar uma segunda solução web/mobile complementar ou integrada a sua.

Em relação a emissão de notas, me procura que te ajudo, te dou alguns meses grátis na minha API de notas:
https://dadosjah.com.br/
Se precisar de dicas e tudo mais estou a disposição.
Caso queira conhecer o meu ERP "lite", pode acessar o link abaixo e baixar:
https://notalivre.com.br/

1

Muito obrigado pelo retorno detalhado, isso é experiência de quem já viveu o mercado, vale ouro pra quem tá começando.
Faz total sentido o que você trouxe sobre acesso via celular/web. É uma dor real, principalmente pro público MEI que você descreveu. Hoje meu foco é justamente entregar uma solução desktop simples e barata pra quem já tem um computador — mas web/mobile é algo que já está no radar como próximo passo, não pra agora, mas pra médio prazo mesmo, como você sugeriu. Prefiro validar bem o desktop primeiro, aprender com os clientes reais, e só depois pensar em uma versão web complementar (ou até migrar parte da arquitetura pra isso).
Sobre a nota fiscal, hoje meu plano é gerar o XML pro usuário subir manualmente, mas ter uma opção de emissão automática via API é exatamente o próximo nível que quero oferecer.
Vou dar uma olhada no NotaLivre também, sempre bom ver como outras soluções resolveram os mesmos problemas que estou enfrentando agora.
Valeu mesmo pela disposição em ajudar!

1

Eu teria cautela em iniciar com app instalado em desktop.
O perfil que vc quer atingir, muitos nem tem computador.
O ideal seria um mobile first, com foco em tarefas automatizadas. O pessoal não tem tempo de manter tudo alimentado o tempo todo. Eu focaria em questões que ele nao poderia deixar de fazer: nota fiscal, gerador de orçamento com compartilhamento com 1 toque na tela, open finance... Tem sistemas com dezenas, talvez centenas de recursos, que só mantem o cliente por conta de nfe. O cliente não usa mais nada.

Sobre o SQLite: para mim o desempenho foi baixo quando precisava avaliar maiores volumes de dados. Mas otimizando talvez dê para contornar. Isso em 2016. Talvez hj esteja melhor, até pq os computadores são mais rápidos.

MySQL: a licença não te permite distribuir o mysql em instaladores. Vc teria que orientar o cliente a instalar separadamente.

Abraços e boa sorte.

1

Valeu pelo feedback, pontos bem pertinentes.

Desktop vs mobile: a escolha por desktop não foi por ignorar o perfil do público, foi decisão consciente de escopo pro MVP. MEI que já tem um PC/notebook em casa (mesmo que velho) prefere ferramenta de gestão rodando ali — é onde ele emite nota, controla estoque, olha relatório. Mobile-first faz muito sentido pra tarefa pontual e rápida (compartilhar orçamento, checar saldo), mas cadastro de produto, controle de estoque, relatório de venda... digitar isso no celular é sofrimento. Meu plano é o desktop ser o "centro de operação" e ter app mobile focado só nas tarefas que você citou (orçamento com share de 1 toque, consulta rápida). Não é mobile-first, mas também não é mobile-never.

Automação / recursos que "prendem" o cliente: concordo 100%, e é exatamente por isso que nota fiscal (NF-e/NFS-e) é prioridade de curto prazo, não feature de "versão 5.0". Já tenho a interface preparada (INotaFiscalExporter) pra sair do XML manual e ir pra emissão automática via API assim que fizer sentido financeiro. Orçamento com compartilhamento de 1 toque é ótima sugestão, vou colocar no radar — é exatamente o tipo de coisa que justifica abrir o app todo dia, meu maior risco hoje é virar "mais um sistema que abre uma vez por mês".

SQLite: pra MEI single-user, volume de dados é outra categoria de problema (nunca vai chegar nem perto do que você via em 2016). Mas guardo a ressalva — se o app crescer pra multiusuário ou volume alto, a arquitetura já isola isso em repositórios, então trocar o provider não quebra o resto da aplicação.

MySQL: boa pegada, e você tem razão sobre a licença de distribuição — não dá pra embutir o MySQL Server no instalador sob GPL sem cair em obrigações de licenciamento chatas pra um produto pago. Provavelmente vou pra PostgreSQL quando/se sair do single-user (licença mais permissiva pra esse cenário) ou mantenho SQLite com replicação simples. De qualquer forma, é decisão que só vou tomar quando o problema aparecer de verdade — não adianta complicar a stack agora.

Valeu mesmo pela visão de quem já bateu cabeça com isso. Abraço!