The Monica Blog

Don't be smarter than me

Most sites these days make use of all the data they gather. Amazon recommends other articles I might like based on what I’ve already bought or consulted. Twitter, Instagram and Facebook try to suggest new friends or content I might like.

While it makes sense for a shopping website to use all the data it knows about me to help me buy better things for me, I find it extremely disturbing that social networks do that for me.

Everything social is way too personal for companies to mess up with it. They don’t have all the cards at hands to determine what those recommandations will do to me. Moreover, they think they know what we’ll want, but in my experience they are very often wrong.

The trend these days is to help users by doing all the work for them - including all the work they didn’t want the site to do in the first place.

On Twitter I don’t want to know what content other users have liked.

On Facebook I don’t want to be suggested to have more friends. I’m fine with the friends I already have - and if I’m not friends with other people it’s probably for a reason.

I don’t want this to happen on Monica. I think we need to provide a tool that does only what the users want the tool to do.

This doesn’t mean we shouldn’t provide features that help the users by analyzing their data. But these features should never be a surprise to people. And they should never give the feeling that the site knows too much about its users.

Year in review

I’m Regis Freyd and I’ve been developing Monica for one year and a half now. Monica is an open-source personal relationship management software and is currently a side project, as it doesn't generate enough revenues to allow me to work on it full time. The journey of 2017 has been pretty great and this is what I’d like to write about today.

How Monica became popular

Monica was built originally in June 2016. I worked on and off on it for a couple of months, then submitted it to Reddit. Few people cared, even fewer people registered (a dozen of people) so I stopped working on it and focused on my career. In May 2017, after having changed jobs, I wanted to go back to work on something I love very much: side projects. So every day after work, I worked on Monica. I did this for a month, open sourced it on GitHub, and got discouraged again. I called a friend, told him that I’d been working on a project for a year now and told him that I wanted to delete the project because no one cared at all. I said that I would delete the entire repository on Monday (we were Sunday). I went to bed, and in the morning, before deleting the project, I wanted to try one last thing: posting the project to Hacker News. Since all my other projects in the past never caught any interest on HN, I didn't have any optimism for this story. I posted the link, and went away for two hours.

When I came back to make sure that no one cared, I saw that I was on page 2 on Hacker News. I was mind blown. I got like 30 upvotes and a few comments. I couldn’t believe it. People seemed to like the project and the idea behind it. They also loved the open source aspect of it. Then it escalated quickly.

In less than an hour, Monica reached the first page on Hacker News. Then, a few minutes later, I reached #3, #2. And then it reached #1. And stayed number 1 for two days in a row, with almost 1100 upvotes and hundreds of comments.

We went from 10 users to 5600 users in a couple of hours.

The next day we bumped at 7000 users. Monica became the most trending repository on GitHub, went from 0 star to 1700 stars in an hour.

And then, people started to send emails. I spent the next three days replying to hundred of emails of users saying that they’ve been waiting for a tool like that for years now. A few VCs reached out to me and wanted to talk. All in all, I talked to 4 venture capitalists from New York and San Francisco. I quickly realized that VCs didn’t have at all the same vision that I had for the product, and wanted to put ads and other “intelligent” ways of feeding data to Monica. This was so against my values that the discussion stopped there.

Today, Monica has around 10,300 users and 90,000+ contacts. The repository on GitHub has 3788 stars and 409 forks. We’ve received hundreds of pull requests, and the community has opened 300+ issues. It’s clear that the project has become popular and that there is a clear interest. The Docker images have been pulled more than 13,000 times - it’s almost impossible right now to know how many instances of Monica run in the wild, but I guess a few hundreds. I have around 45 paying customers - but to be fair, at the moment, there is almost no incentive in having a paying account, so people who take a paying account are doing so to support the development, basically.

I hesitated a lot before open sourcing Monica. My biggest fear was that people would criticize my code, see how bad it was. I had no unit tests. I took some shortcuts to reach my goals, and the code was far from being great. To my surprise, only one person mentioned the quality of the code. No one else even talked about it. People were just grateful that the tool was there and open. The secret is to not be scared of sharing your work in the fear of being judged.

What now?

  • The initial growth has slowed down. Around 10-20 users subscribe each day. Keep in mind that I have done no marketing whatsoever except this one post on Hacker News. So while the number is low, I find it quite incredible to have that many signups.
  • I receive a lot of feature requests. I’m really grateful for them, but I can’t do everything. In part because this is to much work, and in part because I want to focus on features that people will want to pay for. This is the only way to make this project sustainable in the long term. Keep in mind that I work on this at night and on the weekend, but at 20-30 hours per week, it will be harder and harder to keep this rhythm in the future.
  • Letterbox is a huge source of inspiration for me in terms of business model, and their Pro offering is probably something I’ll copy.
  • One of the things I’d like to do is to ship a mobile application in 2018. I believe this is what people want the most, and this is why I’ve shipped an API two months ago. I have a lot of work to do for this, and the first part would be to learn how to actually develop a native mobile application.
  • I think Monica can become the only source of truth about your contacts and your agenda. This is where we are going in 2018, as well as a great place to store your feelings.

Add a date without knowing the year

A birthdate is composed of a day, a month and a year. Well, in an ideal world, because in practice, most of the time you don't know the year of birth. If it's the birthday of a dear friend of yours who refuses to give you her age, you will only know the day and month to celebrate her birthday every year.

This is why we have added the ability to set a date without knowing the year.

This change applies to birthdates, first met dates and deceased dates. Reminders for those dates will work the same way as before.

image

This feature was one of the most requested features in our issue tracker. We hope it will help you add more information about your friends and family members.

Introducing favorites for notes

Notes can now be set as a favorite. Favorites are a great way to keep track of notes that you find interesting.

image

When a note is set as favorite, it will appear in a new tab on the dashboard, called Important notes.

image

In this release, we've also released some goodies:

  • Some actions in the UI now have dynamic notifications when adding/updating/deleting data.
  • It's now possible to change account's owner first and last names

These changes are in the version 1.3.0 which is already in production, and as always, you can install it on a server that you own.

Enjoy!

A better way to manage tasks

Adding and managing tasks is now easier than ever in Monica.

We've leveraged our work on v1.1 to allow the management of the tasks right from the contact view page, instead of having to open a new screen to enter task info, or having to wait for a page reload when you delete a task.

Also, and this is an important change, tasks now use checkboxes. Finally. This is something that we wanted to do for a long time.

image

These changes are in the version 1.2.0 which is already in production, and as always, you can install it on a server that you own.

Enjoy!

Introducing multiple contact fields

Some people have one physical address and one Twitter account. Others have multiple addresses, no Twitter at all and one Quora account. It's hard to take all use cases into account, but we want to let users organize their contacts the way they want it.

A physical address, a Twitter account,... we call all these ways of contacting someone a contact field.

Starting now, you can add as many contact fields per contact as you want. Previously you could only have 5 pre-defined fields.

image

Each contact field has a type: it can be an email, a Facebook account, a fax number. Each account comes with 6 generic contact field types:

  • Email
  • Phone number
  • Facebook
  • Twitter
  • Whatsapp
  • Telegram

You can add or remove contact field types on your account at your leisure, and set their names as you want, in the new Personalization tab under Settings.

Each contact field type can also have a protocol associated with it. A protocol is what the browser should do when you click on a contact field. For instance, for a phone number, the tel: protocol will tell the browser to launch the software that you use on your computer to make phone calls.

image

The API has been updated to support those two new concepts (contact fields and contact field types).

We've also reordered a little bit the sidebar when viewing a contact. Information about the partners and children are now at the top of the sidebar, as I believe this is a much more important information that knowing the address of the contact for instance.

These changes are in the version 1.1.0 which is already in production, and as always, you can install it on a server that you own.

Enjoy!

Monica 1.0.0 with API, introductions and deceased contacts

Monica is finally ready for v1.0.0.

We try to follow the SemVer approach here at Monica. Changing a major version number indicates major API changes. This is why I'm really excited to announce the release of v1.0.0. It adds a lot of features and will serve as a foundation for all the great things I'm planning to ship in the coming months. Let's talk first about the features, then the technical changes that are introduced in this version.

API

Monica finally has an API. Not everything is available right now through the API, but most of the data about contacts are. A future version will bring all the Settings and Account data as well. My goal is that everything is available through the API. We do support Oauth 2.0 and personal tokens. Under the hood, Laravel Passport deals with everything Oauth.

Nothing can help developers jump in a project more than a good documentation. This is why we've also released a new documentation portal that tries to be as exhaustive as possible. On each page, we also indicate the date of last update, so you know how fresh the documentation is.

API

It's going to be up to the developers now to be creative in using Monica's data and do great things with it. On our end, we are working on the first official mobile application for Monica, both for Apple and Android, but you will have more details on this later this year.

How you've met someone (aka Introductions)

Monica's purpose is to help everyone remember important information about the ones you care about, privately and for your eyes only. Sometimes, when you do have a lot of contacts, it's hard to remember how and where you've met them. This is why you can indicate how you've met someone or if you've been introduced by another contact. You can even ask to be reminded of the anniversary of this encounter if you want.

introductions

Mark a contact as deceased

Sometimes life is unfair and people die. We've added the possibility to mark a contact as deceased, and indicate an optional date for this sad event. Moreover, you can be reminded of this event if you choose to. When a contact is marked as deceased, there is a small ⚰ next to the name of the contact throughout the application.

mark a contact as deceased

Speed up the Add contacts screen

Our goal is to help you achieve what you want as fast as possible. This is why we've added a small button on the Add contact screen to let you save the current contact and add another one right after this one. It'll save you precious seconds.

Big changes under the hood

For v1.0.0, we've upgraded the codebase to Laravel 5.5, in order to take advantage of the great Resources functionality introduced in this version for our API.

Thanks to @mauricew, we've also replaced the previous front end build system based on Gulp and Bower with mix, the default build system that ships with Laravel now. We've been able to remove lots of dependencies, clean up the code and more importantly, make sure that there won't be any conflicts of CSS and JS files in our pull requests in the future.

Final words

Version 1.0.0 is already in production, and as always, you can install it on a server that you own.

v1.0.0 has litteraly thousands of new lines of codes. It's the product of an healthy community. On a personal level, I feel really blessed that Monica helps so many people. Your continuous feedback helps me tremendously to continue working as hard as I can on this product. The upcoming months will be very busy: lots of new features, a mobile application and other surprises. The future will be bright for our community.

Enjoy!

Status - September 2017

I've been a bit less active on the communication side in the last 40 days. I'm also slower at responding to issues and merging pull requests. This is not a situation that I like, but it's difficult for me to change it in the next month or so. It'll get better though.

What the hell am I doing right now

I'm working as much as I can on the project. Every free hour that I have is invested on Monica. To reassure all the people who keep sending me emails about my commitment on the project and the fact that I won't let it die soon: I'm still extremely motivated about it as I was before and this is still a priority for me.

However I'm working at the moment on the API and making sure that it works like it should. I'm also building the documentation around it, because documentation has to be excellent in order for people to use the API. For these reasons, and also because this is still a side project at the moment until I find ways to make it my full-time job, I don't want to be distracted by the feedback, bugs or new features right now. As soon as the API will be done, I'll go back to answering to the community. Unfortunately, I simply don't have the physical time to do all the things I would like to do, and I need to focus extremely aggressively if I want to get things done.

What's next

In the coming days, a first draft of the API will be released - with new methods added after that.

Once the API is done, we need to focus on giving some love to the notion of activities done with your contacts. We should also make the dashboard more useful, and change the Journal so it becomes something actually useful. Also, we need to implement the Carddav protocol, although I'm unsure at this point how well it will integrate in the current stack.

I'm sure this project has an enormous potential. If you are a current user, I'm still looking for feedback and testimonials. Thanks for your help!

Monica 0.6.3 with better contact management and markdown support

The most requested feature on Monica (since the last one) was the ability to designate an existing contact as a significant other or a child. With 0.6.3, this is now possible.

How does it work

When you add a significant other or a kid, you now have access to two new things:

  • You can either create a partial contact, or a real contact when adding this new person. A partial contact is the old way of doing things: those contacts are not listed in the list of contacts, and you can't add specific reminders or notes about them. A "real" contact will actually create a new contact entry for this person, and you will be able to add their own children or significant others to them.

create complete contact

  • Instead of creating a new contact, you can simply link an existing contact to be a kid or a significant other of this contact.

create complete contact

This change was the biggest change in the codebase so far, and the one that took the most time. For the ones who host Monica themselves, be careful when updating your instance - make sure you backup the database before upgrading.

Other important changes in this release

  • For the ones who like polygamy, you can have more than one significant other per contact.
  • New translations added: Italian, German. Thank you to the community for this.
  • Add support for Markdown on the Notes and the Log calls. This will let you use lists, for instance.
  • We now support all the currencies in the world.
  • A lot of bug fixes as well as some security bugfixes.
  • We've started to use Tachyons as a new CSS framework. This will gradually replace Bootstrap.

Final words

Version 0.6.3 is already in production, and as always, you can install it on a server that you own.

Enjoy!

50 000 contacts

We've just reached an amazing milestone.

footer

This is amazing and a great milestone that I'd like to share with you all. Users have uploaded more than 50 000 contacts on Monica so far, and it keeps growing every day. This doesn't include the instances that have been downloaded and installed on their own servers.

On a personal note, I'm amazed by the community around the project. On GitHub, we've received over 200 pull requests from the community and people seem to share the project all around Internet to spread the good news.

I can wait to see where we'll be one year from now. Thank you all for your trust.

Strenghten the personal relationships with your friends and family.

Sign up

Company

Resources

© 2018

Proudly Canadian