Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kineticio/runnable
Build internal workflows with ease
https://github.com/kineticio/runnable
low-code nodejs remix remix-run typescript
Last synced: 14 days ago
JSON representation
Build internal workflows with ease
- Host: GitHub
- URL: https://github.com/kineticio/runnable
- Owner: kineticio
- Created: 2022-09-21T17:07:48.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-30T05:57:15.000Z (17 days ago)
- Last Synced: 2024-10-30T08:40:49.337Z (17 days ago)
- Topics: low-code, nodejs, remix, remix-run, typescript
- Language: TypeScript
- Homepage: https://getrunnable.com/
- Size: 2.59 MB
- Stars: 77
- Watchers: 4
- Forks: 4
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
Awesome Lists containing this project
README
Runnable
Build internal workflows with ease
- 💻 Leverage your internal models/db/services without having to expose them via REST/GraphQL
- 🚷 Keep internal operations...internal
- 🛠️ No more coding UIs for admin tools
- 〰️ Build complex workflows with conditionals and loops
- 📦 Works with Nest.js and Express
- ⭐️ Looks great out of the box> **Note**
> You can play around with the [demo Runnable](https://demo.getrunnable.com)! And login with any Google creds.**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.
![Runnable](https://github.com/kineticio/runnable/blob/main/assets/assign_user.gif)
```ts
// index.ts
import { installRunnable } from '@runnablejs/express';
import { getUsers, getTeams, assignTeam } from './db';// ... normal express setup
installRunnable(app, {
assign_user_to_team: {
title: 'Assign a user to a team',
execute: async (io) => {
const users = await getUsers();
const user = await io.select.dropdown({
title: 'Select a user',
data: users,
});const teams = await getTeams();
const team = await io.select.table({
title: 'Select team',
data: teams,
initialSelection: user.teamId,
});await assignTeam(user.id, team.id);
},
},
});app.listen(3000);
```[Read the Docs to Learn More](https://getrunnable.com/).
## License
MIT