Blog index > Growing a company

Moving away from Stripe with our own customer portal

Right now we use Stripe to manage our subscriptions. While we adore Stripe from a developer standpoint, it’s a complete mess to deal with taxes worldwide, especially at the end of the fiscal year. Our accountant hates us. We need to move to another payment processor which will deal with all the taxes the right way. This payment processor is called Paddle.

There is another reason why we want to change our current approach. Monica is first and foremost an open-source product. We have a huge community. Many of you host Monica on your servers. Because we also host the product ourselves so we can monetize it, we currently have included all the code required to manage subscriptions in the main codebase. That’s a lot of code. We deal with subscribing, editing, and deleting a subscription, with all the permissions around it, and so on. It’s not ideal.

We’ve decided to remove all the billing code from the main codebase, and create a new portal, called the Subscription portal, to manage your Monica subscriptions. You will have to create an account on this website and purchase a license key that you will need to paste into your Monica account. Nothing else is required.

If you currently have a subscription, we’ll allow you to easily transition your account to the new one. Further instructions will follow by email for each one of you.

We plan to transition to this new customer portal in the upcoming weeks.

Like everything we do at Monica, our customer portal is completely open-source and the code is available on Github. And once the customer portal will be live, the main Monica codebase will be completely free of the notion of billing.

On having too many settings

As time passes, we’ve added more and more settings in Monica. This is against what I believe in and something I’ve tried to avoid for many years: do not pollute your software with an endless number of settings and personalization options.

A product should be opinionated and follow its own vision, at the risk of pushing back potential users. Why would people sign up for your product if it doesn’t have an unique voice or ways of doing things? My vision includes a simple, powerful product with the least amount of settings possible.

How on earth then have we added a Personalization tab under Settings?

I intend to allow personalization for things that I can’t control or decide myself. Monica is not a business tool. It’s supposed to mimic real lives of people and adapt to the unique situation of everyone. One of the mistakes I made early on was about genders for instance: I only allowed at first two genders, male and female. This was my own reality - but it wasn’t the reality of many, many people out there. Instead of deciding for my users, we’ve added the flexibility to define your own genders, that match your reality, not ours. I intend to do that for every concept that represent important aspects of our lives.

Note that settings won't include to personalize the number of elements to display on a page or any insignificant details like that. They just don't matter.

I hope that this clarifies a little bit where we are going with the personalization of the product in general.

Our first award

We have received our first award: Open Source Rookie of the Year 2018, which recognizes some of the most innovative and influential open source projects launched each year. It’s great to see Monica being recognized, but the community should be recognized as well. It’s thanks to you, the community, that we are here today. You are the driving force behind this project, the reason we are building it, and you help decide what we should build next. I’m proud to be part of this adventure. Let’s make a great story with it.

On product design

A while ago I posted this formula:

Good product design: value for users > ease of use > speed > design

I’d like to explain my reasonings behind it.

What is product design? It’s the combination of what a product does, and how it does it.

Product designers have more responsibility than simply choosing how things should look or behave. They build the way users interact with the product. They need to take into account a large amount of criteria to do their job effectively. However, it’s worth asking the question of which criteria should be prioritized over others in the design process, if you can’t afford to cover the whole spectrum of what constitutes a good product design practice.

The most important thing a product (or feature) should do is bring value to the user. Any other consideration comes second. Your product can be slow, ugly, not easy to use, buggy - if your work is going to help users solve a specific problem they suffer with, they will endure anything to use it. You can’t say the same thing for a beautiful product that does not bring any value - no one will use it.

Once you are sure that the product or the feature brings value, you can put your energy on creating a great user experience. This doesn’t mean making it beautiful, or even pretty. Just really simple to use, or really easy to understand. Users will come to your product because you’ve promised them something - this can be summed up by either making their lives easier, or their jobs simpler. They will want to take advantage of your solution as quickly as possible and will value less your product if they can’t do what you are asking them to do in a simple way, or if it’s so complex that it makes them feel stupid.

Once your product brings enough value and is simple to use, you will want to focus on speed. Great products are fast. They don't waste the precious time of their users. The faster a product is, the more confident you feel about it. Most of the teams I’ve worked with think a feature is shipped once the code is done and the quality assurance passes. However a feature should not be considered as complete if it’s not as fast as it could be. Your product is the sum of your features. If you start to introduce slow features here and there, the whole will suffer eventually. Users devaluate slow products.

Finally, once a product brings enough value, is easy to use and is fast, you can make it pretty if you have time left or enough money to afford this process. But it’s not necessary per se. I would go as far as saying that if something brings enough value to the user, design is irrelevant. How things look is cherry on the cake. Design in itself shouldn’t be your main differentiator. It will help to differentiate a little bit your product from its competitors when you’ll become successful and many copycats will do exactly what you do exactly the same way. That being said, if your main differentiator is just a matter of design, you have other problems to solve first. Design is a trend that change often and quickly. What’s seen as beautiful today will be less valued tomorrow, just because.

Every day, I use Monica. And every day, I wished it had a better design, a better UX and it was faster. But I don't prioritize those aspects at all - and while it pains me a lot, I prefer creating value as much as possible first and foremost. When Monica will reach a state where we can afford taking some time to make things better, that means we would have created a product that brings tremendous value, that is extremely easy to use and fast enough for everyone. We are not there yet.

To sum up, what would you like your users to say about your work? Is it “Ok, it’s not pretty, but it’s so useful that I don't mind”, or “Ok, it’s beautiful, but I don't see why this product even exists”.

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.

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!

50 000 contacts

We've just reached an amazing milestone.


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.

Why open source? Are you crazy?

A lot of people have sent me emails about why Monica is open source. There are a lot of reasons for this that I want to describe at length here. Open sourcing a consumer product and at the same time trying to make money out of it is not something that is that common (unfortunately) and perhaps this will inspire others to do the same. I've been personally inspired by how Sentry, GitLab and many others have created companies around open source products and even if Monica doesn't generate any revenues yet, I wanted to share my own thoughts on the topic.

The pros of open sourcing your product

  • I've always wanted to create an open source product. Probably by idealism. I've been using open source products for as long as I can remember and I wanted to humbly contribute to the open source ecosystem in return. I also thought it was cool on the CV.
  • Monica contains a lot of personal data. I would argue that this data is way more potentially harmful than what people put on Facebook. For some it's a huge privacy concern. By making Monica open source, and providing ways to install it yourself on something that you own and control, it's up to you to decide whether you want to take the risk of letting someone else host your data, or if you want to keep it under your control.
  • Because of the sensitive nature of data hosted by Monica, and because I'm a single developer who is not as good as the community as a whole, I needed to open source the product to make sure hundred of eyes scrutinize the code and look for bugs, potential breaches and improvements. And find things that should be fixed or enhanced much quicker than what I could do myself.
  • When people have access to your source code, and become users of the platform, you will be astonished by how much they will contribute. They will submit pull requests with great ideas and concepts, that you can immediately put in the product for everyone to profit from it. It's awesome. Of course, all ideas are not great and you will refuse pull requests from time to time, for various reasons. But globally it's extremely positive and you will receive great new features.
  • In an age where social networks are extremely opaque in what they collect and how they use the data, people are more and more concerned about their privacy. For a very good reason. Monica doesn't display ads and does not resell any data. But why take my word for it? For one reason: the freely available source code is exactly what is in production. I don't maintain a second fork with private modifications. Therefore, everything I do is transparent and users can control that I don't do anything nasty. It's all about transparency and creating a relationship based on trust.
  • Developers are the most important part of an ecosystem. When developers like what you do, they will create an ecosystem around it and cool things that you would have never thought about. This is a very strong magical moment when that happens. Developers are also powerful influencers and your best ambassadors. Non geeks people reach out to them often to ask for the latest tech advice. And if they like Monica, they will talk about it with almost the same reach as a post from a Kardashian would in a gossip magazine.

The cons of open sourcing your product

  • Regardless of your license, there is a risk that people take your code and spin off a company around it, and take the market you wanted to address. There is nothing you can do about it. A popular maxim says that an idea is worth nothing, only the execution matters. In Monica's case, it's more than an idea - the code is already there and it's already an execution. The more mature the product will be, the more it'll be tempting for other people to steal the code. I'm ready to live with it, as long as the community benefits from the results of this.
  • If you get big, you might become less attractive to either venture capitalists or potential buyers. But you know what? In my case it is good news because I'm not building something for them, I'm building something for users. I don't care about what VCs will think about the product.
  • It is time consuming to deal with the community. Don't get me wrong. I love interacting with them, and I feel extremely blessed that there is a passionate community around Monica already. But while I'm trying to build what's next for the product, I spend a lot of time every day checking issues, verifying pull requests and answering emails. Like, a significant part of my time actually. Again, I'm not saying it's bad. Actually I'm enjoying it greatly. But this time sink is something to consider if you decide to open source your product and you need to be willing to participate and take care of your community.

I can't think of any other drawbacks. You should consider open sourcing your next idea.

Strengthen the personal relationships with your friends and family.

Sign Up


© 2018 — 2024

Proudly Canadian