Hit $ 8,000 Monthly Revenue

After making changes to the Doka Image Editor license price tiers in December, more customers started purchasing the company license, this has caused a revenue increase of around $ 3,500 a month.

Sales December 2018 (around $ 1,500) to February 2020 (around $ 8,000)

In the mean time work has started on a complete rewrite of Doka, I've chosen Svelte to do this. It's a compiler so I can still build towards different other frameworks without having to include Svelte in (for example) a React component. The compiler can also export to a Web Component. The new version is going to offer undo/redo functionality, more customisation options (custom views / buttons), an even more native feel, smaller footprint, and better performance.

I'm planning to open source some of the Svelte components and actions I'm working on.

  1. 2

    Congrats Rik, glad the changes worked out. Out of interest, when was Doka first deployed?

    1. 5

      25th of November 2018, had been working on it since March that year.

    2. 1

      Yeah, I'd love to know this too

  2. 2

    super growth, nice job and useful project for me thanks.

    1. 1

      That's great to hear!

  3. 2

    Inspiring stuff. Nice one Rik.

  4. 2

    Awesome growth, thanks for sharing.

  5. 2

    Gongrats, super cool! What does rewriting mean in this case? Do you have to do it all over? That seems like a lot of work for little gain? Would love to know more!

    1. 1

      The current version is based on a custom written render engine (same engine as the one I used for FilePond) but I find it's getting very difficult to add new features (adds weight and it's very verbose). At this point it's hampering growth, therefor, time to rewrite the thing. I've waited for a while because I wanted to make sure I wasn't scratching my developer itch.

      Fortunately it's not as difficult as starting over as lots of tricky parts I already have solutions for, but it does take some time. With wanting to add more flexibility I also have to think things through a bit more (better API). So I'm taking my time to get it right.

      1. 1

        I mean 8k$ doesn't sound bad, what makes one person say "lets rewrite this better"? I mean if something works and produces enough $$$ why work harder?

        1. 2

          Because it's getting difficult to add new features/fix bugs. This results in not being able to add popular feature requests (that make sense), which might mean they'll be forced to look for another solution eventually.

          Also, it helps that I love building web components and enjoy pushing browser tech to its creative limits.

          1. 2

            Good reason, btw, the visuals of the website are stunning. Mind sharing how to get started with these kind of looks?

            1. 4

              Thanks! Ehm, I'm not sure, I sometimes browser Dribbble for inspiration, mostly it's experimenting with what's possible with web tech. I've been messing around with webdesign and development for nearly 25 years so I think it's also simply experience, doing lots of different things (3d / game development / animation / etc), then trying out what works on the web.

  6. 2

    crazy!! congrats rik! 🥳

  7. 1

    Congrats, hey are you the same guy that created filepond! Love that React module...

  8. 1

    That's amazing work Rik!

  9. 1

    That's amazing! Congrats!

  10. 1

    how do you ensure people renew licenses, or even purchase to begin with? (aside from the word "copyright" in a comment) I found your js in a minute. ok it's obfuscated but I can still use it. do you even check the domain being used?
    I would like to build some commercial library as well but I'm reluctant to count on client-side commercialization for long... tips?

    1. 6

      The code is "uglified" but not obfuscated, obfuscation adds additional nonsense and domain locking, it's just annoying and also adds a lot of weight so would impact the demo site itself. I don't check domains, it's another point of failure and annoyance so I've decided to not go there.

      I think the amount of devs that are able to rip scripts and still implement the ripped scripts correctly is shrinking. I find more and more devs rely on frameworks and components made for those frameworks. They are not comfortable looking under the hood and working with vanilla JS and CSS (which in this case is what you would be ripping), the package however contains adapter components for all popular frameworks.

      If you want to run a business on "ripped" scripts then be my guest, I wouldn't take that risk. Also, I think devs who do so are not my target audience. So instead of worrying about piracy I focus on customers who are willing to pay. Around 90% renewed their yearly licenses so far so I guess I'm doing something right.

      Customers can access the code and support on the private PQINA customer portal, if the license expires they can still access versions up to the date the license expired.

      Don't worry about the code being client side. Build something awesome and customers will come.

  11. 1

    Hey Rik, congrats! I was wondering the potential of using Doka in a product customizer tool? I have a manufacturing company and we do a lot of in-house print on demand stuff, looks like it has potential to be a great tool for that.

    1. 1

      Hi! Sounds like a good fit, if you want you can reach out at https://pqina.nl/doka/contact/ and provide some more info about the tool, happy to discuss options.

  12. 1

    Congratulations! 👍👍

    Amazing what a change in pricing can do. Always amazes me how a simple change can make such a profound difference.

    1. 1

      Thanks Anita! I was equally amazed :D

  13. 1

    Amazing result! Congrats Rik. I am curious, how was your experience with Svelte?

    1. 1


      It's been great so far. It still has some quirks (nothing crazy), the GH repository is super responsive so that's nice, and it's just very refreshing writing reactive statements and using the Svelte stores to build interfaces. It's very performant as well.

      At this point, I'd love it if they'd add TypeScript support. Apparently it's coming.

  14. 1

    Hey! I'm also working on codernotes.io in Svelte. I'm really enjoying it, but I'm curious to hear what you think!

    Unfortunately, I just found out this morning that Rollup can't do dynamic imports, which is very unfortunate since it's blocking a feature of mine. I'm going to investigate today to see if Sapper can fix this issue.

    1. 1

      Isn't that, it does work in this Rollup REPL

      Maybe I'm missing something?

      I've been really enjoying Svelte, namely the reactive statements and the stores + derived stores, they allow such a different approach to logic.

      1. 1

        Wasn't able to get it to work unfortunately. Do you know if this is only supported in Sapper?

        I got to the point where the import was working, but it was trying to find the file and looks like rollup wasn't adding it during the build phase, so it was 404-ing. Progress, but not enough.

        Sorry to detract from the main point of your post!

        1. 1

          No worries :)

          I have no experience with Sapper yet, love to try though, but as far as I know both Svelte and Sapper are unrelated (apart from author) to Rollup.

      2. 1

        Looks like maybe the dependency I am using is trying to require() instead of import(), causing the issue. Thanks for mentioning this, let me see if I can fix it!

Trending on Indie Hackers
I bootstrapped my SaaS to $15,000 MRR over 3 years AMA! 52 comments What are the fuel materials that motivate you to build projects? 11 comments I'll review your SaaS onboarding for Free! 9 comments I made a notion doc, curated list of tools to get you started as a maker/creator, It's Free. 8 comments Be faster or be better - what way to grow? 2 comments How to develop products quickly with a small team? Server-side rendering is back! 2 comments