Monsoon v0.2.0
Made by Alexandre Kohler Star

Concepts

A no build CSS framework for real projects

Plenty of projects never needed a frontend build: a marketing page, documentation, an admin panel rendered by the server, a prototype for tomorrow morning. A no build CSS framework gives those projects a complete design system with one file and no toolchain to maintain.

3 min readBy Alexandre Kohler

Who it is for

Monsoon is designed for the many places where adding a bundler costs more than the problem you are solving:

  • Static sites and landing pages. Plain HTML files uploaded to any host.
  • Server-rendered applications. PHP, WordPress themes, Django and Jinja templates, Rails views, Go templates and any other language that outputs HTML.
  • Prototypes and demos. Ideas you want on screen in minutes, often in a single file you can send to someone.
  • Legacy pages. Older sites where you want modern layout utilities without touching a fragile pipeline.
  • Documentation and internal tools. Pages that should keep working years from now with no dependency updates.

It also works inside projects that do have a build. Import the file once and it behaves like any other stylesheet.

How the workflow feels

Without a compiler in the loop, the feedback cycle is the browser itself. Edit a class, save, refresh. Because the stylesheet already contains every class, the browser developer tools become a playground: add shadow-lg or md:grid-cols-3 to an element in the inspector and see the result immediately, then copy the class list back into your template.

card.html
<!-- try classes directly in the inspector, then keep what you like -->
<article class="rounded-2xl border bg-surface p-6 shadow-sm hover:shadow-lg transition">
  <h2 class="text-xl font-semibold">Weekly report</h2>
  <p class="mt-2 text-muted-foreground">Everything is already in the stylesheet.</p>
</article>

There is no cache to clear, no watcher to restart and no out of date generated file, because there is nothing generated.

The theme lives in CSS, not in a config file

Build based systems usually keep colors in a configuration file that the compiler reads. Monsoon keeps the theme in the browser as custom properties. Set one variable and every semantic color follows:

theme.css
:root { --seed: #0d9488; }

Because it is runtime CSS, you can also change it per section with an attribute, per user from a value in your database, or with a color picker. See generate a theme from one color for the details.

Keeping a project tidy without tooling

Long class lists are the usual concern with utility CSS. A few habits keep them readable when no build tool is there to help:

  • Order classes the same way every time: layout, spacing, size, typography, color, state. For example flex items-center gap-3 px-4 py-2 text-sm font-medium bg-primary text-primary-foreground hover:bg-primary/90.
  • Extract repeated markup into your template language: a partial, an include, a component or a macro, not a new CSS class.
  • Prefer semantic colors such as bg-surface and text-muted-foreground. They carry meaning, switch with dark mode and follow the seed.
  • When a rule is truly custom, write it in a small stylesheet next to Monsoon and use the theme variables.

What a no build stylesheet costs

The honest trade off is file size. A compiler can emit only the rules a page uses; a predeclared file ships all of them. Monsoon keeps that cost small, about 88.3 kB with brotli for everything, and cached after the first page view. When you need less, run the optional purge command once and serve its output. For most sites the full file is smaller than a single hero image.

SetupWhat you runTypical size
Full file from a CDNnothingabout 88.3 kB brotli
Purged file you hostnpx monsooncss purge onceabout 39.2 kB brotli for the kitchen sink demo

Frequently asked questions

Is a no build CSS framework slower in the browser?

Not in a way you will measure. The browser parses one stylesheet once and caches it. There is no JavaScript running to apply styles.

Can I use Monsoon in a project that already has a bundler?

Yes. Install monsooncss and import the CSS file the way your bundler imports CSS, or keep the CDN link. It does not need a plugin.

How do I avoid repeating long class lists?

Use the reuse tools of your template language, such as partials, includes or components. The class list then lives in one place.

Does it work offline?

Yes, if you host the file yourself. Copy dist/monsoon.min.css from the npm package into your project.

Try it in ten seconds

Paste this into any HTML page. No install, no build.

index.html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/monsooncss">

No recent searches

Try , , or .

Recent

Loading the search index

No results for ""

Check the spelling, or search a class name such as px-4.