Hi! I'm Rik Schennink, I'm the owner of PQINA, my one-man-band web component company. A couple of years ago I quit my front-end developer job to pursue my dream of building commercial and open-source JavaScript UI components.
At the end of November 2018, I launched Doka.js, a web-based image editor offering a near-native user experience. Doka enables users to quickly crop, rotate, resize, and apply filter effects to images they upload. My customers use it to safeguard the quality of images uploaded by their users.
Six months later and Doka is averaging around $3,000 MRR.
For the past couple of years, I've been building and releasing plugins on Envato, which is like an app store for web products. My main strategy was to scout their marketplace for successful components that I felt I could do better at, assuming that if a component was successful a better version would probably also be successful. I had built a couple of rich UI plugins that relied heavily on animation. During my search, an image crop and upload component popped up and I decided to give it a go, figuring it would be an excellent UI to further explore animation on the web. This is how Slim was born.
Slim was my stepping stone to Doka.
I was kind of surprised at how much interest Slim generated. The number of customers that stated they'd been looking for something like Slim for years told me there was an untapped market. I gathered a lot of customer feedback, and the backlog quickly started to grow, but while improving Slim, I found that the codebase was not flexible enough to incorporate every feature my customers needed.
The solution to this would be two-part: FilePond and Doka. As I wanted to move out of the Envato marketplace (more on this later), these two new products would stand on their own. FilePond would handle the file managing part and Doka the file editing part. Together they would offer the functionality of Slim, plus a lot more.
I initially launched FilePond as a premium (paid) component planning to later offer Doka as a free add-on. But it turned out there are plenty of file upload components available so customers didn’t have a lot of incentive to put down money for a premium one (unfortunately, good looks was not enough).
I decided to switch things around, make FilePond a free product and use it as an entry to Doka, which would now be the paid product. This would also make it easier to set up Doka in such a way that it worked with other file upload libraries like Dropzone and Uppy, in turn attracting a bigger audience. I open sourced FilePond under the MIT license and started work on Doka.
Building Doka took me around six months. I would spend around three days a week working on the project and generate extra income with consulting work on the remaining days. I'm a father of two and I didn't want to sacrifice the precious time I spend with my children, so all work had to be completed in a four-day-work-week window.
Doka uses the same render engine as FilePond, so luckily that part of the work was already done. The difficult part was the math involved in calculating the crop. I must've refactored the Doka cropping logic four or five times. My math skills aren't the best; I have to draw things to be able to wrap my head around complex concepts like intersecting crop and image rectangles. There were moments I was ready to give up, that I had to walk away from the code for a couple of days to save my sanity, but I'm glad I persevered.
I wanted to get to market as fast as possible in order to capitalize on the momentum generated by the open-source version of FilePond. I decided to focus on a high-quality cropping experience and leave out all the rest. Releasing it as a plugin for FilePond would result in far less work as it would not require a separate brand identity. Launching it as a separate product would have to wait until v2. This was also the first product I would sell in my own webshop, so I wanted to know if that was even possible with the traffic my site generated.
The initial version of Doka (FilePond Image Editor) was soft-launched early October and generated around $1,500 in sales that same month. I quickly worked on the standalone version for the remainder of October and well into November before officially launching it as Doka.
I learned from launching FilePond that launching a web component like Doka was not about making lots of sales, it was about creating awareness.
The thing with these products is that they're not products you impulsively purchase.
So to gain some attention I created a nice promotion video and successfully launched Doka on Product Hunt, earning the "#2 product of the week" badge. The launch Tweet generated around 300,000 impressions and more than 30,000 people watched the promotion video. This was a lot more than I expected.
I sold two subscriptions that day, and while that was exactly what I expected to happen, it was still disappointing. Because I managed to generate a lot more attention than I had foreseen, I was quite happy with how launch day unfolded. A lot of developers learned about Doka which hopefully meant that, when the time came that they needed an image editor, they might take a look at Doka.
Month | Visitors |
Jan ‘19 | 2500 |
Feb ‘19 | 3400 |
Mar ‘19 | 3300 |
Apr ‘19 | 3600 |
May ‘19 | 3600 |
June ‘19 | 3700 |
To send traffic from FilePond to Doka, I've set up a Doka demo on the FilePond product page and have added Doka GIF animations on the FilePond GitHub repositories. Integrating FilePond with Doka is done in a heartbeat, so once a developer gets started with FilePond, the dev should also be aware of the existence of Doka. This all helps increase awareness and traffic towards the Doka products page.
To make it as easy as possible to get started with FilePond, I monitor Stack Overflow questions related to FilePond. Seeing quality answers on Stack Overflow and a healthy conversation in the GitHub issue tab should give confidence that the product is viable for use in production.
Currently, I'm slowly expanding the Doka feature set and release articles on how FilePond and Doka can help with streamlining user file uploads. These articles are designed to attract organic traffic; visitors then end up on the FilePond or Doka website and eventually might require a license.
While working on Doka and FilePond I tweet animated GIFs mixed with technical advice of what I am working on at the moment. This is heavily inspired by Indie Game Developers like Anton Kudin and Stephan Hövelbrinks and how they promote the games they're working on.
Month | Revenue |
Nov ‘18 | 388 |
Dec ‘18 | 1164 |
Jan ‘19 | 1358 |
Feb ‘19 | 1843 |
Mar ‘19 | 1358 |
Apr ‘19 | 1843 |
May ‘19 | 2813 |
June ‘19 | 3239 |
I started by selling plugins through Envato. They have a huge customer base so it was a very nice way to quickly learn about marketing and product proposition and get some initial clients. They also take quite a big cut of the sale — 50% when you start out, and that's when you sell exclusively through Envato. They run the store and manage the customer database; as an author you don't have direct access to your customers and to me this felt very restricting. For instance, when you find a critical bug in one of your products, there is no way to reach out to all your customers.
About half of PQINA's income is currently generated by plugins hosted on Envato. Doka is quickly growing to take over. This month is the first month that Doka generated more income than Envato.
Plugins I sell on Envato are single-purchase plugins. Doka is sold on a yearly subscription basis and subscription price is based on developer team size. As long as a customer is subscribed, updates and support are available. This gives me a steady revenue stream, which in turn creates a stable environment to work on Doka.
Since I wanted to sell Doka on my own, I had to set up a store as well. I didn't want to deal with VAT-MOSS and I didn't have time to code an e-commerce system, so I decided to go with Gumroad. Gumroad functions as a reseller and takes a 3% cut on each sale, and it offered most of the functionality I needed. This allowed me to focus on the product instead of maintaining a customer portal, handling refunds and invoicing, and managing EU VAT rates.
My immediate goal is to reach $4,000 MRR for Doka by the end of the year. With $4,000 MRR, I could safely stop doing my consulting work and focus exclusively on products. It looks like that is going to happen a bit sooner but, from experience, I've seen sales drop during summer. They might pick up after summer but often not as much as spring.
To achieve this monthly recurring revenue, I'm slowly extending Doka functionality to make Doka an image editor instead of an image cropper. I don't plan to create a new version of Photoshop but it would be nice if it exposed a set of mainstream image edit tooling that is available to the user.
The current code base can still be stretched quite a bit but I've already started investigating new ways to further improve performance in my efforts to achieve a native experience on the web. WebGL, Service Workers, and Offscreen Canvas are all technologies that will help with this.
Eventually, I plan to move the plugin files to a system outside of Gumroad where they are easier for my customers to access. That would potentially enable the installation of the library files using a package manager.
The biggest hurdle right now might be the license subscription period ending. I only offer yearly subscriptions and I'm very curious to learn which customers decide to renew their subscription. November 2019 is the first month subscriptions start expiring, so I'll just have to be patient.
Instead of a premium FilePond version, I should've launched an open-source version of FilePond immediately. That would probably have generated a lot more exposure, resulting in faster adoption. Because FilePond was a commercial plugin with a GPLv3 license, a lot of initial discussions were about pricing as opposed to the functionality that was being offered.
A math class would have been a great idea, but I'm afraid it might be too late for me! But seriously, that would've saved a lot of time. It just doesn't come naturally to me so sometimes I get stuck, which feels like I'm wasting precious time.
On that note,I learned to do difficult things — things that require lots of brain power — in the morning and do mindless production work in the afternoon. Too many times morning-me has had to throw away work done by yesterday’s afternoon-me.
I subscribed to WIP, a community of makers. Having access to a community of peers and getting input when sharing your own work is super helpful and energizing. I love to work from home and communities like WIP help to make it feel less lonely. These communities also help to build your network, which comes in handy when promoting your product.
To generate attention, launch your product on Product Hunt, and time it well. Prepare your launch carefully, look at other products, and figure out what they’ve done and how their product stands out from the rest. For Doka, I created a thumbnail with a video loop of the Doka logo being cropped.
Of course, a bit of luck is always welcome. Last year, Adobe decided to discontinue their image editor Adobe Aviary. This will probably result in an influx of clients that are starting to look for alternatives, so some might end up with Doka if it fits their needs.
Try to use things that are hot and happening to your advantage. For instance, the newly announced iOS Dark Mode could've been a great way for me to promote the new Doka Bright Mode. Unfortunately, I only thought of this while writing this paragraph so it's too late now :D.
I've got just one piece of advice: finish something.
Don't move on to your next idea when you've just built version 0.0.1 of your last idea. I know the next idea seems even better and more fun, but this will only result in a hard drive filled with prototypes. I've been there.
Instead, focus and keep working on it. Tell others about what you're working on so it gets harder to walk away from since they’ll ask how your product is doing. Turn it into an actual product. Doesn't matter if it's free or paid. Design a logo. Build a product site. Write documentation.
And then actually launch it.
There is just so much to learn from actually finishing a product and launching it. If that prototype-filled folder rings a bell for you, there probably is a lot more for you to learn in the finishing part instead of the building part. It's time to switch things around.
You can find more information on the Doka product page. If you want to stay up to date on the development of Doka, or are interested in the occasional web dev tip, it's best to follow me on Twitter
If you've got any remaining questions, feel free to ask them below, happy to answer!
@rikschennink i would love to know how you figured the technical in JS, as i am a programmer myself but did you use any references to any articles to achieve this?
Mostly the result of endless experiments with CSS 3D transforms, I found articles on repaint/reflow on google chrome developer docs were interesting, don't have links at hand but a search will probably yield results.
Holy shit that thing feels fing good. Honestly, I just wanna keep pressing buttons and rotating things and applying effects, it's a fing pleasure. Sorry for the swearing but it just feels THAT good. You got a new fan. Would love to check out how that thing is built. You deserve success and if you don't get it then the world is broken and needs to be fixed.
Haha thanks for this!
Currently working on a WebGL which will amp up the smoothness even more ;-)
Just for you to know, I would absolutely pay for tutorials for mere mortals on how to make such slick UI's. (If it can be done by mere mortals, though)
I’d love to write those, will consider it. 👍
It's great to find you here Rik! As you know I've been following you for some time, right after you launched FilePond, and I'm so glad to hear things are going well!!
You definitely deserve it and I'm sure there are yet many good things to come from you!!
One question! You said you plan to provide Doka files through a package manager, how are you planning to do so? Some kind of private package perhaps that requires a password to access?
Thanks man, I appreciate it.
The fullpage.js sales numbers you shared in your interview are inspiring, hoping to reach similar heights ;-)
I've been thinking about generating a unique URL that expires with the license. But, looking at how you handle things with fullpage.js and how for example Froala does things it might be simpler to eventually just offer a free minified version for testing purposes only.
Leaving Envato was one of the best and probably hard decisions, Congrats! I was thinking about lunching my future products outside of Envato and glad to see you could make a successful transition. Good luck.
Yeah, it wasn't an easy decision, but once I realised that for me the Envato market wasn't a good fit I knew that I had to try and move out of it. I think in my case launching FilePond for free has helped a lot, by directing the traffic from FilePond to Doka it was easier to get the initial group of customers on board. So unless you already have a platform of your own with fair a mount of traffic I would advise to go a free + commercial route.
How did you pick the name PQINA? And how do you pronounce it?
Good question!
It started with me really struggling to name my company.
My wife and I went on a week long vacation in the south of Portugal (beautiful it's very much worth a visit). We stumbled upon this little pottery, literally named "Little Pottery" (this is it: http://olariapequena.com). It was a pottery unlike the couple other more traditional potteries we'd seen, instead the owner made modern drawings inspired by the local flora and fauna. We bought a couple of prints and tiles and went on our way.
The way that man did things differently to stand out, combined with the word "Pequena" meaning little and me being on my own as an indie developer really resonated with me. I played around with the characters of the word for a bit and decided to role with it.
I think in english this comes closest to how I pronounce it in Dutch.
"Pa-ki-na"
Hey @rikschennink,
I'm working on https://naminator.io . In case you're still looking for a name, I'd love to hear what you think of it.
Ali.
This comment was deleted 4 years ago
Looks great, could definitely see myself using this. I see you have text/stickers on the roadmap -- is that like years away or months out?
The plan is to add it later this year, it's a very much requested feature.
Parallel to that I'm working on a new major version of Doka that features a WebGL powered image preview which performs even better than the current engine.
This was a good read and I like the product. I bookmarked it and will be buying shortly. Great work.
Thanks! Glad to hear that :-) Happy to have you on board!
This comment was deleted 4 years ago
I scouted existing products and copied what they did right. After launch on Envato the feature requests automatically started to role in.
This comment was deleted 4 years ago