{"id":50829977,"url":"https://github.com/jeremybanka/atom.io","last_synced_at":"2026-06-13T22:01:31.638Z","repository":{"id":363294330,"uuid":"1262581392","full_name":"jeremybanka/atom.io","owner":"jeremybanka","description":"Versatile state engine for TypeScript applications.","archived":false,"fork":false,"pushed_at":"2026-06-08T09:59:57.000Z","size":848702,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-08T10:17:58.437Z","etag":null,"topics":["laziness","nodejs","react","solidjs","state-management","testability","typescript"],"latest_commit_sha":null,"homepage":"https://atom.io.fyi","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeremybanka.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-08T05:56:53.000Z","updated_at":"2026-06-08T09:09:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jeremybanka/atom.io","commit_stats":null,"previous_names":["jeremybanka/atom.io"],"tags_count":1000,"template":false,"template_full_name":null,"purl":"pkg:github/jeremybanka/atom.io","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeremybanka%2Fatom.io","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeremybanka%2Fatom.io/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeremybanka%2Fatom.io/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeremybanka%2Fatom.io/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeremybanka","download_url":"https://codeload.github.com/jeremybanka/atom.io/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeremybanka%2Fatom.io/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34301732,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"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":["laziness","nodejs","react","solidjs","state-management","testability","typescript"],"created_at":"2026-06-13T22:01:14.977Z","updated_at":"2026-06-13T22:01:31.632Z","avatar_url":"https://github.com/jeremybanka.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"atom.io logo\" src=\"https://raw.githubusercontent.com/jeremybanka/atom.io/main/apps/atom.io.fyi/public/favicon.svg\" width=\"144\" height=\"144\"\u003e\n\u003c/div\u003e\n\n\u003ch1 align=\"center\"\u003e\n  \u003ccode\u003eatom.io\u003c/code\u003e\n\u003c/h1\u003e\n\n`atom.io` is a TypeScript state engine for modern ECMAScript apps. It centers on\nsmall, explicit primitives: atoms for source state, selectors for derived state,\ntransactions for coordinated writes, timelines for history, families for keyed\nstate, and adapters for React, Solid, realtime sync, browser storage, JSON,\ndevtools, and testing.\n\nThis monorepo is the workshop around that engine: the published package, the\ndocumentation site, the project scaffolder, and a set of templates that exercise\n`atom.io` in real app shapes.\n\n## A Tiny Taste\n\nState stays small, derived data stays lazy, and React reads exactly what it needs.\n\n```tsx\nimport { atom, selector, setState } from \"atom.io\"\nimport { useO } from \"atom.io/react\"\n\nconst todosAtom = atom\u003cstring[]\u003e({ key: `todos`, default: [] })\nconst openTodos = selector\u003cnumber\u003e({\n\tkey: `openTodos`,\n\tget: ({ get }) =\u003e get(todosAtom).length,\n})\nconst addTodo = () =\u003e setState(todosAtom, (todos) =\u003e [`ship it`, ...todos])\n\nexport function InboxButton() {\n\tconst open = useO(openTodos)\n\treturn \u003cbutton onClick={addTodo}\u003e{open} open\u003c/button\u003e\n}\n```\n\n## Start Here\n\n- Install the library with `npm i atom.io`.\n- Read the package README at [packages/atom.io](./packages/atom.io/README.md).\n- Browse the docs at [atom.io.fyi](https://atom.io.fyi).\n- Generate a starter with `npm create atom.io`.\n\n## What's Here\n\n| Path                                                                   | Purpose                                                                                                                       |\n| :--------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- |\n| [packages/atom.io](./packages/atom.io)                                 | Core state engine, framework adapters, realtime packages, devtools, testing utilities, docs source, and package-level README. |\n| [packages/create-atom.io](./packages/create-atom.io)                   | CLI for creating new `atom.io` projects from this repo's templates.                                                           |\n| [apps/atom.io.fyi](./apps/atom.io.fyi)                                 | Astro documentation site for guides, concepts, API docs, and examples.                                                        |\n| [templates/preact-svg-editor](./templates/preact-svg-editor)           | Preact/Vite starter showing interactive SVG state.                                                                            |\n| [templates/react-node-backend](./templates/react-node-backend)         | React starter paired with Node services for backend-oriented examples.                                                        |\n| [templates/solid-lossless-numbers](./templates/solid-lossless-numbers) | Solid/Vite starter focused on precise numeric state.                                                                          |\n\n## Working Locally\n\n```sh\npnpm install\npnpm build\npnpm test\npnpm lint\n```\n\nUseful focused commands:\n\n```sh\npnpm --filter atom.io test\npnpm --filter atom.io.fyi dev\npnpm --filter create-atom.io build\n```\n\n## AI Agent Docs\n\nThe published `atom.io` package includes agent-friendly documentation. After\ninstalling, start with `node_modules/atom.io/AGENTS.md`; it points to concise\nconcept notes, package guides, and source-linked examples in\n`node_modules/atom.io/docs/agent/`.\n\n## Provenance\n\nThis repository was forked from `jeremybanka/wayforge` as a dedicated home for `atom.io` and related projects. Its Git history now begins with the commit that introduced `atom.io` on April 11, 2023; earlier Wayforge history remains part of the original repository.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeremybanka%2Fatom.io","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeremybanka%2Fatom.io","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeremybanka%2Fatom.io/lists"}