frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: Basecoat – shadcn/UI components, no React required

146•hunvreus•8mo ago
Basecoat ports the upcoming shadcn/ui v4 [1] to plain HTML + Tailwind (no React):

- Live demo & documentation: https://basecoatui.com

- MIT‑licensed and free: https://github.com/hunvreus/basecoat/

- Works with any backend (Flask, Django, Rails, PHP, etc.) or static site.

- Fully theme‑compatible with shadcn/ui [2].

- Uses a sliver of Alpine.js only for a few interactive bits (e.g. combobox). Swap in your own JS if you prefer.

- Dead simple to use, just drop in a class here and there:

  <button class="btn" data-tooltip="This is a tooltip text">Click me</button>
Why I built it: after moving from a Next.js stack back to Flask + Tailwind + HTMX, I missed shadcn/ui and didn’t want walls of Tailwind classes (like Flowbite or Preline).

Feedback is most welcome: bugs, requests for components, criticism.

[1]: https://v4.shadcn.com/

[2]: https://basecoatui.com/installation/#install-theming

[3]: https://pagescms.org

Comments

BenderV•8mo ago
Awesome. Using Vue/Tailwind, I'm definitely interested in this. Maybe you could try to add examples of integrations with others frameworks? I'll play with it and give you my 2 cents.
hunvreus•8mo ago
Hello there Ben. Sure thing, I'll try and expand the docs.
codybontecou•8mo ago
Not sure if you're aware, but there's a well-supported Vue ShadCN library: https://www.shadcn-vue.com/
hunvreus•8mo ago
Yeah, it's excellent.
replwoacause•8mo ago
Looks nice! Can you add a CDN option? Would be nice for a quick start to play around.

Also, reminds me of https://franken-ui.dev

hunvreus•8mo ago
Yep, I've been considering adding a CDN option.

I think it may be on the heavier side though (~100k).

pacmanche•8mo ago
Now you just need to remove Tailwind
revskill•8mo ago
And then ?
campak•8mo ago
and then... that solves the issue of a Tailwind dep
7bit•8mo ago
If deps are a problem for you, don't use basecoat.
hunvreus•8mo ago
I think it's a fair ask.

Being able to just add one line to import the CSS styles and being able to get up and running quickly (like Alpine.js or HTMX do).

Not great if you're trying to build a serious production app, but great if you're just building a simple proof-of-concept or simple tool.

7bit•8mo ago
It is a fair ask. But not if you ask a Framework that is based on Tailwind. It's like critisising Windows for not being macOS.
hunvreus•8mo ago
If I offer a CDN version, it will be Tailwind-free.
yawnxyz•8mo ago
Yes please! Even if we have to add the tailwind as a CDN, this would be useful — as we don't have to use npm / yarn to build the project anymore.

(I like building pure html files in alpine)

o_m•8mo ago
Why did you decide going old school using Alpine.js instead of using plain vanilla web components?
edoceo•8mo ago
Alpine is old school now?
o_m•8mo ago
I'd say anything new in 2025 that involves working with the DOM that doesn't use web component is a waste. Lately I have been porting some old JS libraries (7+ years old) that still are visually impressive to web components, and in my experience after porting some libraries there is about 30% fewer lines of code. Before web components there was so much work to get things up and running in the DOM. Alpine.js does this behind the scenes, but there isn't really a need for it anymore.
edoceo•8mo ago
I've been using RiotJS when I need partial component support - wasn't an all-in thing like React ; and I thought HTMX and Alpine are also good for these partial upgrades. Maybe WebComponents are fully supported now? (I can't keep up)
1oooqooq•8mo ago
https://caniuse.com/?search=web%20components
hunvreus•8mo ago
I did seriously consider it, but again that was about trying to solve the problem in the least opinionated way.

Which is also why I made the Alpine code as unobtrusive as possible.

You can get away with using purely the CSS if you don't need dialogs or combobox. And you can plug your own JS if you decide to do so.

However, I will definitely try and see if I can make a web components version as soon as I have some time.

campak•8mo ago
I dig it. Love this
hunvreus•8mo ago
Great, let me know if you end up using it.
gsanderson•8mo ago
Looks great!

One suggestion would be adding a focus trap, such as when a Dialog opens. It's nice to use the tab key to move around the Dialog (inputs and buttons). Currently focus leaves to the page behind. It might be as simple as adding https://alpinejs.dev/plugins/focus#x-trap

hunvreus•8mo ago
Yeah, I looked into it but wanted to avoid adding plugins.

I already do a bit of (simple) focusing here and there, so it shouldn't leave the focus on the background:

https://github.com/hunvreus/basecoat/blob/main/src/js/dialog...

But more complex scenario require you to be specific about the field you want to see focused. I was thinking about allowing you designate the field to focus on.

What would you suggest?

dbbk•8mo ago
Why aren't you just using the built-in dialog element that already handles this?
hunvreus•8mo ago
<dialog> is kind of a PITA to style (backdrop, transitions, etc), and doesn't really solve any of the tough problems with dialogs (e.g. locking scrolling).

I tried really hard to use <dialog> and popover but didn't succeed. Maybe somebody more skilled can make it happen.

diiiimaaaa•8mo ago
So if I understand correctly all JS is custom-written Alpine JS components.

And all CSS is custom classes that use Tailwind @apply, I'm not sure why, can someone elaborate.

hunvreus•8mo ago
- I prefer using Alpine rather than Vanilla JS these days. But the JS code is only for dialogs, combobox and tabs. I don't even use it myself on most simple projects. Curious what you would recommend using instead? Web components?

- I use `@apply` in all of my custom Tailwind classes. It's easy to keep it consistent with the rest of your styles, and in this case it meant it was pretty easy for me to copy a good chunk of shadcn/ui's own components. You usually just use regular CSS for custom Tailwind utility classes?

strzibny•8mo ago
I also use @apply with Tailwind, makes this a beautiful not spagetti experience.
boxed•8mo ago
Can someone eli5 how this is different from something like bootstrap?
wafadaar•8mo ago
Bootstrap is a completely different framework with a different design language (one that many may precieve as out of fashion). This library/framework allows folks to use ShadCN (a component library) similar to Bootstrap which is only available through React/Vue/Svelte, etc.. with vanilla HTML.
boxed•8mo ago
So it's different in visual design, but the goal here is actually to make shadcn more like bootstrap? Hmm.. I think I like that.
hunvreus•8mo ago
Kinda, yeah. The goal is to make it possible for any web dev to use shadcn/ui with a regular HTML + CSS setup. No React. No Vue. Just whatever you're already using (e.g. Rails, Laravel, Django, ...).
christoff12•8mo ago
crayons vs colored pencils
jmisavage•8mo ago
FYI I don't think all of your styles are loading on the page. Tried safari and firefox and it doesn't look right.
hunvreus•8mo ago
Would you mind sending me a couple of screenshots at hunvreus@gmail.com, or adding it to an issue at https://github.com/hunvreus/basecoat/issues?

It would be incredibly helpful for me to debug.

WilcoKruijer•8mo ago
Very cool! Are you manually porting all components or are you using some sort of automated process?
hunvreus•8mo ago
All manual. It was a bit of work at first, but mostly because I had to decide how to structure them. It's actually quite straightforward to extend and maintain now.
zeroq•8mo ago
>> Works with any backend

Have you fully tested it with Solaris or AIX? /s

hunvreus•8mo ago
You had me reminisce of my uni days, logging into the Solaris stations pretty much every day. That purple wallpaper is etched into my eyes.
exiguus•8mo ago
> Why I built it: after moving from a Next.js stack back to Flask + Tailwind + HTMX, I missed shadcn/ui and didn’t want walls of Tailwind classes (like Flowbite or Preline).

I understand that Next.js can feel bloated, especially when used as a static site generator or within a classic JAMStack setup.

Basecoatui reminds me a bit of Bootstrap during the golden era of Ruby on Rails.

I took a look at the Git repository and tried to find an automated solution to convert shadcn to plain HTML but didn't find anything suitable. Is there a script available for this, or was this done manually?

hunvreus•8mo ago
It was all done manually.
tegdude•8mo ago
Thank you! I was searching for this exact thing the other week.
hunvreus•8mo ago
That's great to hear. Do let me know if you see any bug or missing component (I'm planning on adding the command component for example).
jacktheturtle•8mo ago
this is awesome, thanks for creating it
hunvreus•8mo ago
My pleasure.
Jonovono•8mo ago
This is awesome. I did the same and have been using AlpineJS Pines UI library. Been pretty happy with it! But will take a look at this
hunvreus•8mo ago
Pines is really neat. I just don't like the wall of classes, but super neat nonetheless.
czhu12•8mo ago
Really great! A major downside of moving from SPA's back to vanilla JS is how much you lose in terms of UI components.

I've normally done DaisyUI + Tailwind + Rails but it never feels quite right. Basecoat is a really nice step forward.

I have to imagine the author is planning to charge for a premium package at some point, but given that a huge % of development is spent on UI design, I'd be more than happy to pay for a year of updates.

hunvreus•8mo ago
Glad you like it. Do let me know what you end up building with it.

> I've normally done DaisyUI + Tailwind + Rails but it never feels quite right.

Same here: I could never quite get into Flowbite, Daisy UI, Preline or any of the other many alternatives.

> I have to imagine the author is planning to charge for a premium package at some point,

I did wonder if people would want to buy premium layouts or components. No plan to charge for anything for now though.

rglullis•8mo ago
Would you be interested in getting rid of Tailwind and have the styling strictly with SASS mixins?
hunvreus•8mo ago
Yes, I wanted to export it as a raw CSS build and host it on a CDN.

Feel free to watch the project if you want to be notified when I get that out.

urbanisierung•8mo ago
This is great! Thanks for implementing this!
hunvreus•8mo ago
My pleasure.
klaussilveira•8mo ago
This is great! The HTMX community needs more friendly UI kits like this.
hunvreus•8mo ago
Are you the HTMX CEO?
anon1094•8mo ago
Glad you shared this. Looks nice!
hunvreus•8mo ago
Thanks! Let me know if you build anything cool with it.
drcongo•8mo ago
This looks great. I've never used React so had never heard of shadcn, and annoyingly I've just got to the point in a side project where pulling out DaisyUI and replacing it with this might be a bit of a chore.
hunvreus•8mo ago
Do let me know if you end up using this. I'd love to get real life feedback on using it.
diordiderot•8mo ago
Absolutely love this. Wanted to do this myself but never enough to get started. You're a legend.
hunvreus•8mo ago
Thanks a lot, I got this done over the course of a few weeks and had no idea whether people would find this helpful. Looking forward to seeing others using it in the wild.
juddlyon•8mo ago
There’s a huge need for this, thank you! I build server-rendered marketing sites and there’s a huge gulf between the jQuery and React era.
hunvreus•8mo ago
Have you played with Alpine.js before? HTMX?

I think you can get quite far these days WITHOUT React or Vue.js (and I say that as the maintainer of a Next.js/React open source project [1]).

[1]: https://pagescms.org

juddlyon•8mo ago
Yep, I’ve used Alpine extensively and HTMX here and there. Lots of Vue.

There are not sets of polished, battle-tested UI libraries made for server side. Bootstrap ships with JS, but most of the CSS and template frameworks assume you’re using a headless setup.

I thought Web Components might spur things, but not really. React has continued to dominate.

hunvreus•8mo ago
What do you use on the server? Basecoat has Nunjucks and Jinja macros, but I’d like to add more (e.g. blade, liquid, etc). I also plan on building more layout demos (e.g. marketing pages).
4m1rk•8mo ago
Nice job! I've tried dozens of frameworks with various languages, but always return to Django+Tailwind+HTMX+Alpine.
hunvreus•8mo ago
High five! Close enough to my stack.
akka47•8mo ago
This looks awesome. Thanks a lot!
hunvreus•8mo ago
You're welcome.
hamish-b•8mo ago
This is exactly what I was wanting to reach for, wanted my chrome extension UI to match my react website. Appreciate your work!
hunvreus•8mo ago
Do send me a link to your extension if you end up using Basecoat: hunvreus@gmail.com
hamish-b•8mo ago
Will do! Will drop you a line when I do.
pxheller•8mo ago
This is great! I really like the style of shadcn/ui.

Recently I’ve been using ChatGPT to convert shadcn components to JinjaX. Will definitely give yours a try!

hunvreus•8mo ago
Didn't know JinjaX, interesting.

FYI, I have Jinja macros available: https://basecoatui.com/installation/#install-macros

r0fl•8mo ago
I’m moving from react to wordpress and I could not be happier that I discovered this today

I’m so pumped to try this out!!!

hunvreus•8mo ago
Very happy to hear that some people find it useful.

Please do let me know if things aren't working as expected, I want to make this a great alternative to anything else out there: https://github.com/hunvreus/basecoat/issues

Be brutally honest.

Show HN: Sweep, Open-weights 1.5B model for next-edit autocomplete

https://huggingface.co/sweepai/sweep-next-edit-1.5B
411•williamzeng0•14h ago•73 comments

Show HN: ChartGPU – WebGPU-powered charting library (1M points at 60fps)

https://github.com/ChartGPU/ChartGPU
623•huntergemmer•23h ago•189 comments

Show HN: A quiet, offline-first reading app for reading books

https://deep-reader-page.vercel.app
2•smallluo•42m ago•0 comments

Show HN: Take a Break – a gentle extension to stop autoplay late at night

https://hardiksondagar.me/take-a-break/
2•hardiksondagar•55m ago•0 comments

Show HN: Rails UI

https://railsui.com/
186•justalever•19h ago•95 comments

Show HN: RatatuiRuby wraps Rust Ratatui as a RubyGem – TUIs with the joy of Ruby

https://www.ratatui-ruby.dev/
143•Kerrick•5d ago•27 comments

Show HN: Differentiable Quantum Chemistry

https://github.com/lowdanie/hartree-fock-solver
48•lowdanie•4d ago•13 comments

Show HN: SGR – A Linear-Complexity "Living Cell" Outperforming Transformers

2•MrPan•2h ago•0 comments

Show HN: High speed graphics rendering research with tinygrad/tinyJIT

https://github.com/quantbagel/gtinygrad
27•quantbagel•10h ago•8 comments

Show HN: yolo-cage – AI coding agents that can't exfiltrate secrets

https://github.com/borenstein/yolo-cage
56•borenstein•23h ago•70 comments

Show HN: Open-source certificate from GitHub activity

https://certificate.brendonmatos.com
39•brendonmatos•3d ago•8 comments

Show HN: Retain – A unified knowledge base for all your AI coding conversations

https://github.com/BayramAnnakov/retain
40•Bayram•18h ago•14 comments

Show HN: Mastra 1.0, open-source JavaScript agent framework from the Gatsby devs

https://github.com/mastra-ai/mastra
211•calcsam•1d ago•69 comments

Show HN: Dotenv Mask Editor: No more embarrassing screen leaks of your .env

https://marketplace.visualstudio.com/items?itemName=xinbenlv.dotenv-mask-editor
20•xinbenlv•14h ago•23 comments

Show HN: See the carbon impact of your cloud as you code

https://dashboard.infracost.io/
65•hkh•23h ago•26 comments

Show HN: Diesel-guard v0.5.0 – Lint Diesel/SQLx Postgres migrations (24 checks)

https://github.com/ayarotsky/diesel-guard/releases/tag/v0.5.0
3•ayarotsky•1h ago•0 comments

Show HN: Company hiring trends and insights from job postings

https://jobswithgpt.com/company-profiles/
44•sp1982•20h ago•6 comments

Show HN: Yashiki – A tiling window manager for macOS in Rust, inspired by River

https://github.com/typester/yashiki
20•typester•3d ago•10 comments

Show HN: Semantic search engine for Studio Ghibli movie

https://ghibli-search.anini.workers.dev/
26•aninibread•1d ago•7 comments

Show HN: Agent Skills Leaderboard

https://skills.sh
133•andrewqu•1d ago•42 comments

Show HN: Skill & MCP server for searching and retrieving 200k+ icons

https://github.com/better-auth/better-icons
2•bekacru•8h ago•0 comments

Show HN: Hyve – Parallel isolated workspaces for coding agents, multi-repo dev

11•eladkishon•1d ago•1 comments

Show HN: SpeechOS – Wispr Flow-inspired voice input for any web app

https://www.speechos.ai/
12•gangster_dave•22h ago•5 comments

Show HN: PicoFlow – a tiny DSL-style Python library for LLM agent workflows

6•shijizhi_1919•23h ago•0 comments

Show HN: ERCOT Texas power grid dashboard

https://txryan.com/ercot
2•nexuszero•9h ago•0 comments

Show HN: TopicRadar – Track trending topics across HN, GitHub, ArXiv, and more

https://apify.com/mick-johnson/topic-radar
35•MickolasJae•1d ago•9 comments

Show HN: Laptop Stickers – cheap individual short run stickers

https://laptopstickers.store/
7•decryption•10h ago•1 comments

Show HN: I built a chess explorer that explains strategy instead of just stats

https://www.atlaschess.me/
11•Ahmad_shuja•22h ago•5 comments

Show HN: Ocrbase – pdf → .md/.json document OCR and structured extraction API

https://github.com/majcheradam/ocrbase
96•adammajcher•2d ago•35 comments

Show HN: Automatically build sales playbook. For founders doing sales

8•Mrakermo•18h ago•1 comments