Empacotando e vendendo um aplicativo Node.js o caso do EmailEngine!
Texto original em inglês, escrito pelo criador do EmailEngine Andris Reinman.
Ele e criador do Nodemailer(o pacote de envio de emails mais usando no Node)
EmailEngine é um software de código livre para ser lido, mas não aberto!
Eu vendo um software de servidor para download chamado EmailEngine . EmailEngine, quando iniciado, executa um servidor web simples que serve um painel e uma API. Se você fornecer credenciais de qualquer conta de e-mail para o EmailEngine, ele abrirá uma sessão IMAP para essa conta e a indexará continuamente. O EmailEngine enviaria a você um webhook sobre isso sempre que algo mudasse nessa conta. Então, em geral, o EmailEngine funciona como um cliente de e-mail. Mas, em vez de uma GUI, possui a API REST . E, em vez de notificações na área de trabalho, ele envia webhooks . E em vez de algumas contas de e-mail, ele pode processar milhares de contas.
Sob o capô, EmailEngine é um aplicativo Node.js regular. Ele usa a estrutura Hapi para o servidor API, BullMQ para filas internas, Nodemailer para enviar e-mails, etc. Para os usuários, é um único executável que você pode baixar e executar em seu servidor ou um contêiner docker que pode executar em sua infraestrutura de contêiner . A maioria dos usuários do EmailEngine não sabe nada sobre o Node.js, e eu não o anuncio como um software específico do Node.js. Para os usuários, é um aplicativo que você inicia e com o qual interage por meio de uma API REST.
EmailEngine não está completamente fechado, pois todo o código-fonte é hospedado publicamente no GitHub.
https://github.com/postalsys/emailengine?ref=docs.emailengine.app
Então quem quiser pode auditar os arquivos para ver se não está fazendo nada suspeito. No entanto, não é de código aberto, mas "visualize o código-fonte" ou como quiser chamá-lo.
Tamanho do arquivo
O tamanho do aplicativo distribuído é de cerca de 60 MB e o executável instalado é um pouco maior, cerca de 80-90 MB. Sim, isso não é 4 MB, mas também não é tão alto, considerando que inclui um enorme sumidouro chamado pasta node_modules. O tamanho do executável seria muito maior, mas o pkg permite o uso de compactação nos arquivos do aplicativo ( pkg --compress Brotli). Demora cerca de 10 minutos para compactar tudo no meu M1Pro, mas a diminuição do tamanho do arquivo vale a pena, pois o executável sem compactação ficaria em torno de 200 MB.
Leia o texto completo para entender.
https://docs.emailengine.app/packaging-and-selling-a-node-js-app/