Got tired of scattering interaction logic across 5 different files in React, so I built a "behavior-first" UI runtime. Looking for collaborators! ✦
Hey everyone! I’m building Nagare, an open-source runtime that unifies styling (Tailwind/CSS), animation, state, and JS logic into a single block called a "Soul".
Instead of managing ternary states in your JSX and bouncing between event handlers and CSS, you define the behavior in one place. Your JSX stays 100% clean.
"use client" import { useSoul } from "@nagarejs/react"
export default function Component() { useSoul((soul) => { soul("button-soul") .default({ tw: "px-4 py-2 bg-blue-600 text-white rounded", state: { active: false } }) .click({ onStart: { css: `@if active { transform: scale(0.95); }`, js: function(this: any) { this.state.active = !this.state.active; } }, onEnd: { css: `transform: scale(1);` } }) })
return <button data-soul="button-soul">Click Me</button> }
🛠️ Tech stack: TypeScript, React, Vite. 🚀 Current status: Core engine works, but I'm looking for people who want to help build:
Vue / Svelte adapters
Better event listener cleanups
More built-in detectors (like swipe, drag, or idle)
I don't have a massive network, so I'm looking for curious frontend devs who want to collaborate, roast my architecture, or help shape the API.