Hello! What's your background, and what are you working on?
It started back when I was 16 and created my first website using Microsoft Word. My interest in web technology increased with time and I later graduated with a degree in Computer Science while living in Spain (where I was born), and a few months later I got a job in Cambridge, UK. I spent five years working as the sole full-stack web developer on a small team with eight other developers. I created fullPage.js as a side project in 2013 while I was working there. Three years later after creating fullPage.js, I began charging for extra features; six months after that I quit my full-time job as my earnings began to surpass my salary.
What motivated you to get started with fullPage.js?
It was the desire to learn new things and make something useful for others. I know this sounds very cliché but it is the truth. Making something is nice and all but it's an entirely new level when you see people actually using what you've created. That's where I got my motivation from, and it's the reason I continued to improve my product over three years without charging a single penny. As makers, we want others to value our efforts; this motivates us to keep improving our work. Much like a trainer who pushes you harder and harder until you bring your best.
I came up with the idea for fullPage.js when I had to build a website based on a full-screen slider effect. At that time there weren't any components designed to help developers in this task, so I had to code it all by myself.
I had always wanted to create a jQuery plugin but I didn't have any ideas for what to build. Once I completed the website with the full-screen slider I thought it would be nice to develop my first jQuery plugin around that effect. This would ensure that other developers wouldn't have to repeat the same work if they wanted to create something similar.
I uploaded it to my Github repository and open-sourced it. I sent the Github link and my website out into the world. About a week later I noticed the stars on the Github repository were increasing by hundreds and developers started opening issues. That was the beginning of it all.
What went into building the initial product?
I don't remember exactly how much time it took me to create the first version of the free product, but it was probably a week or two and about 300 lines of code. (Bear in mind that I had experience coding a similar site and therefore had gained some knowledge from that.) At that time I was still working full-time as a web developer so I could only use my free time to dedicate to the project. That’s literally all I needed. There was no need for funding; all I needed was the time to code it.
Something I kept in mind from the very beginning was making it simple to use, something accessible for non-experienced developers. I was tired of seeing open-source projects with poor documentation that assumed a good knowledge of the language. So I started creating a product that was as simple as possible.
I decided not to add certain features that I didn't think were necessary and I documented everything in detail. After some time, customers started to ask for new features that were not originally planned. It was at that point I realized I could charge for that kind of extra work.
I remember talking a bit with Dave DeSandro who also used to work full-time selling similar products for web developers. He was encouraging and we exchanged a couple of private messages on Twitter. That proved very helpful with my decision: I asked my boss if I could work on my product during my free time and got permission after talking with HR. A few days later I contacted some tax consultants and registered myself as self-employed.
How have you attracted users and grown fullPage.js?
After I created the Github project I thought it would be beneficial to share it with others and find out if it was useful for them as well.
- I created a landing page to serve as a demo.
- I wrote a blog post.
- I did a quick search on Google for web developer & designer blogs and a list of web resources and jQuery plugins. Then I sent an email to each of those sites with some information about my product asking them if they were interested in publishing an article about it. I did this from time to time.
- I added it to web resources websites like http://www.unheap.com/.
- I answered questions at stackoverflow.com and recommended my free product if it was the right solution. (This tactic also helps others find your product when searching for related things without having to directly position the product’s site.)
The ball kept rolling as word spread around the internet and the stars for the Github project kept increasing. Github even featured me as a trending developer along with my product.
But I didn’t stop there. I continue to promote years after the launch. I wrote an article for BindPress, created a couple of Youtube tutorials, and kept up the conversation on StackOverflow and Twitter. I also was interviewed for articles and podcasts and was a guest speaker on remote webinars.
Even today I'll Google my product to see how I can expand my market (or even gain the trust of the people trying to use it). I want to hear about the struggles, provide solutions, and consider potential new opportunities.
I’ve tried using Google Adwords and Facebook ads, but I didn’t get good results. It may be that my product’s SEO is already quite good and people who want to find it usually find it without ads. That is the benefits of having many sites pointing to yours with articles and tutorials.
What's your business model, and how have you grown your revenue?
Initially, I had no intention to commercialize the project since the product was totally free and open-source. After about three years I started to think about commercializing. Once I'd positioned the product as a source for these kind of components in the market, I was able to breathe and relax a bit more as well as attend to requests from people who wanted to enhance the code with some specific features I hadn't included in the free product. Now that I had more time, I offered them the option to pay me for a custom build of the product.
I did this for a while and I began to notice that people were asking for the same features. Manually customizing the product each time took a lot of time, and I had to wait for those customization requests to come in. I'd go back and forth in email, negotiate the price, attach the files, explain how to use it, etc.
I thought that if I could get rid of all these manual tasks making these customizations available on my website, I wouldn't have to do anything. No emails, manual changes, price discussions, no payment issues...
So about a year and a half later, I decided to start charging for the product itself (as well as the customized extensions to the original product) to see how it would do. I opted for a low price of around $11 for a continual license and provided two more package options for Teams and Organizations. Today these sales make up more than 50% of my revenue (on top of the extension's sales).
At the moment I'm benefiting from three different sources:
I use the Gumroad platform for selling the extensions. It internally uses Stripe and Paypal and saves me from having to deal with the EU VAT craziness in addition to other things, such as generating invoices only four times a month instead of one per client.
I also use an affiliate program provided by the WordPress Theme company, which at the moment provides 40% of the earnings sold through my affiliate link.
All of these combined equate to an average of $15,000/month, but it wasn’t always like this.
In July 2018 I decided to start charging for the product itself, going from a freemium model to a licensed model (still free for GPLv3 though). I almost doubled my income.
My margins are quite big with almost no expenses besides hosting, VPN, tax assistants, newsletter, ads, and social security taxes.
In my case, it would have been relatively easy for the competitors to gain market share if I started charging for it starting on day one. It's easier to make a name for yourself and your product when providing something for free. But again, this might be a result of a market in which software is expected to be free for the most part.
Regarding pricing packages, experiment with different names and ways to present them. There’s a lot of psychology and marketing that goes into it. I only scratched the surface when reading this great article on Stripe by @patio11.
What are your goals for the future?
In terms of revenue, my goal is to finish out this year at 20K/month. To meet this goal I have a few things in mind that I need to work on:
- Create new extensions for the product
- Start selling HTML templates based on the product
- Building some kind of editor for the product
- Finding a way to implement recurring payments in order to maintain a more predictable income over time
- Begin new projects/products (I have a couple in mind and half-baked!)
I’m also collaborating with another guy to create a WordPress Plugin for fullpage.js. I don’t know the Wordpress community very well and I don’t know how will they react to it, but I hope it will be helpful.
I also try to focus on what I consider the "goal of all goals," which is basically keeping up the growth. Sometimes I get too absorbed in my daily work with things like customer support, fixing bugs, dealing with technicalities…and I feel like I'm not really innovating anymore. I’m not building new things or adding any more value to my product. I believe it is important to step back from time to time, take a look at the big picture, and create a roadmap with new goals that will lead not only to a better product but also to a wider market and increase in revenue. This is something Patrick Bet-David talks about in several interesting videos.
On a personal level I would like to keep enjoying the life I’m living now; work is not a burden and I’m free to travel or take off days whenever I want. I don't want to sacrifice my life and free time in order to increase revenue.
What are the biggest challenges you've faced and obstacles you've overcome? If you had to start over, what would you do differently?
Client-side code is not 100% bulletproof and I’m sure there are still many people using them illegally with some ugly tricks. We frontend developers are much less protected from piracy when we sell a product, more so than backend developers or service-providers. Companies usually care more about licensing, but solo developers and freelancers don't always. Recently I had to send a DMCA takedown notice to some software marketplace after I found out someone was distributing a product without the appropriate license. I guess it’s true when they say a B2B business model can be easier!
The “anti-scroll hijacking” movement is another battle I still have to deal with. Basically, it is the belief that no website should — under any circumstances — “hijack” the expected scrolling behavior and overwrite it with a non-default one, which is basically what my product does. I understand this to some extent, but I strongly believe there are no good or bad technologies but rather good or bad uses of the technology.
Another challenge I faced was when other developers started creating similar components. Some had quite good marketing and a good developer behind them, to the point where I saw some of those projects becoming more popular than mine on Github. But keeping up with the market and trying to survive was a huge motivation. I pushed myself harder and tried to develop new features to differentiate myself from others. Nonstop. I think that's what finally made the difference.
In terms of what opportunities I may have missed, some people would say that I should have started to charge sooner. But I think I did the right thing there. The client-side world is full of free stuff and I had to make a place for it in the market. Charging for my product right away may have slowed its growth and made room for other free solutions to establish a stronger position.
What I regret is not creating a plugin for WordPress from the very beginning because I know there’s a big market there too. I should have learned WordPress skills or even hired someone to do it for me.
Other than that, there are probably many things I missed and will never realize. It is not always easy to notice those things from the inside or in the moment. So far, I’m doing well, and that’s what matters to me. Now I’m trying to focus on the long term.
Have you found anything particularly helpful or advantageous?
I think part of my product's success in the early days was due to the fact that Apple released a site for the iPhone 5C with very similar behavior to the one that my product helped to achieve. I launched it only a few days after Apple launched the iPhone5C. It was a total coincidence since I had been working on fullPage.js even before their launch.
And the fact that my product got quite popular on Github helped establish trust and increased my project's visibility. Blogs and websites started talking about it and made tutorials, and my website became very well positioned in search engines like Google. It was (and is) quite easy to end up on my site when looking for a web component to create full-screen sites. As I said before, I don’t think this would have happened if my product was not totally free and open-source at the beginning.
When I started selling extensions for my product I also decided to create an email list. I knew from experience this was a good way of keeping in contact with customers and letting them know about new features or products.
What's your advice for indie hackers who are just starting out?
A few tips:
- Build something you enjoy working on.
- Build something fast and validate the market fast, as suggested in The Lean Startup.
- Don't waste much time with technicalities. Set a release date and go for it. Leave all the unnecessary stuff behind.
- Great products can be made with almost zero knowledge of technology. Do not waste time trying to learn everything or attending every conference. That’s just a “nice to have” but not required to build something useful. Pieter Levels will tell you exactly the same. Check out his talk here.
- If you are planing to go solo, promote your personal brand. Gain followers on Twitter and create content to position yourself as a trusted person.
- Answer emails and do support by yourself, at least in the beginning. It helps to see potential markets, new opportunities, and where there’s room for improvement.
- Always be nice to customers. Treat them like your boss. No matter what they do, don’t stop being polite.
- Think small and set reasonable targets. Build something you can start building by yourself, do not start looking for investors or thinking you should hire 50 people to achieve your idea. Otherwise, you'll be stuck just dreaming about it. Make it happen!
Where can we go to learn more?
You can check all about fullPage.js on the fullpage.js site: https://alvarotrigo.com/fullPage/.
Any questions about me, my product, or earnings? Feel free to ask me in the comments below!
—, Founder of fullPage.js
Want to build your own business like fullPage.js?
You should join the Indie Hackers community! 🤗
We're a few thousand founders helping each other build profitable businesses and side projects. Come share what you're working on and get feedback from your peers.
Not ready to get started on your product yet? No problem. The community is a great place to meet people, learn, and get your feet wet. Feel free to just browse!
—, Indie Hackers founder