{"id":30249040,"url":"https://github.com/lucianofedericopereira/meat","last_synced_at":"2025-08-15T08:07:21.404Z","repository":{"id":304029312,"uuid":"1017525367","full_name":"lucianofedericopereira/meat","owner":"lucianofedericopereira","description":"🥩 MEAT- Mitt Enhanced Application Toolkit","archived":false,"fork":false,"pushed_at":"2025-07-14T23:38:09.000Z","size":502,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-14T18:37:07.953Z","etag":null,"topics":["dom-binding","dom-sync","dom-updates","event-bus","framework-agnostic","frontend-utils","html-integration","javascript-library","localstorage","plugin-system","reactivity","state-management","vanilla-js","vue-composables","vue3"],"latest_commit_sha":null,"homepage":"https://lucianofedericopereira.github.io/meat/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lucianofedericopereira.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"liberapay":"lucianofedericopereira","ko_fi":"lucianofedericopereira"}},"created_at":"2025-07-10T17:05:29.000Z","updated_at":"2025-07-14T23:38:13.000Z","dependencies_parsed_at":"2025-07-13T04:32:45.004Z","dependency_job_id":null,"html_url":"https://github.com/lucianofedericopereira/meat","commit_stats":null,"previous_names":["lucianofedericopereira/meat"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/lucianofedericopereira/meat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucianofedericopereira%2Fmeat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucianofedericopereira%2Fmeat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucianofedericopereira%2Fmeat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucianofedericopereira%2Fmeat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lucianofedericopereira","download_url":"https://codeload.github.com/lucianofedericopereira/meat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lucianofedericopereira%2Fmeat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270539673,"owners_count":24603203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dom-binding","dom-sync","dom-updates","event-bus","framework-agnostic","frontend-utils","html-integration","javascript-library","localstorage","plugin-system","reactivity","state-management","vanilla-js","vue-composables","vue3"],"created_at":"2025-08-15T08:07:19.223Z","updated_at":"2025-08-15T08:07:21.395Z","avatar_url":"https://github.com/lucianofedericopereira.png","language":"PHP","funding_links":["https://liberapay.com/lucianofedericopereira","https://ko-fi.com/lucianofedericopereira"],"categories":[],"sub_categories":[],"readme":"# 🥩 MEAT\n\n**Mitt Enhanced Application Toolkit**  \n\n![MEAT Mascot](./assets/a1.png)\n\nMinimal reactive state system with plugin support, Vue composables, and zero dependencies.\n\nOne API, ten frameworks, zero stress. MEAT plugs into Alpine, Angular, Astro, Nuxt, Next.js, React, Qwik, Solid, Svelte, and Vue — saving your bacon across the board.\n\n![Version](https://img.shields.io/badge/version-1.B0-ribwich)\n![Open Source](https://img.shields.io/badge/license-MIT-blue)\n![Code Size](https://img.shields.io/github/languages/code-size/lucianofedericopereira/meat)\n![Contributions](https://img.shields.io/badge/contributions-open-brightgreen)\n![Author](https://img.shields.io/badge/made%20by-Luciano%20Federico%20Pereira-blue)\n[📘 MEAT Handbook](https://lucianofedericopereira.github.io/the-meat-handbook/)\n\n\n## 📘 Handbook\n\nFor deep dives into MEAT’s architecture, patterns, and plugin system, see:\n\n**🧠 The MEAT Handbook**  \nA signal-first architecture reference by Luciano F. Pereira.  \n→ [Download PDF](https://github.com/lucianofedericopereira/the-meat-handbook/raw/main/export/v1/the-meat-handbook.pdf)  \n→ [Download EPUB](https://github.com/lucianofedericopereira/the-meat-handbook/raw/main/export/v1/the-meat-handbook.epub)  \n\n---\n\n**1.B1 — Bugfix Release**\n\n- Persistence plugin now only wraps the **public** methods (`meat.set` / `meat.setState`) — no more “invalid assignment to const” errors.  \n- `use()` warnings only fire on *actual* method overwrites (no more PLUGIN_CLASH spam).  \n- Restored aliases and APIs for backwards-compat:  \n  - `meat.bindToGlobal()`  \n  - `meat.signal()`  \n  - `meat.listen()`  \n  - `meat.logState()`  \n  - `meat.chronicle()`\n\n\n🍖 Core Features (Ribwich Edition)\n\n- ✅ Reactive state engine with set(), get(), and setState()\n- 🧠 Per-key mutation history via MeatChronicle\n- ⏪ Undo / rollback / safe execution with undo(), rollbackAll(), and safe(fn)\n- 🔍 Runtime introspection (dump(), find(), changedKeys(), lastModified())\n- 🧪 Temporal snapshotting with historySnapshot()\n- 🔗 DOM binding via linkToDOM() — usable across Alpine, Svelte, Astro\n- 🧩 Plugin architecture with .use() for extensions\n- 🗂️ LocalStorage support via persist() and load()\n- ⚙️ Framework adapters for Vue, Laravel, React, Nuxt, and more\n\n---\n\n## 🍖 Features\n\n- Reactive state via `meat.set()` / `meat.get()`\n- Scoped listeners and wildcard events\n- DOM syncing with `linkToDOM()`\n- Zero dependencies\n- Plugin architecture via `.use()`\n- Vue 3 composables\n- LocalStorage persistence\n\n---\n\n## 📦 Install\n\n```bash\nnpm install @lucianofpereira/meat\n# or\nyarn add @lucianofpereira/meat\n```\n\nBasic usage:\n\n```ts\nimport meat from 'meat';\nmeat.set('theme', 'dark');\n```\n\n---\n\n## 🔌 Plugin Support\n\n```ts\nmeat.use(pluginFn); // Load MEAT-enhancing logic\n```\n\nExamples:\n\n- `logState.js` adds `meat.logState()` using `console.table()`\n- `meatVuePlugin.js` enables `$meat` globally in Vue apps\n\nComposables:\n\n```ts\nconst theme = useMeat('theme'); // Vue reactive ref\n```\n\n### 🧠 Included Plugins\n\nMEAT ships with **MeatChronicle**, a single all-in-one runtime plugin providing:\n\n- per-key mutation logs\n- `undo()` and `rollback()` capabilities\n- `safe(fn)` execution guards\n- temporal snapshots via `historySnapshot()`\n- `logMessage()` with scoped tracing\n\nActivate with:\n\n```js\nimport { MeatChronicle } from './plugins/chronicle.js';\nmeat.use(MeatChronicle);\n```\n\n---\n\n## 📚 Docs Overview\n\n| Page | Description |\n|------|-------------|\n| [README](./docs/README.md) | Feature overview |\n| [Getting Started](./docs/Getting-Started.md) | Setup tutorial |\n| [Architecture](./docs/architecture.md) | Internal design flow |\n| [Plugins](./docs/plugins.md) | Writing MEAT plugins |\n| [MeatChronicle](./docs/chronicle.md) | Plugin architecture and API |\n\n\n### 🔧 Framework Integrations\n\n| Page | Framework |\n|------|-----------|\n| [Alpine](./docs/alpine.md) | Alpine.js |\n| [Angular](./docs/angular.md) | Angular |\n| [Astro](./docs/astro.md) | Astro |\n| [Nuxt](./docs/nuxt.md) | Nuxt |\n| [Next](./docs/next.md) | Next.js |\n| [React](./docs/react.md) | React |\n| [Qwik](./docs/qwik.md) | Qwik |\n| [Solid](./docs/solid.md) | Solid |\n| [Svelte](./docs/svelte.md) | Svelte |\n| [Vue](./docs/vue.md) | Vue |\n| [Laravel](./docs/laravel.md) | Blade macros, middleware, event syncing |\n\n---\n\n## 🐘 Laravel Integration\n\nMEAT includes first-class support for Laravel with Blade directives, hydration macros, hashed syncing, and event-binding middleware.\n\n```blade\n@meatHydrate($state)\n@meatSync('message')\n@meatSyncEvent('message', \\App\\Events\\PayloadSynced::class)\n```\n\n\n\n### 🧪 Examples \u0026 Tests\n\n- [`examples/`](./examples/) — MEAT demos for every framework  \n- [`test/`](./test/) — Unit tests for all plugin integrations\n\n---\n\n## 🧪 Testing\n\n```bash\nnpm test\n```\n\nCovers:\n- Core event bus\n- Plugin usage\n- Vue reactivity\n\n---\n\n## 🛠 Contributing\n\nFork → branch → build → PR.  \nSee [`CONTRIBUTING.md`](./CONTRIBUTING.md) for setup tips and code style.\n\n---\n\n## 💬 Contact\n\n**Author**: Luciano Federico Pereira  \n💼 [LinkedIn](https://www.linkedin.com/in/lucianofedericopereira/)  \n🐛 [GitHub Issues](https://github.com/lucianofedericopereira/meat/issues)\n\n---\n\n## 📜 License\n\nLicensed under the [MIT License](./LICENSE) © 2025 Luciano Federico Pereira\n\n---\n\n\u003e MEAT is hot, readable, and ready for your plate.\n\n---\n\n## 💛 Support MEAT\n\nMEAT is maintained by [Luciano Federico Pereira](https://github.com/lucianofedericopereira).  \nIf you find it useful, consider sponsoring via:\n\n- [Ko-fi](https://ko-fi.com/lucianofedericopereira)\n- [Liberapay](https://liberapay.com/lucianofedericopereira)\n\nYour support fuels open-source tools that are lean, clean, and reactive-driven. 🐮🔥\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucianofedericopereira%2Fmeat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flucianofedericopereira%2Fmeat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flucianofedericopereira%2Fmeat/lists"}