frontpage.
newsnewestaskshowjobs

Open Source @Github

fp.

Open in hackernews

A Reactive JavaScript Framework

https://github.com/kwy404/Voodoo.js
2•kwy404•42m ago

Comments

kwy404•42m ago
I've been building a JavaScript framework called *Voodoo.js*. I'd rather get torn apart in the comments than hear that it looks cool.

It started with one question: how much JavaScript do we really need for everyday interactive interfaces?

For a lot of apps I don't want a component tree, a bundler, five libraries and state managed elsewhere, all wired back into HTML. Sometimes I just want to keep writing HTML.

## The 30-second version

```html <div v-data="{ count: 0 }"> <button @click="count--">-</button> <strong>{ count }</strong> <button @click="count++">+</button> </div> ```

No `querySelector`. No `addEventListener`. No Virtual DOM. Voodoo observes the real DOM and connects HTML directives to a fine-grained reactive system built on `Proxy`.

## Why another JS framework?

Voodoo isn't trying to replace React, Vue or Svelte. The target is projects where the server already renders the HTML — Laravel, Django, Rails, PHP, Go templates — plus small frontends where a full SPA is overkill.

Philosophically it sits near Alpine.js, HTMX and petite-vue. The difference I was chasing: HTTP, forms, validation, state, components, routing and reactivity should feel like one system, not five glued together.

## Declarative HTTP

Instead of wiring a button by hand:

```js button.addEventListener('click', async () => { if (!confirm('Delete user?')) return await fetch('/api/users/42', { method: 'DELETE' }) showToast('User deleted') }) ```

You declare the intent:

```html <button v-delete="/api/users/42" v-confirm="Delete this user?" v-toast-success="User deleted"> Delete </button> ```

Forms work the same way:

```html <form v-submit="/api/users" v-validate v-toast-success="User saved"> <input name="email" type="email" required> <button type="submit">Save</button> </form> ```

The goal isn't to remove JavaScript. It's to stop writing JavaScript that only restates what the HTML already says. When you need more, plain JS is right there.

## No `eval()`, no `new Function()`

The lazy way to implement `@click="count++"` is `eval()`. Voodoo does neither: expressions go through a real engine — Lexer → Pratt Parser → AST → Interpreter — parsed and interpreted by Voodoo itself, so the framework controls what syntax is supported and what expressions can reach.

## Fine-grained reactivity

The reactive layer uses `Proxy`, tracking dependencies per object and per property. No Virtual DOM diff — the real DOM is patched directly. The API should feel familiar:

```js reactive() ref() computed() watch() watchEffect() effectScope() toRaw() markRaw() ```

It runs from a plain `<script>` tag with no build step, or as ESM: `import { reactive } from 'voodoojs/reactivity'`.

## Where it fits

Server-rendered HTML + Voodoo.js → reactive interface. In Laravel:

```blade @foreach($users as $user) <button v-delete="/users/{{ $user->id }}" v-confirm="Delete user?"> Delete </button> @endforeach ```

The backend keeps rendering the app. No separate frontend application.

## The honest part

What began as an experiment grew into reactivity, directives, components, stores, HTTP, forms, validation, routing, i18n, charts, devtools and a CLI. That growth is now the problem. It doesn't need more features — it needs stability: security hardening, parser edge cases, tests, API stability, benchmarks, docs.

I'd rather ship a small set of features people can trust in production than a huge one nobody can.

## What I'm asking for

If you work with Alpine.js, HTMX, Vue, petite-vue, Stimulus or Livewire:

1. What would stop you from using this? 2. Which parts of the API feel intuitive? 3. Which feel unnecessary? 4. What would you need before calling it production-ready?

If something looks questionable in the architecture, API or security model, tell me. That's the feedback I need.

*GitHub:* https://github.com/kwy404/Voodoo.js

bitpush•35m ago
Hows this different from htmx?

Tubeviz – automatically edit YouTube footage to music

https://github.com/interrupt21h/tubeviz
1•int0x21•46s ago•0 comments

AIxCC: Competition Design, Architectures, and Lessons Learned

https://arxiv.org/abs/2602.07666
1•wslh•1m ago•0 comments

Developing provably correct Rust code with Verus

https://www.amazon.science/blog/developing-provably-correct-rust-code-with-verus
1•shortj•2m ago•0 comments

Terminating elegantly: a guide to graceful shutdowns

https://packagemain.tech/p/graceful-shutdowns-k8s-go
2•theanonymousone•2m ago•0 comments

Bayesian Workflow PDF from Andrew Gelman

https://statmodeling.stat.columbia.edu/2026/08/25/bayesian-workflow-free-pdf/
1•jreynar•4m ago•0 comments

Remote Teleop for Robotic Arms

https://www.youtube.com/watch?v=c_pf-9-gLOg
1•chfritz•6m ago•1 comments

Show HN: cdai – the AI-enhanced cd command

https://github.com/franzenzenhofer/cdai
2•franze•7m ago•0 comments

FTC accuses Amazon of running a 'secret ad surcharge scheme' in new lawsuit

https://techcrunch.com/2026/08/31/ftc-accuses-amazon-of-running-a-secret-ad-surcharge-scheme-in-n...
4•psychanarch•8m ago•0 comments

Passive Recovery of Sound from Video

https://people.csail.mit.edu/mrub/VisualMic/
1•caiobegotti•9m ago•0 comments

The online shopping trend where you buy nothing

https://restofworld.org/2026/south-korea-shopping-trend/
1•zdw•11m ago•1 comments

Show HN: Claude Code Arcade

https://github.com/jystervinou/claude-code-arcade
1•jystervinou•15m ago•0 comments

Show HN: I made a minimalist digital zine powered by 5 random emoji prompts

https://moon-zine.net/
1•riedhes•15m ago•0 comments

Show HN: Sheet-Based Infrastructure, Sheeternetes and Sheet-Native Foundation

https://sncfoundation.github.io/landscape.html
1•tym83•16m ago•0 comments

LaSuite.coop

https://lasuite.coop/
1•ngrislain•17m ago•0 comments

LiveSplit

http://livesplit.org/
1•skibz•20m ago•0 comments

Elon Musk did well for a penniless immigrant

https://utopiayouarestandinginit.com/2026/08/31/elon-musk-did-well-for-a-penniless-immigrant/
1•speckx•21m ago•0 comments

old.reddit.com Now Requires Log-In

https://www.old.reddit.com
4•ed95•23m ago•1 comments

Nvidia-Labs Object Oriented Agents

https://github.com/NVIDIA-NeMo/labs-OO-Agents
2•wslh•23m ago•0 comments

Vexatious Litigants

https://www.gov.uk/guidance/vexatious-litigants
1•robin_reala•24m ago•0 comments

Show HN: Transform text and images into cinematic AI videos

https://h3max.app/
1•wowinter15•24m ago•0 comments

The brain struggles to make new neurons in people with depression

https://www.nature.com/articles/d41586-026-02661-8
3•bookofjoe•27m ago•1 comments

Why Garfield Phones Are Washing Up on a French Beach Since the '80s

https://www.thisiscolossal.com/2026/08/silly-little-plastic-cat-short-film/
2•gmays•28m ago•0 comments

Top Remote Work Trends in Germany in 2026

https://www.foxapply.com/blog/en/remote-work-trends-germany-2026
1•josanjohnata•28m ago•0 comments

The law won't save us from Meta's 'pervert glasses' The only solution is mockery

https://www.theguardian.com/commentisfree/2026/aug/31/law-meta-pervert-glasses-mockery
7•6LLvveMx2koXfwn•28m ago•0 comments

Show HN: Room Treatment

https://roomtreatment.diy/landing
3•gregojaca•28m ago•0 comments

Dropbox Got Hacked

https://twitter.com/yonilevy/status/2094521566826541248
9•yonilevy•28m ago•0 comments

One False Alert and Zero False Autonomous Actions in over 15,000 Pod-Hours

https://pandocore.io/blog/clean-run-soak-results
1•eaferstl•30m ago•0 comments

The river of Apple's interface guidelines

https://hig.josefrichter.design/
3•josefrichter•31m ago•0 comments

Show HN: Keel - A conductor, not an agent loop

https://daneb.github.io/keel/
2•danebalia•32m ago•0 comments

Show HN: Doom Compiled into an LLM

https://github.com/physicsrob/torchwright_doom/
1•physicsrob•32m ago•0 comments