{"id":13528254,"url":"https://github.com/kineticio/runnable","last_synced_at":"2026-03-06T09:33:52.861Z","repository":{"id":60442460,"uuid":"539599406","full_name":"kineticio/runnable","owner":"kineticio","description":"Build internal workflows with ease","archived":false,"fork":false,"pushed_at":"2024-10-30T05:57:15.000Z","size":2718,"stargazers_count":77,"open_issues_count":10,"forks_count":4,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-10-30T08:40:49.337Z","etag":null,"topics":["low-code","nodejs","remix","remix-run","typescript"],"latest_commit_sha":null,"homepage":"https://getrunnable.com/","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/kineticio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2022-09-21T17:07:48.000Z","updated_at":"2024-10-17T06:10:50.000Z","dependencies_parsed_at":"2024-11-07T19:20:23.106Z","dependency_job_id":"8324522c-834d-4f7a-a22b-782d96399499","html_url":"https://github.com/kineticio/runnable","commit_stats":null,"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kineticio%2Frunnable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kineticio%2Frunnable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kineticio%2Frunnable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kineticio%2Frunnable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kineticio","download_url":"https://codeload.github.com/kineticio/runnable/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246631803,"owners_count":20808759,"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","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":["low-code","nodejs","remix","remix-run","typescript"],"created_at":"2024-08-01T06:02:21.693Z","updated_at":"2026-03-06T09:33:52.851Z","avatar_url":"https://github.com/kineticio.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","Example Apps"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://getrunnable.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    \u003cimg width=\"180\" src=\"https://getrunnable.com/logo_transparent.png\" alt=\"Runnable logo\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003e\nRunnable\n\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\nBuild internal workflows with ease\n\u003c/p\u003e\n\n\u003chr/\u003e\n\n- 💻 Leverage your internal models/db/services without having to expose them via REST/GraphQL\n- 🚷 Keep internal operations...internal\n- 🛠️ No more coding UIs for admin tools\n- 〰️ Build complex workflows with conditionals and loops\n- 📦 Works with Nest.js and Express\n- ⭐️ Looks great out of the box\n\n\u003e **Note**\n\u003e You can play around with the [demo Runnable](https://demo.getrunnable.com)! And login with any Google creds.\n\n**Runnable** is a framework for building user-facing internal workflows and applications. It's built on top of Remix to allow you to build workflows without UI code and a developer experience that allows you to only write server code. Using the `io` object, you can prompt the users at any point in the workflow.\n\n\u003ctable border=\"0\"\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\"\u003e\n\n![Runnable](https://github.com/kineticio/runnable/blob/main/assets/assign_user.gif)\n\n\u003c/td\u003e\n\n\u003ctd width=\"50%\" font-size=\"smaller\"\u003e\n\n```ts\n// index.ts\nimport { installRunnable } from \"@runnablejs/express\";\nimport { getUsers, getTeams, assignTeam } from \"./db\";\n\n// ... normal express setup\n\ninstallRunnable(app, {\n  assign_user_to_team: {\n    title: \"Assign a user to a team\",\n    execute: async (io) =\u003e {\n      const users = await getUsers();\n      const user = await io.select.dropdown({\n        title: \"Select a user\",\n        data: users,\n      });\n\n      const teams = await getTeams();\n      const team = await io.select.table({\n        title: \"Select team\",\n        data: teams,\n        initialSelection: user.teamId,\n      });\n\n      await assignTeam(user.id, team.id);\n    },\n  },\n});\n\napp.listen(3000);\n```\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n[Read the Docs to Learn More](https://getrunnable.com/).\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkineticio%2Frunnable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkineticio%2Frunnable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkineticio%2Frunnable/lists"}