A Monica v3 chega antes do fim de 2026. Reconstruída do zero. Continua de código aberto. Veja o que vem por aí
Monica

Blog

Notas sobre construir a Monica, manter dados pessoais privados e a pequena mecânica de continuar em contato.

Página 3 de 4

3 min de leitura
O Monica em 2018
Regis Freyd

Quando você trabalha todo dia em alguma coisa, raramente para para pensar no todo. Não quero perder de vista o que gostaria que o Monica alcançasse, então aqui está o que eu gostaria de fazer em 2018. Este post não é bem um roteiro. Pense nele como a minha lista de desejos pessoal.

  • Lançar o aplicativo móvel. O trabalho já começou e estamos perto de uma v1 que deve sair nas próximas semanas. A primeira versão será somente leitura, e a v2 permitirá editar dados. O código do aplicativo móvel já está no GitHub e é, claro, 100% de código aberto.
  • Suporte a GraphQL: já temos uma API REST que a v1 do aplicativo móvel vai usar. Se quisermos de fato um ótimo aplicativo móvel, precisamos garantir que todas as requisições feitas à API sejam eficientes, e o GraphQL é a melhor solução para isso.
  • Suporte a CardDAV e CalDAV. Acredito que é isso que vai fazer o Monica brilhar no longo prazo. Esses dois protocolos permitirão sincronizar seus contatos e compromissos com os aplicativos de e-mail e calendário que você já usa no celular ou no computador. O Monica se tornaria a fonte central dos seus dados sociais.
  • Mais carinho para os lembretes, com a possibilidade de ser avisado antes de um evento acontecer.
  • Oferecer estatísticas sobre sua vida social: quantas vezes você saiu em determinado mês, quem você vê mais, onde costuma se encontrar com mais frequência e assim por diante. Quanto mais dados você der ao Monica, mais percepções vai ter.
  • Uma visão de calendário que mostre lembretes, eventos futuros e afins.
  • O conceito de fichas de atividade "ricas": por exemplo, se você indicar que foi a um restaurante, poder informar onde foi (com marcação automática no mapa), o que comeu, quanto tempo durou e assim por diante. Cada tipo de atividade teria informações específicas a preencher.
  • O diário deveria se tornar o lugar onde sua vida é documentada sozinha. Isso será ótimo quando tivermos fichas de atividade ricas.
  • Estabilizar a plataforma, acrescentar muitos testes para garantir que não vamos quebrar as coisas conforme avançamos.
  • Se eu tiver tempo, mas só se tiver: deixar o app mais bonito. Ainda assim, acredito ser mais importante ter uma aplicação funcional do que uma bonita.
  • E, por último, mas não menos importante: acrescentar mais formas de importar dados. Isso vai dar um trabalho enorme porque, surpreendentemente, a maioria das redes sociais ou sistemas não é de código aberto e não entrega os dados que têm sobre você.

Espero cumprir todos os pontos acima este ano. Também sei que as coisas mudam o tempo todo por diversos motivos, então leve isso com uma pitada de sal.

2 min de leitura
Não seja mais esperto do que eu
Regis Freyd

Hoje em dia, a maioria dos sites usa todos os dados que coleta. A Amazon me recomenda outros produtos de que eu possa gostar com base no que já comprei ou consultei. Twitter, Instagram e Facebook tentam sugerir novos amigos ou conteúdos que talvez me agradem.

Embora faça sentido que uma loja use tudo o que sabe sobre mim para me ajudar a comprar melhor, acho extremamente incômodo que as redes sociais façam isso por mim.

Tudo o que é social é pessoal demais para as empresas se meterem. Elas não têm todas as cartas na mão para determinar o que essas recomendações provocam em mim. Além disso, elas acham que sabem o que vamos querer, mas, pela minha experiência, erram com muita frequência.

A tendência atual é ajudar os usuários fazendo todo o trabalho por eles, inclusive o trabalho que eles nunca quiseram que o site fizesse.

No Twitter, não quero saber de quais conteúdos outros usuários gostaram.

No Facebook, não quero que me sugiram ter mais amigos. Estou bem com os amigos que já tenho, e se não sou amigo de outras pessoas, provavelmente há um motivo.

Não quero que isso aconteça no Monica. Acho que precisamos oferecer uma ferramenta que faça apenas o que os usuários querem que ela faça.

Isso não significa que não devamos oferecer recursos que ajudem os usuários analisando seus dados. Mas esses recursos nunca deveriam ser uma surpresa. E nunca deveriam dar a sensação de que o site sabe demais sobre seus usuários.

5 min de leitura
Retrospectiva do ano
Regis Freyd

Eu sou o Regis Freyd e desenvolvo o Monica há um ano e meio. O Monica é um software de código aberto para gestão de relacionamentos pessoais e hoje é um projeto paralelo, já que não gera receita suficiente para eu me dedicar a ele em tempo integral. A jornada de 2017 foi bastante boa e é sobre isso que quero escrever hoje.

Como o Monica ficou popular

O Monica foi criado originalmente em junho de 2016. Trabalhei nele de forma intermitente por alguns meses e depois o publiquei no Reddit. Pouca gente se interessou, menos ainda se cadastrou (uma dúzia de pessoas), então parei de trabalhar nele e me concentrei na carreira. Em maio de 2017, depois de trocar de emprego, quis voltar a algo de que gosto muito: projetos paralelos. Então, todo dia depois do trabalho, eu mexia no Monica. Fiz isso por um mês, abri o código no GitHub e me desanimei de novo. Liguei para um amigo, contei que estava havia um ano em um projeto e disse que queria apagá-lo porque ninguém se importava. Falei que apagaria o repositório inteiro na segunda-feira (era domingo). Fui dormir e, de manhã, antes de apagar o projeto, quis tentar uma última coisa: publicá-lo no Hacker News. Como todos os meus projetos anteriores nunca despertaram interesse no HN, eu não tinha otimismo nenhum. Publiquei o link e sumi por duas horas.

Quando voltei para confirmar que ninguém tinha se importado, vi que estava na página 2 do Hacker News. Fiquei pasmo. Tinha uns 30 votos e alguns comentários. Não conseguia acreditar. As pessoas pareciam gostar do projeto e da ideia por trás dele. Também adoraram o fato de ser de código aberto. E aí tudo acelerou.

Em menos de uma hora, o Monica chegou à primeira página do Hacker News. Alguns minutos depois, estava em terceiro, depois em segundo. E então chegou ao primeiro lugar. E ficou em primeiro por dois dias seguidos, com quase 1100 votos e centenas de comentários.

Passamos de 10 usuários para 5600 em algumas horas.

No dia seguinte chegamos a 7000 usuários. O Monica virou o repositório em maior alta no GitHub e foi de 0 a 1700 estrelas em uma hora.

E então começaram a chegar os e-mails. Passei os três dias seguintes respondendo a centenas de mensagens de usuários dizendo que esperavam por uma ferramenta assim havia anos. Alguns investidores me procuraram querendo conversar. No total, falei com 4 fundos de risco de Nova York e São Francisco. Percebi rapidamente que eles não tinham a mesma visão que eu para o produto e queriam colocar anúncios e outras formas "inteligentes" de alimentar o Monica com dados. Isso ia tanto contra os meus valores que a conversa parou por ali.

Hoje o Monica tem cerca de 10 300 usuários e mais de 90 000 contatos. O repositório no GitHub tem 3788 estrelas e 409 forks. Recebemos centenas de pull requests e a comunidade abriu mais de 300 issues. Está claro que o projeto ficou popular e que existe um interesse real. As imagens Docker foram baixadas mais de 13 000 vezes. É quase impossível hoje saber quantas instâncias do Monica rodam por aí, mas imagino que algumas centenas. Tenho cerca de 45 clientes pagantes, embora, para ser justo, no momento quase não haja vantagem em ter uma conta paga: quem assina faz isso basicamente para apoiar o desenvolvimento.

Hesitei muito antes de abrir o código do Monica. Meu maior medo era que criticassem meu código e vissem como ele era ruim. Eu não tinha testes unitários. Tinha tomado atalhos para alcançar meus objetivos e o código estava longe de ser bom. Para minha surpresa, apenas uma pessoa mencionou a qualidade do código. Mais ninguém sequer falou disso. As pessoas estavam simplesmente gratas por a ferramenta existir e ser aberta. O segredo é não ter medo de compartilhar seu trabalho por receio de ser julgado.

E agora?

  • O crescimento inicial desacelerou. Cerca de 10 a 20 usuários se cadastram por dia. Lembre-se de que não fiz marketing nenhum, além daquela única publicação no Hacker News. Então, embora o número seja baixo, acho incrível ter tantos cadastros.
  • Recebo muitos pedidos de funcionalidades. Sou muito grato por eles, mas não consigo fazer tudo. Em parte porque é trabalho demais e em parte porque quero focar em funcionalidades pelas quais as pessoas queiram pagar. É a única forma de tornar este projeto sustentável no longo prazo. Lembre-se de que trabalho nisso à noite e nos fins de semana, e com 20 a 30 horas por semana vai ficar cada vez mais difícil manter esse ritmo.
  • A Letterbox é uma enorme fonte de inspiração para mim em termos de modelo de negócio, e a oferta Pro deles é provavelmente algo que vou copiar.
  • Uma das coisas que eu gostaria de fazer é lançar um aplicativo móvel em 2018. Acredito que seja o que as pessoas mais querem, e é por isso que publiquei uma API dois meses atrás. Tenho muito trabalho pela frente, e a primeira parte é aprender a desenvolver de fato um aplicativo móvel nativo.
  • Acho que o Monica pode se tornar a única fonte de verdade sobre seus contatos e sua agenda. É para lá que vamos em 2018, além de ser um bom lugar para guardar o que você sente.
1 min de leitura
Adicionar uma data sem saber o ano
Regis Freyd

Uma data de nascimento é composta de dia, mês e ano. Bem, num mundo ideal, porque na prática quase sempre você não sabe o ano de nascimento. Se for o aniversário de uma amiga querida que se recusa a dizer a idade, você só vai saber o dia e o mês para comemorar todos os anos.

Por isso acrescentamos a possibilidade de informar uma data sem saber o ano.

A mudança vale para datas de nascimento, datas do primeiro encontro e datas de falecimento. Os lembretes dessas datas funcionam como antes.

imagem

Esse recurso era um dos mais pedidos no nosso rastreador de issues. Esperamos que ele ajude você a guardar mais informações sobre seus amigos e familiares.

1 min de leitura
Chegaram as notas favoritas
Regis Freyd

Agora as notas podem ser marcadas como favoritas. Os favoritos são uma ótima forma de manter à mão as notas que você achar interessantes.

imagem

Quando uma nota é marcada como favorita, ela aparece em uma nova aba do painel, chamada Notas importantes.

imagem

Nesta versão também lançamos alguns extras:

  • Algumas ações da interface agora exibem notificações dinâmicas ao adicionar, atualizar ou excluir dados.
  • Agora é possível alterar o nome e o sobrenome do dono da conta.

Essas mudanças estão na versão 1.3.0, que já está em produção e, como sempre, você pode instalá-la em um servidor seu.

Aproveite.

1 min de leitura
Um jeito melhor de gerenciar tarefas
Regis Freyd

Adicionar e gerenciar tarefas está mais fácil do que nunca no Monica.

Aproveitamos o trabalho da v1.1 para permitir gerenciar as tarefas direto na ficha do contato, em vez de abrir uma nova tela para digitar a tarefa ou esperar a página recarregar quando você exclui uma.

Além disso, e esta é uma mudança importante, as tarefas agora usam caixas de seleção. Finalmente. Era algo que queríamos fazer havia muito tempo.

imagem

Essas mudanças estão na versão 1.2.0, que já está em produção e, como sempre, você pode instalá-la em um servidor seu.

Aproveite.

2 min de leitura
Chegaram os campos de contato múltiplos
Regis Freyd

Algumas pessoas têm um endereço físico e uma conta no Twitter. Outras têm vários endereços, nenhum Twitter e uma conta no Quora. É difícil prever todos os casos, mas queremos deixar cada um organizar seus contatos do jeito que quiser.

Um endereço físico, uma conta no Twitter... chamamos todas essas formas de falar com alguém de campo de contato.

A partir de agora, você pode adicionar quantos campos de contato quiser por contato. Antes você só tinha 5 campos predefinidos.

imagem

Cada campo de contato tem um tipo: pode ser um e-mail, uma conta do Facebook, um número de fax. Cada conta já vem com 6 tipos genéricos de campo de contato:

  • E-mail
  • Número de telefone
  • Facebook
  • Twitter
  • Whatsapp
  • Telegram

Você pode acrescentar ou remover tipos de campo de contato na sua conta quando quiser, e definir os nomes como preferir, na nova aba Personalização dentro de Configurações.

Cada tipo de campo de contato também pode ter um protocolo associado. O protocolo diz o que o navegador deve fazer quando você clica em um campo de contato. Para um número de telefone, por exemplo, o protocolo tel: manda o navegador abrir o programa que você usa no computador para fazer ligações.

imagem

A API foi atualizada para dar suporte a esses dois novos conceitos (campos de contato e tipos de campo de contato).

Também reorganizamos um pouco a barra lateral da ficha do contato. As informações sobre cônjuges e filhos agora ficam no topo, pois acredito que sejam bem mais importantes do que saber o endereço do contato, por exemplo.

Essas mudanças estão na versão 1.1.0, que já está em produção e, como sempre, você pode instalá-la em um servidor seu.

Aproveite.

4 min de leitura
Monica 1.0.0 com API, apresentações e contatos falecidos
Regis Freyd

O Monica finalmente está pronto para a v1.0.0.

Aqui no Monica tentamos seguir a abordagem SemVer. Mudar o número de versão principal indica grandes mudanças na API. Por isso estou bastante animado em anunciar o lançamento da v1.0.0. Ela acrescenta muitas funcionalidades e servirá de base para todas as coisas legais que pretendo lançar nos próximos meses. Vamos falar primeiro das funcionalidades e depois das mudanças técnicas desta versão.

A API

O Monica finalmente tem uma API. Nem tudo está disponível por ela agora, mas a maior parte dos dados sobre contatos está. Uma versão futura trará também as configurações e os dados da conta. Meu objetivo é que tudo esteja disponível pela API. Damos suporte a OAuth 2.0 e a tokens pessoais. Nos bastidores, o Laravel Passport cuida de tudo o que envolve OAuth.

Nada ajuda mais um desenvolvedor a entrar em um projeto do que uma boa documentação. Por isso também lançamos um novo portal de documentação que tenta ser o mais completo possível. Em cada página indicamos ainda a data da última atualização, para você saber o quanto ela está fresca.

API

Agora cabe aos desenvolvedores serem criativos com os dados do Monica e fazerem coisas incríveis com eles. Do nosso lado, estamos trabalhando no primeiro aplicativo móvel oficial do Monica, tanto para Apple quanto para Android, mas você terá mais detalhes ainda este ano.

Como você conheceu alguém

O propósito do Monica é ajudar todo mundo a lembrar informações importantes sobre as pessoas de quem gosta, de forma privada e só para os seus olhos. Às vezes, quando você tem muitos contatos, é difícil lembrar como e onde os conheceu. Por isso agora você pode indicar como conheceu alguém ou se foi apresentado por outro contato. Pode até pedir para ser lembrado do aniversário desse encontro, se quiser.

apresentações

Marcar um contato como falecido

Às vezes a vida é injusta e as pessoas morrem. Acrescentamos a possibilidade de marcar um contato como falecido e indicar uma data opcional para esse acontecimento triste. Além disso, você pode ser lembrado dessa data, se preferir. Quando um contato está marcado como falecido, aparece um pequeno ⚰ ao lado do nome dele em todo o aplicativo.

marcar um contato como falecido

Uma tela de novo contato mais rápida

Nosso objetivo é ajudar você a fazer o que quer o mais rápido possível. Por isso acrescentamos um pequeno botão na tela de novo contato que salva o contato atual e já permite adicionar outro em seguida. Isso economiza segundos preciosos.

Grandes mudanças nos bastidores

Para a v1.0.0, atualizamos a base de código para o Laravel 5.5, a fim de aproveitar na nossa API a ótima funcionalidade de Resources introduzida nessa versão.

Graças ao @mauricew, também substituímos o antigo sistema de build do front-end baseado em Gulp e Bower pelo mix, o sistema de build que já vem com o Laravel. Conseguimos remover muitas dependências, limpar o código e, principalmente, garantir que não haverá conflitos de arquivos CSS e JS nos nossos pull requests no futuro.

Para encerrar

A versão 1.0.0 já está em produção e, como sempre, você pode instalá-la em um servidor seu.

A v1.0.0 tem literalmente milhares de linhas de código novas. É fruto de uma comunidade saudável. No plano pessoal, me sinto muito grato por o Monica ajudar tanta gente. O feedback constante de vocês me ajuda enormemente a continuar trabalhando o máximo que posso neste produto. Os próximos meses serão bem intensos: muitas funcionalidades novas, um aplicativo móvel e outras surpresas. O futuro será brilhante para nossa comunidade.

Aproveite.

2 min de leitura
Balanço, setembro de 2017
Regis Freyd

Andei um pouco menos ativo na comunicação nos últimos 40 dias. Também estou mais lento para responder issues e integrar pull requests. Não é uma situação de que eu goste, mas será difícil mudá-la no próximo mês. Depois vai melhorar.

O que diabos estou fazendo agora

Trabalho no projeto o máximo que consigo. Cada hora livre que tenho é investida no Monica. Para tranquilizar todas as pessoas que me escrevem sobre meu comprometimento com o projeto e sobre o receio de que ele morra em breve: continuo tão motivado quanto antes e isso segue sendo uma prioridade para mim.

No momento, porém, estou trabalhando na API e garantindo que ela funcione como deveria. Também estou construindo a documentação em volta dela, porque a documentação precisa ser excelente para que as pessoas usem a API. Por essas razões, e também porque isto ainda é um projeto paralelo até eu encontrar formas de torná-lo meu trabalho em tempo integral, não quero ser distraído agora por feedback, bugs ou novas funcionalidades. Assim que a API estiver pronta, volto a responder à comunidade. Infelizmente, simplesmente não tenho tempo físico para fazer tudo o que gostaria, e preciso me concentrar de forma bastante rigorosa para conseguir entregar as coisas.

O que vem a seguir

Nos próximos dias, uma primeira versão da API será publicada, com novos métodos adicionados depois.

Com a API pronta, precisamos dar atenção à ideia de atividades feitas com seus contatos. Também devemos tornar o painel mais útil e mudar o diário para que ele se torne algo realmente proveitoso. Além disso, precisamos implementar o protocolo CardDAV, embora eu ainda não saiba o quanto ele vai se integrar bem à pilha atual.

Tenho certeza de que este projeto tem um potencial enorme. Se você já é usuário, continuo em busca de feedback e depoimentos. Obrigado pela ajuda.

2 min de leitura
Monica 0.6.3 com melhor gestão de contatos e suporte a Markdown
Regis Freyd

A funcionalidade mais pedida no Monica (desde a última) era poder indicar um contato existente como cônjuge ou como filho. Com a 0.6.3, isso agora é possível.

Como funciona

Ao adicionar um cônjuge ou um filho, você passa a ter acesso a duas novidades:

  • Você pode criar um contato parcial ou um contato de verdade ao adicionar essa pessoa. Um contato parcial é o jeito antigo de fazer as coisas: esses contatos não aparecem na lista de contatos e você não pode adicionar lembretes ou notas específicas para eles. Um contato "de verdade" cria de fato um novo registro para essa pessoa, e você poderá acrescentar os filhos ou cônjuges dela.

criar contato completo

  • Em vez de criar um contato novo, você pode simplesmente vincular um contato existente como filho ou cônjuge deste contato.

criar contato completo

Essa foi a maior mudança na base de código até hoje e a que levou mais tempo. Para quem hospeda o Monica por conta própria, tenha cuidado ao atualizar sua instância: faça backup do banco de dados antes de fazer a atualização.

Outras mudanças importantes desta versão

  • Para quem gosta de poligamia, é possível ter mais de um cônjuge por contato.
  • Novas traduções: italiano e alemão. Obrigado à comunidade.
  • Suporte a Markdown nas notas e nas ligações registradas. Isso permite usar listas, por exemplo.
  • Agora oferecemos suporte a todas as moedas do mundo.
  • Muitas correções de bugs, além de algumas correções de segurança.
  • Começamos a usar o Tachyons como novo framework CSS. Ele vai substituir gradualmente o Bootstrap.

Para encerrar

A versão 0.6.3 já está em produção e, como sempre, você pode instalá-la em um servidor seu.

Aproveite.