
Tailwind CSS: From Side-Project Byproduct to Multi-Million Dollar Business - adamwathan
https://adamwathan.me/tailwindcss-from-side-project-byproduct-to-multi-mullion-dollar-business/
======
kemyd
They deserved it, and I'm pleased with their results.

When I started my _paid_ online editor for Tailwind CSS (
[https://tailwind.build](https://tailwind.build) ) in November 2019, and
someone posted a link to my Show HN on Discord, Adam replied:

"bums me out when other people get stuff released using my tools before me
because i have to invest so much time into building the actual OSS its all
built on :/"

And this ruined my happy launch day :)

When I read that they make much more money, I am again in an emotionally
neutral state ;)

Congratulations!

~~~
biggestlou
Yeah, that really feels like the exact wrong attitude to have. If you don't
want people to build money-making products on top of your OSS, either license
it that way or make it closed source. Period. I don't see any reasonable
grounds for complaint here.

~~~
adamwathan
This isn’t really what I was saying when I made that comment (in a personal
conversation among a small group of friends).

I love that other people are building things on top of Tailwind and I think
it’s great. I was only describing my own emotional state and how much pressure
it makes me personally feel to finish our commercial projects, and how
stressful it is to feel like there’s not enough time because my time has to be
split instead of being able to just focus on the commercial tools.

Purely just me commenting on my own stress and being vulnerable among friends,
not any sort of commentary on the ethics of other people building things on my
OSS.

------
_AzMoo
I don't understand tailwind. The entire point of CSS is to separate style from
structure. How does applying composable utility classes to all of your HTML
elements differ from the old days of using HTML attributes for styling?

Edit: So after looking into it a bit more, and specifically the section in the
documentation about extracting components, I understand where they're coming
from a bit better. Extracting repeated compositions of utility classes into
reusable components or named classes is exactly how I use other CSS frameworks
such as bootstrap or foundation. I'm seeing the major difference between
tailwind and other CSS frameworks as being the lack of pre-defined UI
components. The minimalism is obviously a big advantage for performance, but
otherwise I still see little difference between Tailwind and other CSS
frameworks.

~~~
kilburn
I'm not sold on the idea, but there is one major difference: you constraint
yourself to a set of values. This attains two goals:

(1) You have to think less. Try "margin-top medium", look at the result, "oh
it's too much", try "margin-top small", look at the result, ok fine. No px-
fiddling.

(2) It produces more consistent results (i.e.: things tend to look nicer).

What doesn't win me is that, while I see the increase in development speed
this brings, I don't see how would you handle maintainability (i.e.: what
happens when the design needs to change?). I suspect the trade-off here is
that you just renounce to such redesigns and commit to the idea that you'll
rebuild the entire thing if/when the time comes (tech advances so quickly in
this space that you may want to do it anyway).

~~~
andrei_says_
both 1 and 2 are trivial in scss using presets for colors, spacing, font
sizes.

margin-top: margins(xl);

~~~
kilburn
True, but this also misses part of the point:

\- Once you are in the "margin-top: xxx" part, nothing prevents you from
saying "just this time" and writing some px (or whatever) value, either
because you don't remember the options at your disposal, because none of them
feel exactly right or whatever. Using tailwind you would have to create an
entirely new size definition, which is a big hassle. That is, using scss does
not actively push you to this particular "pit of success" whereas using
tailwind does.

\- Responsive handling is much more verbose in scss. Consider "sm:mt-2" versus
"@include responsive(sm) { margin-top: margins(2) }"

------
andrewstuart
I wonder what they'll do with their money and success.

I'm reminded of LogoJoy - a single founder company that started sucking in
huge amounts of cash revenue, which the owner spent on employing people and
offices and growing a company and getting investors who recommended they
rebrand, destroying much of the value and revenue of LogoJoy. I bet that
founder is wishing he stayed a single person company and just banked all that
cash. [https://betakit.com/looka-lays-off-80-percent-of-staff-as-
fa...](https://betakit.com/looka-lays-off-80-percent-of-staff-as-failed-
rebrand-from-logojoy-cut-revenue-in-half/)

So I wonder which way these guys will go. Will they bank the cash and buy
houses and have a quiet and happy life, or will they spend it on employing
people and growing a business and getting investors to try to make more money?

~~~
adamwathan
No plans to go the VC route. We've hired three people now — two developers
focused almost entirely on open-source, and another who splits his time
between our commercial projects and contributing in our OSS community by
answering questions, writing documentation and guides, etc.

We keep a few hundred grand in the bank as a payroll cushion but everything
else gets pulled out and put in our personal bank accounts. We're both
millionaires and financially independent at this point, and are only
continuing to do what we do because we really enjoy it. We're building a small
team so we have more freedom to pursue other fun R&D-style projects while
still delivering on what our customers and community are asking for.

~~~
thelittleone
Big fan of tailwindcss and paying customer of tailwindui also. The decision to
purchase was at least in part based on your active engagement with users on
the discord channel.

------
deltron3030
Adam, Steve, have you considered building a marketplace for Tailwind UI, and
focus more on guidance and quality control on the design side instead of
building out all the components yourself?

It could help with the creation of interactive components for all ecosystems,
like those that are tightly coupled to a specific ecosystem considering that
it's not only frontend frameworks, but also backend frameworks that have their
own LiveView version or way to do components now (e.g. Elixir Phoenix has
Surface which is like writing backend React components, Rails has view
components).

Supporting all those combination yourself seems daunting, and it would suck to
see components for React or LiveWire/Alpine, but not other ecosystems that
aren't covered by the skillset of your team.

~~~
adamwathan
We've tossed it around, but ultimately we believe that our customers buy
Tailwind UI because Steve and I designed/built it, and we've built a lot of
trust in our community over the last 4-5 years. I wouldn't want to be a full-
time QA person either.

Hoping instead that we can find the right small team size that lets us do more
of this in a first-party way, and selectively support the tools we find people
ask for the most.

Could definitely see a world where we work with experts in different
technologies to port our stuff over and maintain it under some sort of
retainer agreement though, just don't see us ever giving up any of the actual
UI design or initial implementation work.

~~~
deltron3030
Thanks for replying, love your stuff.

I bought into it because as a designer I got interested in SaaS, and my
impression was/is that you have a perspective on design edgecases that most
traditional or semantic html devs lack because they're more focused on content
sites and blogs.

Keep up the work, but don't forget smaller frameworks. Your last suggestion
with the retainer agreement sounds good!

------
kanobo
Wow 2 million dollars with Tailwind UI, I would never have imagined that would
be possible when it was first pre-released with only a few templates five
months ago. Congrats!

~~~
AlchemistCamp
It's worth every penny! It's saved me so much time on new projects and just
been a great resource to study and learn from.

------
idkwhoiam
Everybody talks productivity. I completely agree. I was so much quicker with
Tailwind CSS than any other approach I was familiar with. But let's talk about
maintenance. I had to go back to a project I completed 6 months ago to change
a few things and boy do these classes look like a mess!

------
mmckelvy
Great story. Also debunks the commonly held belief that developers won’t pay
for code / libraries / components.

If you’re an open source maintainer, this is a pretty good example of how to
monetize your work.

------
muska3
Played around tailwind css this weekend, pretty good and enjoyable. There's
some quirks that make it slightly annoying to use with a static site generator
that takes in markdown files and converts them to html. In this case it
becomes annoying to style these files via something like tailwind.

For simpler projects there's tachyons as well, which shares a similar
philosophy and is a bit simpler in scope.

~~~
francislavoie
Maybe I'm misunderstanding, but can't you just use @apply to set up all the
classes your markdown parser might output?

~~~
muska3
Yes that's the only way to do it, but then you kinda cirumvent the whole
tailwind philosophy. The tailwind typography package is an attempt to fix
this, but right now it's annoying to use.

------
habosa
Really happy for them. Tailwind is so good that it’s actually made my website
designs 5x better. I’m able to translate my thoughts into pixels so much
faster and more accurately with Tailwind than with any other CSS
system/framework.

If you haven’t tried it, you should. It definitely looks really silly (inline
styles?!?) but it’s so powerful.

------
rjknight
TLDR: I've written a moderately complex app using Tailwind and only had to
write 33 lines of CSS.

I've been using Tailwind to build a moderately complex app, and for me the
killer feature of Tailwind is that _most of the time I don't have to think in
CSS_.

It's not that I can't think in CSS - I've written lots of CSS over the years.
However, as someone putting together a UI, I want to think in terms of
slightly higher-level constructs. With Tailwind I almost never need to think
about specific pixels values, weird browser quirks, or how breakpoints are
handled. Instead, I can think almost entirely about how to achieve the correct
behaviour.

I work with ClojureScript so I have hot reloading and fast feedback, and I can
build a moderately complex UI component in a few hours. Not having to context-
switch into CSS really helps me to stay in "flow". If there's some very
specific design feature that I need, then I can still write some custom CSS,
but this is sufficiently rare that in a 10k SLOC project there are 33 lines of
hand-written CSS.

------
bloudermilk
I sincerely hope the creators avoid falling into the VC honey pot. At their
current scale they're on pace to build a sustainable business around the core
open source library. Growing beyond their UI component library toward an open
marketplace (a la Noun Project) should be easily doable in the low 7-figure
revenue range.

------
orliesaurus
Good job on the milestone: personally I have never tried Tailwind, still on
Bootstrap... Guess I am old-fashioned...

~~~
1123581321
We still find Bootstrap unmatched for training content creators and
developers, while making completely custom templates. The utility classes in
Bootstrap get us far enough that most CSS specificity is flat.

------
skrebbel
I'm very impressed that they sold $2m so quickly. Especially given that these
are lifetime packages, not SaaS, it's really impressive. It means ~8000 people
became their customer in just a few months! That really blows me away, and I'd
love to understand more about how they pulled that off.

~~~
christophilus
I bought the $150 package. It’s easily saved me $150 in hours I haven’t spent
tinkering with design. It’s a great value proposition. I don’t use tailwind
CSS; just the designs.

~~~
adsjhdashkj
Yea, i'm already planning on buying it tbh.

I'm a backend dev and, while i can do frontend - and i usually am picky about
design, i don't _want_ to design, especially during prototyping.

I'm planning on learning Tailwind for post-PoC styling, but buying the
Tailwind Builder (Lifetime) for early PoCs to get styling out of my way.

I really like the offering of not just templates, but transitioning my
templates into my final product _when i want_.

But, i haven't used any of it yet. We'll see, but it's definitely worth the
$99 license _(to me)_ if it even remotely pans out.

------
alexellisuk
As the maintainer of several very popular open source projects in the infra-
structure space, I was initially impressed by hearing the team had gotten 2M
USD in revenue over three months, but then read they'd already brought in 2M
USD in the previous two years, totalling 4M USD over ~2.5 years.

If I could figure out a value-stream like these two gents, then my OSS work
would be on another level. This isn't your classic "Indie Hackers SaaS" or
viral eBook stuff.

Hats off to you. I'll be the first to buy your eBook :-)

~~~
mmckelvy
I think the key leap they took to generate revenue was to build out a fully-
baked, batteries-included product based on their open source library. Sure you
could build out the components in Tailwind UI yourself, but a lot of people
will pay the $250 to have a solution that "just works".

------
hmexx
Has anyone considered using utility-style CSS combined with semantic class
naming? Example:

    
    
      <div class="profile-card"></div>
      .profile-card {
        @include tailwind-css-1
        @include tailwind-css-2
        ...etc...
      }
    

This way your html has semantic classes but the definition of the classes uses
something like tailwind instead of raw CSS. One level of abstraction. Seems
the best of both worlds?

~~~
zeusly
You mean this? [https://tailwindcss.com/docs/extracting-
components/](https://tailwindcss.com/docs/extracting-components/)

------
aoeusnth1
What a feel-good story.

TailwindCSS and TailwindUI have been huge time savers for my project. It’s
nice to hear the origin story!

------
qilisiang
Wow, a huge success from Tailwind UI project. I would never imagine that
Tailwind UI could bring in so much revenue. I think Tailwind CSS is a niche
CSS framework that's why I am working on project similar to Tailwind UI. More
competition is good for customers. Still invite only tho.

------
AlchemistCamp
> _" In classic developer fashion though, I spent the entire week making
> decisions about the tech stack, and had maybe one full day at the end to
> actually hack on the real functionality.

> One of those decisions was what to do about the CSS."_

And it worked! Adam is living the dream.

------
rikroots
Thank you, Adam, for developing Tailwind CSS. I've been using it exclusively
for my side projects since the start of the year. The thought of going back to
a less utility-based CSS system (and/or SASS/LESS) leaves me cold.

------
artellectual
I'm a customer of Tailwind UI and I have to say I'm very inspired by this
post. Great product, solves a real problem. It's bound to reach this point.
Great work!

------
vinrob92
We used Tailwind for our newly launched SaaS, so thanks for that!

------
jmuguy
Congrats Adam and team! We've only been using Tailwind for a few months but
honestly its completely changed how we approach design.

------
christiansakai
Amazing. I'd never expect that a CSS library can make so much money. Maybe
there's always a market for UI libraries.

------
calferreira
How do they handle the licensing of JS and CSS ?

------
Giorgi
to be honest it is top-notch product, I am using it since "utility-first CSS
framework" era, and it's awesome.

------
greenie_beans
i suck at design and good css. tailwind has made my frontend work not suck as
much. love it, thank y'all

------
adamzapasnik
Good for them, tailwind is a great lib :)

------
Frontendor_Team
Hello Tailwind UI,

We are really pleased for you.

You really are an inspiration to us that made us create the idea of
[https://Frontendor.com](https://Frontendor.com) HTML Library and keep going
to the end and not giving up about our dream.

Thank you so much. Frontendor Team

------
itwy
Tailwind UI is still in preview with very few components. There's no way it
generated 2 millions. No even 10k. This is a gross publicity stunt.

~~~
topoftheforts
The bundle is $249. If you don't think 8k people would pay that to have
lifetime access to components that look great and allow you to build a great
looking website in hours, you don't really understand the dev market.

As a developer, Tailwind UI is a god send, I've been waiting for years for a
_great_ looking CSS framework with pre-made components

(Also, they had a pretty big audience already after selling Refactoring UI
which is a really useful book for developers that can't design, like me)

~~~
alessioalex
Exactly. $249 is peanuts compared to the time saved not spent on these
components each and every time (for multiple projects even).

------
ablekh
Congratulations! I would highly recommend removing that extremely annoying,
disruptive and useless "Get Early Access" banner at the bottom of every page
on your website (including documentation). GitLab used to have a very similar
banner (don't remember exactly what it said). I wrote to them and eventually
they have gotten rid of it (I like to think that it was, at least, in part,
due to my criticism :-).

