{"id":15501713,"url":"https://github.com/deanrad/antares-ts","last_synced_at":"2026-01-20T02:00:53.432Z","repository":{"id":66562802,"uuid":"133450010","full_name":"deanrad/antares-ts","owner":"deanrad","description":"Antares is an Architecture for making real-time applications with confidence.","archived":false,"fork":false,"pushed_at":"2020-05-05T19:17:36.000Z","size":20825,"stargazers_count":2,"open_issues_count":76,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-06T19:31:05.093Z","etag":null,"topics":["async","functional-programming","observable","promise","react","reactive-programming","redux","rxjs","rxjs6"],"latest_commit_sha":null,"homepage":"https://deanius.github.io/antares/","language":"TypeScript","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/deanrad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"code-of-conduct.md","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}},"created_at":"2018-05-15T02:48:08.000Z","updated_at":"2018-12-10T20:29:44.000Z","dependencies_parsed_at":"2023-02-25T13:45:59.074Z","dependency_job_id":null,"html_url":"https://github.com/deanrad/antares-ts","commit_stats":{"total_commits":101,"total_committers":3,"mean_commits":"33.666666666666664","dds":0.05940594059405946,"last_synced_commit":"f79218903ec7f872e32060612228cf0239018eb2"},"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"purl":"pkg:github/deanrad/antares-ts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanrad%2Fantares-ts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanrad%2Fantares-ts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanrad%2Fantares-ts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanrad%2Fantares-ts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deanrad","download_url":"https://codeload.github.com/deanrad/antares-ts/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deanrad%2Fantares-ts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28593763,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T01:57:22.592Z","status":"online","status_checked_at":"2026-01-20T02:00:07.325Z","response_time":117,"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":["async","functional-programming","observable","promise","react","reactive-programming","redux","rxjs","rxjs6"],"created_at":"2024-10-02T09:05:23.960Z","updated_at":"2026-01-20T02:00:53.411Z","avatar_url":"https://github.com/deanrad.png","language":"TypeScript","funding_links":["https://paypal.me/deanius"],"categories":[],"sub_categories":[],"readme":"## ![Antares](http://www.deanius.com/AntaresLogo.png)\n\nAntares is a way to construct real-time web apps - web apps that have\nessentially banished the notion of stale data from their repertoire,\nand are configured to share and respond with data at the speed modern\nusers expect.\n\n\u003ca href=\"https://s3.amazonaws.com/www.deanius.com/antares-tag.m4a\" target=\"_blank\"\u003e🔊\u003c/a\u003e\n\n![ES 2015](https://img.shields.io/badge/ES-2015-brightgreen.svg)\n[![npm version](https://badge.fury.io/js/antares-protocol.svg)](https://badge.fury.io/js/antares-protocol)\n[![\u003c22 kb](https://img.shields.io/badge/gzip%20size-%3C22%20kB-brightgreen.svg)](https://www.npmjs.com/package/antares-protocol)\n[![Travis](https://img.shields.io/travis/deanius/antares-ts.svg)](https://travis-ci.org/deanius/antares)\n[![Appveyor for Windows](https://ci.appveyor.com/api/projects/status/udjy5549kiy5sk4a/branch/master?svg=true)](https://ci.appveyor.com/project/deanius/antares/branch/master)\n[![Greenkeeper badge](https://badges.greenkeeper.io/deanius/antares-ts.svg)](https://greenkeeper.io/)\n\n[![Dev Dependencies](https://david-dm.org/deanius/antares-ts/dev-status.svg)](https://david-dm.org/deanius/antares?type=dev)\n![npm type definitions](https://img.shields.io/npm/types/chalk.svg)\n[![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier)\n[![try on runkit](https://badge.runkitcdn.com/antares-protocol.svg)](https://npm.runkit.com/antares-protocol)\n![twitter link](https://img.shields.io/badge/twitter-@deaniusaur-55acee.svg)\n\n## What Exactly Is Antares?\n\nAn Architecture for assigning Consequences to Events.\n\n## What Benefits Can I Get By Using It?\n\n- A Clean architecture of code with a high degree of decoupling and fault-tolerance.\n- A clean, cancelable model of async effects, not dependent on a component toolkit like React\n- Kickstart your apps' development by building abstractions that simulate input or output, allowing you to focus on the core functionality, of your app\n- Understand and use the Observable datatype - a type that is a superset of Promise, and which can stand in for processes that feed your app data, or processes that cause consequences to the outside world.\n- Drive your app during testing with 'simulated user interaction' to see more of its functionality without clicking around.\n- Use snapshot testing to verify your app's behavior, whether or not it uses React or even has a UI.\n\n## What kinds of apps can I build with it?\n\nAntares, with RxJS, manages consequences, which any app has, so it's not limited to client or server, or even Web Apps.\n\nThere are many demo apps included in this project that show what you can build.\n\n- A console app that speaks names and writes to a file\n- A utility that turns all-at-the-end AJAX requests for arrays into streaming Observables (eg `/users/`)\n- A Web Server in [demos/express/index.js](//github.com/deanius/antares/blob/master/demos/express/index.js)\n- A Canvas-based requestAnimationFrame animation.\n- A Console app that detects a cheat-code of 5 clicks in a short interval.\n- A Web Audio app that streams and queues up music from attachments in your Inbox.\n- An IOT application interfacing with Raspberry Pi GPIO _(Coming Soon)_\n\n## OK, but where should I start?\n\nThe flagship demo which can be utilized as a course to learn how to fit an Antares Agent with an existing React/Redux/Express app, is located here: [The Hotel California Antares Sample App](//github.com/deanius/hotel-california).\n\nIt's becoming part of a workshop - if you're interested in learning more, or updating me on your progress, [tweet it](//twitter.com/deaniusol)!\n\n## Testing? Yes, please!\n\nAntares is highly tested. And since testing async is hard, some integration level tests run a bunch of complex stuff (our [demos](#demos)), and simply assert on the console output. The slightest change in behavior can thus be visible in the output of the demo as a large change. This, with Jest Snapshot testing makes asserting on our output a piece of cake.\n\nFor unit tests, check out [what the unit test suite looks like](https://travis-ci.org/deanius/antares-ts/jobs/403257425#L139) on a recent CI build. (Thanks to Dan Abromov for illustrating in his 2015 `react-dnd/dnd-core` project what a nicely formatted test suite output can be)\n\nAntares has unit tests, and demos whose output is tested in CI on MacOS, Linux, and Windows. Because concurrency must be interacted with to truly be understood, many of the demos support you interacting with them in a console, or at least changing their parameters in config (`demos/config.js`)\n\nSee the output of a run of all demos on [Travis CI](https://travis-ci.org/deanius/antares-ts/jobs/402981544#L681), and if you run them locally, make sure you have sound turned on!\n\nHere are some more ways you can run demos (use cross-env on windows)\n\n```\n\u003e DEMO=muteFruit INTERACTIVE=1 node demos/index\n\u003e DEMO=muteFruit inner=100 outer=100 node demos/index\n\u003e cross-env DEMO=muteFruit inner=100 node demos/index\n```\n\n## Show your love!\n\n- Display a badge on your project: ![I ♥️ Antares](https://img.shields.io/badge/built--with-antares-blue.svg)\n- Donate to the project [![to the project](https://img.shields.io/badge/donate-paypal-blue.svg)](https://paypal.me/deanius), or somewhere you think you can pay it forward, even if not here!\n\n## Gratitude, Props, Thanks To\n\n- Dan Abramov - [Redux](https://redux.js.org) ![twitter](https://img.shields.io/badge/twitter-@dan_abramov-55acee.svg)\n- Martin Kleppmann - [Turning the Database Inside Out](https://www.confluent.io/blog/turning-the-database-inside-out-with-apache-samza/) ![twitter](https://img.shields.io/badge/twitter-@martinkl-55acee.svg)\n- Alex Jover Morales - [Typescript Library Starter](https://github.com/alexjoverm/typescript-library-starter) ![twitter](https://img.shields.io/badge/twitter-@alexjoverm-55acee.svg)\n- All who worked on [RxJS](https://github.com/ReactiveX/rxjs), [Redux Observable](https://redux-observable.js.org/)\n- Bob Martin - [Clean Architecture](https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html)\u003cimg src=\"https://8thlight.com/blog/assets/posts/2012-08-13-the-clean-architecture/CleanArchitecture-8d1fe066e8f7fa9c7d8e84c1a6b0e2b74b2c670ff8052828f4a7e73fcbbc698c.jpg\"/\u003e\n\n---\n\n![Antares](http://www.deanius.com/AntaresLogo.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeanrad%2Fantares-ts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeanrad%2Fantares-ts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeanrad%2Fantares-ts/lists"}