Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

Awesome Lists containing this project

README

        



Runnable logo



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