Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

shadow-cljs + tailwindcss

This is an example of how to setup shadow-cljs and tailwindcss


git clone app
cd app
npm install
npm run dev

This runs the shadow-cljs server, builds tailwind-css and runs postcss. It will observe cljs-runtime/*.js files in dev and will use main.js for creating a release build.

The first startup takes a bit of time since it has to download all the dependencies and do some prep work. Once this is running you can open browser http://localhost:8020 and get started.


shadow-cljs is configured by the shadow-cljs.edn file and the UI is available at http://localhost:9630.

tailwindcss is configured by the tailwind.config.js file.

postcss is configured in postcss.config.js file.

Also check npm scripts configured in package.json, to understand how everything is stitched together for dev and release commands.


During development you can start a REPL.

From the command line use npx shadow-cljs cljs-repl app.

shadow-cljs - config .../shadow-cljs.edn
shadow-cljs - connected to server

This can now be used to eval code in the browser (assuming you still have it open). Try (js/alert "Hi.") and take it from there. You might want to use rlwrap npx shadow-cljs cljs-repl app if you intend to type a lot here.

You can exit the REPL by either CTRL+C or typing :repl/quit.

PS. Most probably you want to connect to the REPL from your editor, and not type in the terminal.


To create a release artifact run npm run release which will create a js and css assests.

npm run release