Categoria: Projetos

  • Exemplo de App Ionic – Hackathon

    Exemplo de App Ionic – Hackathon

    Disclaimer: O objetivo deste post é tão simplesmente compartilhar o projeto que possa ser útil para alguém que está precisando ou quer aprender um pouco de Ionic. É um projeto feito em poucas horas, durante um hackathon, então não espere pelas melhores práticas. Para dúvidas mais complexas, entre em nosso grupo de Design e Programação, no Facebook.


    Veja o projeto no Github:

    Star

    No último final de semana (29 e 30 de Setembro de 2018), participei do Hackathon do Shopping Center Recife. Devido a um erro da desorganização, acabei ficando em um grupo que não haviam outras pessoas que tivessem ao menos noção de programação (enquanto havia grupo composto inteiro por pessoas que sabiam programar), de forma que acabei programando sozinho durante cerca de 20 horas. Por outro lado, o restante do meu time conseguiu me auxiliar fazendo a apresentação e com uma ideia que poderá ser muito valiosa para o projeto de algumas pessoas, que irei explicar abaixo.

    Equipe, da esquerda para a direita: Eu, Marcos Lemos, Pedro Affonso, Suellen Sales e Helton Portela

    O projeto

    Diferente do que foi referido pelo edital do Shopping, que afirmava buscar uma solução de “relacionamento com o cliente”, o objetivo principal era encontrar uma forma de conseguir dados mais assertivos sem a necessidade direta de contatos com o lojista. Esses dados seriam analisados e entregues de forma a ajudar o Shopping a criar novas campanhas. Tudo sem diminuir faturamento.

    Para isso, eu pensei que poderia desenvolver uma versão do aplicativo do Shopping, que já existe, e melhorar, otimizar, deixa-lo mais fluido e com mais opções. Inicialmente, pensei em integrar o Google Indoors, mas GPS não funciona corretamente no Shopping e o Indoors não está disponível por um tempo limitado. Algumas equipes até sugeriram algo parecido, na entrega, mas apenas sugestão, pois seria inviável descobrir a localização atual em ambiente tão contido apenas por triangulação. Enfim, pensei em envolver compartilhamento em mídia social também, para engajamento, etc.

    No final, o projeto consistiu em uma nova versão do aplicativo, com um chatbot amigável, um clube de vantagens que armazena informações da nota fiscal (pelo QRCode) e a proposta de manipulação desses dados no backoffice, além de campanhas direcionadas pelo mesmo. Alguns dos outros grupos usaram propostas bem similares.

    No fim, eu decidi que o principal seria apresentar os dados em um backoffice. Minha ideia inicial era realmente preparar um BI, ou o começo do que poderia ser um, usando os dados do aplicativo reformulado. Porém, os outros integrantes de minha equipe tiveram a ideia de criar um clube de vantagens que pegasse o código do QRCode do cliente, pegando assim dados bem mais específicos sem a necessidade de acordos com o lojista, em trocas de pontos que poderiam ser trocados por serviços do shopping ou de parceiros mais próximos (como o cinema), que admito ser melhor que a minha ideia original.

    Se por um lado, eu decidi fazer algo que pudesse se tornar um BI (Business Intelligence), por outro, o tempo não foi favorável. Sendo o único desenvolvedor, eu fui obrigado a dividir meu tempo entre aplicativo, backoffice e banco. Logo, não esperem um código tão bem escrito. Lembre-se que é um projeto desenvolvido do zero em algumas poucas horas.

    Tecnologias

    Para agilizar o desenvolvimento e ainda poder ser algo demonstrável em tempo real direto no navegador (para exibir no telão), o projeto do app foi feito em Ionic 3, famoso framework Cordova para desenvolvimento de aplicações em vários dispositivos. Graças a isso, ainda conseguia testar em tempo real no Android e no iOS. Fiz o possível para implementar o máximo de funcionalidades possíveis.

    Para o backoffice, entretanto, por questão principalmente de tempo, apostei no PHP e MySQL, não pela experiência em si, apesar de conhecer bem a linguagem, mas porque eu poderia simplesmente usar meu servidor de site comum e não ter que configurar um ambiente. Dessa forma, perdi menos tempo. Mesmo assim, só consegui fazer 20% do que eu planejei para essa parte.

    Ionic

    Usei e abusei da interface padrão, com poucas modificações e atualizações, observando sempre a documentação quanto ao uso dos componentes. Aqui cabe um outro disclaimer: apesar de já trabalhar há cerca de um ano com Phonegap/Cordova e já ter feito algumas brincadeiras nele, estou mexendo no Ionic há apenas duas semanas, então perdoe-me se eu estou usando alguma má prática em seu código (ao menos os nomes das páginas eu já adianto que estão bagunçadas).

    Sabrina – A Chatbot

    Sabrina foi o nome escolhido para a chatbot. Por quê? Sei lá, veio na cabeça. Basicamente ela usa Watson para poder realizar a conversa. Com algumas poucas diferenças, caso você queira saber mais como funciona essa parte de chatbot, consulte o outro artigo onde eu explico como criar um chatbot simples usando a ferramenta da IBM. Ainda resolvemos dar uma identidade para e os outros membros da equipe a treinaram para responder perguntas de forma a convidar as pessoas que não estão no shopping e ainda sugerir lojas em caso de perguntas menos específicas.

    Obs. Abaixo, vai ter uma área de testes. Se você for testar em nosso site, lembre-se que usamos o plano de 30 dias grátis, então dependendo da data que você ler este artigo pode não funcionar. Também só tivemos tempo para responder uma série limitada de perguntas. E não treinamos a conversação mais complexa (apesar de que você vai encontrar no código trechos que mostra que estava sendo desenvolvido).

    Sabrina Chatbot Watson

    Clube de Vantagens

    A parte do clube de vantagens visava o login fácil pelo Facebook (está implementado em beta no código, mas comentado, pois só funciona compilado). Através disso, pegaria o máximo de informações públicas possíveis, para entender os gostos do cliente. Claro que estou ciente que as novas políticas do Facebook exigem uma aprovação, mas isso não seria problemas para um dos maiores shoppings do Brasil.

    Após esse login, entraria a opção de ver suas informações, compartilhar com amigos, através de um código promocional (que dá pontos), e que ainda daria alguns feedbacks gráficos para estimular uma ludificação. Os valores dados seriam sempre grandes, na margem mínima de 100 pontos para compras menores e 500 pontos para compras maiores. Essa quantidade foi pensado do ponto de vista de marketing, pois pontos maiores dão a sensação de que o retorno é maior, mesmo que a exigência para a conversão em um serviço ou produto fique na casa das dezenas dos milhares.

    QR Code e NFCe

    Por outro lado, havia a necessidade de ler o QRCode e acessar os dados de uma NFCe sem um certificado digital. O maior problema que enfrentamos é: como fazer isso através do servidor, se as Sefaz bloqueiam o cross-origin (ao menos a Sefaz de Pernambuco), retornando o erro “Cross-Origin Read Blocking (CORB) blocked cross-origin response“? Percebi que os outros grupos que envernizaram por esse lado tiveram esse problema e, até onde eu vi os códigos, ninguém realmente resolveu o problema. Então, me atentei que eu simplesmente poderia “enganar” o site da Sefaz para acreditar que eu na verdade sou um usuário direto do navegador. Como? Simplesmente declarando um cabeçalho como Firefox! O trecho fica assim (PHP):

    Obs. Eu não testei com NFCe de outros estados.

    O resultado foi exatamente a XML da NFCe. E como entender e ler? Bem, para isso basta usar o DOM Document, mas se você quiser entender mais sobre como funciona esse processo de nota fiscal eletrônica, leia o artigo que eu escrevi anteriormente sobre o assunto.

    Já o QRCode, o próprio Ionic tem uma solução para isso, e foi implementada, mas me deparei com um problema: Só funcionava corretamente no Android e iOS e eu precisava apresentar tudo no navegador. A solução? Encontrei uma biblioteca de Javascript puro que fazia a leitura do QRCode pela webcam. Então tive que aprender como integrar Javascript puro a um projeto Ionic. Nem foi tão difícil, está compreensível se você olhar a página do QRCode no projeto. O único problema é que a webcam não tem autofoco, então há uma margem curta para que seja lido corretamente o QRCode. Por conta disso, no navegador, pela webcam, eu só consegui ler os QRCodes que estavam sem amassados e bem nítidos. Aliás, testamos uma nota emitida em contingência e, por algum motivo, a URL do QRCode retornava chave inexistente (?).

    Após ser lido, o QRCode retorna uma mensagem com o a pontuação que você efetivamente fez, e retorna também o valor da nota. Ainda envia os detalhes da nota para o backoffice.

    Backoffice

    O backoffice captura os dados e exibe para o usuário. No projeto, os gráficos que estão mostrados no dashboard não são reais, foram colocados manualmente, mas os que mostra as vendas é atualizado em tempo real assim que a pessoa coloca o QRCode. Os nomes dos compradores estão censurados no front, eu sei que deveria ser no back (aliás, já armazenado sem o nome), mas não tive tempo de pensar em segurança e já era 3 da manhã no momento que eu comecei a implementar isso.

    Por conta disso, eu não tive como implementar tudo o que eu queria, de forma que tem mais exemplos do que efetivado.

    O meu intuito era usar todos os dados capturados, inclusive o retorno da Sabrina (a chatbot) para criar índices de relevância de 0 a 100. Exemplo:

    1. João, identificado como usuário J72, perguntou sobre compras de sapato a Sabrina, isso dá 1 ponto na subcategoria calçados para J72, pela intenção de compra.
    2. Se J72 efetivamente comprar o sapato, ele receberá 2 pontos na subcategoria calçados, pela compra realizada.
    3. O cruzamento entre a intenção e compra realizada dá ainda mais 3 pontos, na subcategoria calçados.
    4. Ao todo o processo do usuário J72 resultaria em 5 pontos de relevância para o usuário J72, que seria somado aos seus outros pontos, caso já tivesse.
    5. Quando atingir 70 pontos, na subcategoria calçados, esta será considerada como categoria de relevância para o usuário J72.

    Com isso, a home, mostrada para o usuário J72 seria organizado de acordo com seus índices personalizados e campanhas direcionadas, direto pelo aplicativo e também por notificações, poderiam ser enviadas para os usuários do aplicativo, de acordo com suas relevâncias. Além de, claro, o resultado do acompanhamento dessa campanha.

    Exemplo de como funcionaria a criação de campanha direcionada

    Além disso, esses dados deveriam ser cruzados para sugerir a equipe de marketing, as melhores estratégias de acordo com o comportamento do grupo e em quais mídias seriam mais adequadas para investir em propaganda. Infelizmente, essa foi a parte que não deu tempo de desenvolver, pelos motivos supracitados. Mas, essa imagem, desenvolvida por outros membros da equipe, ajuda a ilustrar a lógica que seria aplicada para a criação do algoritmo. Vale lembrar que, as informações do Facebook, vinculados ao comportamento de compra, ajudaria e as conversas com a Sabrina e as bases de dados que o Shopping já possui, ajudariam a definir o comportamento do público.

    Finalizando

    Disponibilizei todo código desenvolvido, do backoffice e do projeto Ionic no Github, para caso você deseje experimentar ou apenas dar um olhada no código. Mas lembre-se que não vou fazer manutenção de nada, é apenas um exemplo para estudo:

    Star

    Entretanto, se você quiser apenas ver, testar o que foi demonstrado, você pode acessar o backoffice aqui, ou o aplicativo aqui. Caso abra o aplicativo em um desktop ou laptop, recomendo que você use o modo de device toolbar do Google Chome para visualizar corretamente -> Para isso, pressione CTRL+SHIFT+i (substitua ctrl, por command, no Mac) e clique no segundo ícone do canto superior esquerdo do console. Ou simplesmente veja o vídeo abaixo:

    Por que não vencemos? Talvez por não ter tanto tempo para explicar o projeto, talvez por não ter encontrado uma boa forma de demonstrar, ou simplesmente porque não é realmente tão interessante. Mas, de qualquer forma, rendeu um post para o blog, para o qual pode ser útil para alguém que esteja aprendendo Ionic ou qualquer outro tema aqui relacionado. Lembre-se de entrar no grupo do Facebook para tirar mais dúvidas.

    Obrigado para você que leu até aqui e obrigado a equipe que foi integrante desse projeto. Me siga no Twitter e Instagram e deixe seu like no Facebook.

  • Clearsale Start – Plugin Woocommerce Gratuito

    Clearsale Start – Plugin Woocommerce Gratuito

    Faça o Download pelo Github:

    Download

    Atenção: Este plugin não tem nenhuma relação comercial com a Clearsale. Foi criado unicamente para auxiliar pessoas que desejam facilitar a integração com sua loja no Woocommerce.

    Sobre

    Este plugin foi criado para facilitar a integração entre o Clearsale Start com o Woocommerce. A Clearsale é um famoso serviço que oferece soluções anti-fraude para e-commerces.

    Como desenvolvedor, meu objetivo foi criar uma solução de fácil instalação para usuários do Woocommerce e oferecer de forma gratuita e colaborativa para quem quiser ajudar na atualização.

    Estamos aguardando a aprovação do WordPress para adição no diretório.

    Requerimentos

    Como Funciona

    O plugin segue as informações disponíveis no manual de integração do Clearsale Start

    Ao contratar o Clearsale Start você deverá receber um e-mail como este, com os tokens de homologação e produção:

    Nas configurações do plugin, preencha os tokens de Homologação e Produção que foram enviados por e-mail pela Clearsale. Por padrão,o checkbox de homologação está marcado. Lembre-se que em modo de homologação os valores de retorno são fictícios.

    Configurações do Plugin

    Na página do pedido, você verá um botão roxo com a opção de escolher a forma de pagamento e colar a máscara do Cartão de Crédito (se for o caso). O plugin irá tentar reconhecer automaticamente, mas dependendo das formas de pagamento que estão instaladas em sua loja, pode ser que ele não detecte automaticamente. Otimizações poderão ser feitas em versões futuras.

    Após finalizar a homologação, desative o checkbox de homologação nas configurações. Durante a homologação, um alerta laranja indicará que você está utilizando em modo de homologação.

    Funcionou para você? Pense em fazer uma doação para mantermos atualizado

    FAQ

    Por que é um botão e não automático?

    A Clearsale cobra por pedido processado. Segundo a documentação ela não vai reprocessar o pedido se ele já o identificar lá, então o botão pode ser pressionado para um pedido já analisado que não será cobrado extra.

    Todavia, nem todo pedido você precisa fazer uma análise. Se você identifica um cliente recorrente, ou foi um pagamento pelo pagseguro ou foi um pagamento por transferência, não há necessidade de você gastar com essa análise, por isso o botão.

    Mais informações

    O plugin tenta detectar algumas informações através da leitura das atualizações do perfil. Para isso, ele irá tentar verificar o título da forma de pagamento e as notas do pedido. Ele pode não conseguir detectar a forma de pagamento dependendo do tipo de checkout/webservice que você está usando em seu site.

    Devido ao Woocommerce não separar número do endereço, o número da residência não está sendo passado para a Clearsale de forma individual, mas sim junto ao logradouro.

    Se você não usa o WooCommerce Extra Checkout Fields Plugin, altere o arquivo html-meta-box.php para mudar a fonte de dados.

  • BitMail – Projeto de Envio de Mailmarketing em Lote

    BitMail – Projeto de Envio de Mailmarketing em Lote


    Download

    BitMail é um aplicativo desktop para envio de e-mails em lotes, criado com a tecnologia Electron / NodeJS. Este projeto é de código aberto e ainda está em beta e diversas funcionalidades não funcionam direito e apresentam falhas com o uso em alguns servidores de e-mail.


    Star

    Sobre o Projeto

    Há duas semanas comecei a estudar NodeJS (em Dez de 2017) e, por consequência de interesse de criação de aplicativos para desktop, estudar um pouco de Electron. Apesar de já ter experiência com Javascript, estava interessado em entender a manipulação de arquivos locais.

    Como quando estudo algo prefiro criar um projeto minimamente útil, resolvi criar uma variação de um projeto que criei anos atrás para um cliente e que também é de código aberto, o PortilloMail (eu sei, não é um nome muito criativo), criado em PHP e compatível com a maioria dos servidores compartilhados.

    Como ainda estou novo em NodeJS, ainda preciso resolver alguns problemas, que vou citar abaixo, mas o aplicativo já é utilizável em diversas circunstâncias.

    Como Enviar E-mails?

    O BitMail foi feito para ser extremamente simples. Sua tela inicial possui todas as informações básicas necessárias para enviar um e-mail.

    A primeira coluna (da esquerda para a direita) refere-se ao remetente da mensagem. Basta colocar o nome de quem está enviando, a senha e o host.

    Por enquanto, estamos listando apenas o host Gmail e Outlook, porém, você pode optar por personalizar para configurar o SMTP da sua própria hospedagem. Com o tempo iremos atualizar com outros padrões de hospedagens mais famosas.

    A coluna do meio é referente a mensagem. Nela você coloca as informações básicas como Assunto e Mensagem (pode usar emojis) e deverá selecionar um arquivo CSV previamente configurado, que consta os e-mails e senhas dos destinatários.

    A última coluna é a coluna de envio. Nela você deverá digitar um e-mail para teste. Apenas após você confirmar o teste, o botão ENVIAR vai ficar funcional.

    A barra inferior é a barra de templates. O aplicativo permite que você crie arquivos HTML e os use como templates. Como a ideia é servir de mailmarketing, você mesmo pode criar o seu template. Leia aqui sobre como incluir seu próprio template. Se o quadrado preto estiver selecionado, isso quer dizer que você não irá utilizar nenhum template e irá enviar a mensagem do jeito que estiver dentro da caixa mensagem (inclusive com tags HTML).

    Para poder garantir que seu e-mail não fique preso em uma caixa de SPAM ou que você seja interrompido pelo limite da sua hospedagem ou servidor de e-mails, o aplicativo é limitado a 200 e-mails por hora. Você pode editar isso, tal como preencher as configurações da sua hospedagem, no PAINEL AVANÇADO.

    Antes de usar, é extremamente aconselhável que você leia o FAQ e saiba como preparar o arquivo CSV.

    Se você tiver interesse em como criar o seu próprio template, você também pode ler sobre isso aqui.

    Requerimentos

    Após a instalação do NodeJS, você vai precisar de uma série de bibliotecas para poder fazer compilar.

    Você pode baixar o NodeJS para Windows diretamente pelo site oficial ou pode usar o seguinte comando para distribuições baseadas em Debian (instalando também seu gerenciador de pacotes):

    sudo apt-get update
    sudo apt-get install nodejs
    sudo apt-get install npm

    Após a instalação do NodeJS, acesse o console e instale o Electron:

    npm install electron --save-dev --save-exact

    Para o envio dos e-mails, o pacote nodemailer se faz necessário. Para instala-lo, acesse o console e use:

    npm install nodemailer

    Por fim, para diminuir o código de leitura de arquivo, pois precisava que ele fosse síncrono e mais simples, resolvi usar o n-readlines. Provavelmente, em atualizações futuras não irei usar, mas por enquanto:

    npm install n-readlines

    Para poder compilar, acesse o console e na pasta onde você salvou o projeto, execute:

    npx electron .

    Pronto. Você agora já pode utilizar.

    Obs. A única biblioteca front-end utilizada, para facilitar o desenvolvimento, foi o jQuery. Além do jQuery e das bibliotecas node utilizadas, o resto foi programado por mim. Então peguem leve nas críticas.


    Follow @velhobit

  • Portillo Mail

    Portillo Mail

     


    Download
    Considere ajudar um humilde desenvolvedor.

    ou veja a lista de desejos na Steam.

     

    Existem pela internet diversos serviços de envio de emails em lote. Porém, a maioria possui um custo e você não tem exatamente todo controle sobre o serviço.

    Sempre achei que não fazia sentido pagar serviços por fora, quando já temos uma hospedagem e não enviamos todos os emails que temos direito, geralmente não chegamos nem perto disso. Procurei diversas soluções, a maioria eram clientes gratuitos para Windows ou sistemas com poucas opções ou que só eram gratuitos até um determinado ponto. Por que não há uma ferramenta de código aberto para isso? Os que encontrei, que eram realmente funcionais, possuíam muitas complicações e era difícil instalar em uma hospedagem compartilhada simples. A grande maioria exigia o uso de servidor privado.  Pensando nisso, e em alguns clientes que tinham essa necessidade, resolvi criar, no começo de 2015, um sistema que enviasse emails em lote.

    História

    Inicialmente, criei um pequeno sistema, para ajudar um amigo a enviar mensagens de final de ano, muito simples, que enviava emails utilizando o Mail(), do PHP, mas que ficava atualizando a página a partir de um comando Javascript a cada 30 segundos. Esse sistema funcionava, mas não era funcional, pois a máquina tinha que ficar ligada, enviando emails, e era complexo para deixar alguém mais leigo fazendo.

    Então eu pensei: Como será que os sistemas de mailmarketing pagos enviam emails sem derrubar o servidor?

    Pesquisei então as regras para evitar que os emails chegassem como spam, e li questões sobre autenticação do envio, exigência de opção de cancelamento, vi que os emails só poderiam ter um destinatário por vez, dentre outras questões.

    Então percebi que os serviços de mailmarketing, pagos, enviam um email a cada x segundo. Mas, sem acesso ao servidor, e sem ter que mandar o javascript dar um update, como eu poderia enviar emails?

    Então, eu relembrei de um método do PHP chamado exec(), que permite executar funções no servidor. O PortilloMail usa o exec(), para que o apache, do próprio servidor, execute novamente a página de envio. Porém, o servidor pode acabar sendo reiniciado, ou falhar, por não termos controle. Por isso, através de cálculo que resulta no horário do próximo envio, o sistema verifica se o email parou de ser enviado e você pode retomar o envio sem problemas.

    No começo de 2015, resolvi que eu deveria fazer o sistema e, em uma maratona pessoal, criei a primeira versão que foram tendo pequenas atualizações durante o ano. Essa primeira versão, no entanto, ainda era complexa para alguém sem experiência instalar e exigia que configurasse o banco de dados manualmente, que atualizasse o banco manualmente e diversas funções importantes ainda não estavam definidas, nem mesmo importava o .csv. Além de tudo, era feio e havia pouca usabilidade. Porém, funcionava.

    Primeira versão do PortilloMail

    A partir da metade de 2015 até a metade de 2016, me empenhei em um sistema de frente de loja em Java, por isso não tive muito tempo para atualizações. Após finalmente concluir o sistema e homologa-lo, eu retomei o projeto PortilloMail e coloquei mais novas funcionalidades, que resultou nesta nova versão 0.9 (ainda há coisas para uma próxima atualização, para eu considerar 1.0).

    Como instalar o PortilloMail?

    É fácil, é muito fácil, para eu, você e todo mundo cantar junto. E para facilitar ainda mais, fiz um vídeo passo a passo mostrando a instalação. Porém, se você quer fazer isso com mais calma, siga os passos descritos abaixo.

    Você vai precisar, pelo menos, da versão 5.4 do PHP. O método exec(), precisa estar habilitado no php.ini. Se por acaso der falha no envio do email, consulte sua hospedagem para verificar.

    Primeiro, clique no grande botão de download, lá em no começo da página, ou clique aqui. Será baixado o arquivo PortilloMail.zip, que possui todos os arquivos do sistema.

    Agora envie os arquivos para uma pasta no seu servidor / hospedagem. Você pode dar o nome que você quiser a essa pasta. Em seguida, descompacte a pasta.

    Uma vez enviado os arquivos, ainda no seu servidor / hospedagem, configure um novo banco de dados, defina-o um usuário, e dê previlégios a esse usuário. Se você sentir dificuldades em fazer isso, o vídeo acima mostra como fazer isso em uma hospedagem com cPanel. Caso sua hospedagem não possua o cPanel, você pode pedir ajuda ao suporte dela, pois é um processo muito simples.

    Pronto, agora você pode usar o instalador Wizard, do PortilloMail.

    Acesse o seu site, na pasta que você criou, mais “/instalador”. Por exemplo, se seu site é meusite.com, e você colocou os arquivos na pasta /mailing, você deverá acessar:
    http://meusite.com.br/mailing/instalador, no navegador de sua preferência.

    Você passará por todos os passos para a instalação, todas as instruções estarão no próprio instalador e são bem simples, ele é todo guiado. Se ainda sim sentir alguma dúvida, pode ver o vídeo acima onde eu preencho todos os dados.

    Por fim, o sistema irá finalizar a instalação excluindo a pasta instalador. Isso é feito para sua segurança e garantir que ninguém sobre-escreva seus dados. Após o término da instalação, você já pode acessar o sistema, acessando a pasta que você criou anteriormente.

    Como utilizar o PortilloMail?

    Assim que você entrar no PortilloMail, você já cai na página de emails enviados, que vai estar vazia, obviamente. Mas antes de começar a enviar emails, é necessário criar os grupos. Você precisará selecionar um grupo (ou todos) quando for enviar um email. Os contatos ficam armazenados em grupos, por questão de organização.

    Vá na página de grupos e crie o primeiro grupo. Apenas digite um nome e descrição e clique em Salvar. O grupo será adicionado automaticamente. você pode manipular grupos a qualquer momento.

    Agora que você já tem os grupos, você precisa de contatos. Há duas formas de adicionar contatos ao PortilloMail. Você pode adicionar um por um, através da página de contatos, ou você pode fazer o upload de um arquivo .csv.

    Como importar os meus contatos?

    A versão atual do nosso sistema de emailmarketing permite que você importe arquivos .csv. Para fazer a importação acesse a página de configurações.

    A formatação desses arquivos segue a regra “email;nome;telefone”, separado por ponto e vírgula ( ; ).

    Usando o seu aplicativo de planilhas eletrônicas favorito (como excel, calc, numbers), ou um sistema particular, formate seus contatos na ordem EMAIL, NOME e TELEFONE, não precisa colocar cabeçalho.  Exporte para CSV. Caso ele pergunte, selecione para separar as colunas por ponto e vírgula ( ; ), enquanto que as linhas são separadas por quebra de linha.

    Em seguida, escolha o grupo para onde os contatos serão importados. Por fim, selecione o arquivo .csv e clique no botão importar. Aguarde até que o arquivo seja importado e ele retornará a informação com o sucesso e os possíveis erros.

    Enviando Emails

    Hora da diversão, vamos enviar emails. Vá na página de Novo Email, selecione o email de envio e o grupo qual serão enviados os emails. Em seguida, digite alguns emails adicionais, caso você deseje que mais pessoas fora do grupo recebam os emails, e o assunto do email.

    O editor de texto é HTML, então sinta-se à vontade para formatar facilmente o e-mail da forma que você quiser. Utilize a opção Ferramentas>Código Fonte, caso você já tenha um layout pronto que você queira importar.

    Caso deseje fazer o upload de uma imagem, simplesmente vá em Inserir > Inserir/Editar Imagem e clique no ícone de pasta para selecionar a imagem no seu computador e adicionar ao texto.

    Por fim, clique no botão Enviar.

    Você será enviado, então, para uma página de confirmação. Você poderá visualizar o resumo dos dados do email, assim como pré-visualizar o email montado. Por questão de segurança, envie um email teste para você, digitando o email no campo e clicando em Enviar Teste e verifique como chegou. Caso esteja satisfatório, clique no botão Enviar Email e o sistema começará os envios.

    Você pode acompanhar o processo de envio através da tela Emails Enviados. Lá você pode acompanhar o status do envio, verificar quantas pessoas visualizaram o email, verificar quantas pessoas clicaram em algum link do email, ou retomar o processo de envio, caso haja algum problema com o servidor. Ainda é possível acompanhar quando foi enviado o último email do processo ou a hora que terminou os envios, se for o caso.

    Quando o email não foi enviado ou envio foi interrompido

    Quando os emails ainda estão sendo enviados

    Quando todos os emails já foram enviados

    Importante:

    Evite enviar duas ou mais mensagens ao mesmo tempo. Se fizer isso, diminua a quantidade de emails por hora, na tela de configurações pois ele considerará o multiplo de emails de acordo com a quantidade de mensagens que estão sendo enviadas.

    E agora? Qual o próximo passo?

    O PortilloMail não vai ficar parado. Existem planos para novas atualizações, que serão:

    • Cadastro de emails respostas
    • Cadastro de múltiplos servidores de envio
    • Automação no gerenciamento de horários de envio de emails
    • Envio de grupos simultâneos
    • Gráficos
    • Agendamento de Início de envios
    • Outras opções de importação de contatos
    • Versão desktop com envio de dados via FTP
    • Otimização de metadados para especificar tipo de email
    • Melhorias com verificação no instalador

    Caso você tenha alguma sugestão, fique à vontade para enviar um email para rodrigo@portillodesign.com.br, com o assunto PortilloMail. Você também pode buscar ajuda através da nossa página do Facebook, ou através de nosso grupo oficial de design e desenvolvimento.

    Como posso ajudar?

    Considere ajudar um humilde desenvolvedor. Para isso, você pode fazer uma doação, através do PagSeguro, ou ajudar doando um key code da Steam ou de algum aplicativo interessante.

    Veja a lista de desejos na Steam.

    Informações para Desenvolvedores

    O PortilloMail é de código aberto e protegido sob a licença Mozilla. Isso quer dizer que você pode reutilizar o código em projetos privados ou públicos, porém não poderá disponibilizá-lo com outro nome, sem as devidas referências e nem vende-lo. Você pode encontrar o código aberto completo através do GitHub, assim como suas atualizações intermediárias.

    Programadores: Sim, as variáveis e comentários estão escritos em português. Isso vai ser alterado nas próximas atualizações e serão escritos em inglês. O fato é que esse sistema foi criado rápido e com o tempo foi criando proporções maiores. Além disso, programei o sistema em meu tempo livre e o objetivo inicial, ao abrir o código, era ajudar novos programadores em seus estudos. Por esse mesmo motivo, a maior parte do código é procedural e possui lixos. Os lixos do código estão sendo corrigidos com as atualizações.

    Designers: Vocês pode modificar o arquivo css/estilo.css para personalizar a aparência do sistema. Por ter sido desenvolvido apenas por mim, até o momento, e ter que cumprir prazos, o CSS possui muito lixo e baixo reaproveitamente. Isso será melhorado com as futuras atualizações. Não foi utilizado nenhum tipo de framework CSS (sou contra) e seu uso será otimizado com futuras atualizações.

    Por favor, não retire a mensagem Powered By PortilloDesign, no rodapé.

    Obrigado por utilizar o PortilloMail. Seu feedback é o mais importante. Visite e leia mais do blog para notícias e informações sobre novos projetos.

  • Pacto de Confiança (Hackathon com NFC)

    Pacto de Confiança (Hackathon com NFC)

    O aplicativo Pacto de Confiança propõe-se a diminuir os custos quanto a monitoramento de detentos com regime semi-aberto. Com uma pulseira confortável e discreta, o detento deve fazer “checkins” constantes, com qualquer dispositivo móvel com tecnologia NFC. Um agente, com outra versão do software também pode abordar o detento e saber seu histórico e ficha em segundos.

    O app foi criado para o Hackathon Hacker Cidadão 4, onde, pelas regras, não se poderia criar um novo hardware para fazer o controle dos detentos em regime semi-aberto. O sistema possui duas partes, uma mobile, onde recebe os dados do detento e outra para Android, onde, a cada x horas, o detento precisa passar o smartphone em um dispositivo com chip NFC. Através do 3G, o app envia a geolocalização e o código do NFC, assim como informações de hora e foto tirada automaticamente na hora que é feita a conferência.

    O aplicativo está descontinuado e seu código fonte, para fins de estudos, pode ser baixado através do link: https://velhobit.com.br/arquivos/PactoPelaVida.zip.

    O dispositivo vai se encarregar de enviar sua localização, foto e horário, de forma a diminuir os custos e prover uma melhor qualidade de vida para aquele que busca a reintegração à sociedade. Se por acaso ele não fizer os checkins quando o dispositivo pedir, ele será considerado foragido pelo sistema que encarregará de dar ao agente de monitoramento o alerta e as últimas informações quanto a localização.

  • Mobilizando

    Mobilizando

    O Mobilizando é um sistema colaborativo para localização e compartilhamento de estabelecimentos adaptados para portadores de necessidades especiais.

    Ele foi criado durante o Hackathon do Hacker Cidadão 3.0 (CampusParty Recife), onde tirou o segundo lugar. Apesar de esforços e apresentações do projeto para investidores, infelizmente não seguiu adiante.

    Todavia, o código fonte, da versão web, está disponível pelo linkhttps://velhobit.com.br/arquivos/mobilizando.zip. Ele apresenta diversas falhas e modificações que devem ser corrigidas para alguém que for usar a base do projeto para este ou outros objetivos.

    Devido a dificuldade de encontrar locais adaptados para pessoas com necessidades especiais, idealizamos um aplicativo que mostra os locais mais próximos, filtrados por tipo de estabelecimento.

    A ideia é que qualquer usuário do Mobilizando possa cadastrar um estabelecimento. Quando esse estabelecimento é confirmado, ele entra para a base dados principal. O mesmo ocorre para o quanto aquela empresa está adaptada, bastando marcar insígneas (tags) para que a empresa entre na lista. Além disso, ainda é possível comentar e visualizar comentários públicos de outros usuários.

    https://velhobit.com.br/wp-content/uploads/2017/03/fundo-2.jpg

    Os dados usados originalmente são os dados públicos disponibilizados pela Prefeitura da Cidade do Recife, que não são atualizados frequentemente, e por isso uma necessidade grande de ser planejado como algo colaborativo.