• Stars
    star
    140
  • Rank 261,473 (Top 6 %)
  • Language
    Rust
  • License
    Other
  • Created almost 4 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Low-code task engine built with Rust and Svelte

Ergo is a low-code IFTTT/Zapier style application, built with Rust and Svelte. Tasks are customizable with Javascript and can consist of state machines or DAG-like workflows.

Considered use cases

  • Scrape web sources and send emails based on some content in them
  • Receive a URL, run youtube-dl and save the video locally
  • Periodically download Roam database
  • Some sort of Twitter list archiving?
  • Scrape websites and populate a local database
  • Fetch filled brokerage orders
  • Interactive Slack/Discord bots
  • Multi-stage ETL pipelines

Anticipated Features

This is somewhat out of date.

  • Inputs
    • from POST to an endpoint
    • send events based on some periodic check that triggers when it sees a condition
    • trigger events unconditionally on a schedule
  • Actions
    • Spawn docker containers (and/or Nomad jobs?)
    • Query HTTP endpoints
    • Run some local command
    • Link actions to accounts when required
    • Embedded JavaScript for actions
    • Return data for use by the next task in the chain
  • Data Schemas
    • Each action can specify the types of data that it accepts
    • Duck typing for events
  • State machines will take data from an event, modify it somehow, and pass it on
    • Embed JavaScript to write state machine logic
    • Persistent context for state machines
    • Optional schema input
    • Optional type checking on state machine return value
  • Tasks
    • Trigger a task based on events
    • Run actions
    • Run state machines in response to events
    • Sequences - Tasks can be chained together and optionally pass information between them (file locations, etc.)
    • Tasks can clone themselves, and further inputs for that clone are routed to them. This will probably involve interaction with another process set up to be aware of how this works.
  • Templates for events, actions, and state machines
  • Extensive logging of events, actions, etc.

Roadmap

0.4

  • Tasks made up of linked blocks that run as a DAG

0.3

  • MVP of UI for editing tasks
  • MVP of UI for editing actions and inputs.
  • Periodic tasks
  • Task logic can be written in Javascript.
  • Implement last missing pieces of queue behavior.

0.2

  • Add all missing tests
  • Read-only Web UI with events timeline
  • JavaScript execution as part of state machines, actions, and inputs.
  • Set up foundations of serialized long-running tasks in V8.

0.1

  • Events can be triggered by REST endpoint
  • Tasks consists of one event that triggers one or more actions
  • Actions can run local scripts
  • Log everything that happens
    • Log inputs and actions to Postgres tables
    • Trigger Discord webhooks
  • Events go into a queue for processing
  • Actions are triggered from a queue

More Repositories

1

httptreemux

High-speed, flexible tree-based HTTP router for Go.
Go
606
star
2

svelte-maplibre

Svelte bindings for the MapLibre mapping library
Svelte
300
star
3

export-logseq-notes

Export notes from Logseq or Roam to HTML for use in a static site.
Rust
43
star
4

svelte-rough-notation

A Svelte wrapper around the rough-notation library
Svelte
39
star
5

svelte-leaflet-demo

This is a demo application using Svelte and Leaflet to visualize the US Census "Metro Area-to-Metro Area Migration Flows” dataset.
JavaScript
36
star
6

swr-xstate

An implementation of SWR using XState
TypeScript
31
star
7

effectum

Job Queue based on SQLite
Rust
22
star
8

unwebhook

Webhook server for Gitlab and Github to run arbitrary commands based on events
Go
16
star
9

starting-with-solana

JavaScript
13
star
10

rust-types-to-typescript-example

Generating Typescript types from Rust source code
JavaScript
11
star
11

svelte-zoomable

Zoomable UI in Svelte
JavaScript
11
star
12

rush-dev-watcher

Run development build commands across a project and its dependencies
JavaScript
10
star
13

website

Personal website
HTML
9
star
14

goconfig

Loads configuration from TOML files, allowing environment variables to override.
Go
9
star
15

palette-swap

Transform a color palette you like to another color.
HTML
8
star
16

brokerage_server

HTTP-based interface to stock brokers
Go
6
star
17

pic-store

Convert, upload, and manage images in object storage
Rust
6
star
18

svelte-storybook-workarounds

Svelte
6
star
19

promptbox

LLM Prompt Library and Templating
Rust
6
star
20

perceive

Semantic search for your life
Rust
5
star
21

maiven

mAIven - An AI-powered research library and assistant
Rust
5
star
22

treewatcher

Recursive Filesystem Tree Watcher for Go
Go
5
star
23

lezer-json5

JavaScript
4
star
24

codemirror-json5

Codemirror 6 support for JSON5
TypeScript
4
star
25

sorters

Sort an array considering multiple fields and sort orders.
TypeScript
4
star
26

dotfiles

Lua
4
star
27

svelte-style-action

JavaScript
4
star
28

rust-envoption

Simple helper functions for environment variables
Rust
4
star
29

earnings-trade-scheduler

Given data from CMLViz TradeMachine, figure out the best entry and exit dates for upcoming trades around earnings. No longer updated since Trademachine added alerts.
Rust
4
star
30

buzzy

An AI question answering bot for kids
TypeScript
4
star
31

section-wordcount.nvim

Neovim plugin to count words in each section of a document
Lua
3
star
32

gocache

Go library with various caching functionality
Go
3
star
33

smelter

Serverless Data Query Framework
Rust
3
star
34

simpleblog

A very simple blog engine I'm writing to learn Go.
Go
3
star
35

sqlweld

Piece together SQL query files from templates and partials
HTML
3
star
36

chronicle

LLM Proxy
Rust
3
star
37

sveltekit-with-svelte-query

Test case for getting SvelteKit working with svelte-query
Svelte
2
star
38

filigree

Web app framework
Rust
2
star
39

merge-geo

Merge CSV data into GeoJSON Features
JavaScript
2
star
40

options-analysis

Utility functions for analyzing option combos
TypeScript
2
star
41

sbbp

Should've Been a Blog Post
Rust
2
star
42

remote-ssl-renewal

Renew LetsEncrypt SSL Certificates for a CDN when the DNS is hosted elsewhere
Rust
1
star
43

buildspace-gif-wall

Svelte
1
star
44

trading

TypeScript
1
star
45

ramus

Agent Framework
TypeScript
1
star
46

rust_lenient_bool

A more accepting boolean token parser.
Rust
1
star
47

svelte-template

JavaScript
1
star
48

video-trimmer-gui

A small utility for trimming a video and adding intros and outros
HTML
1
star
49

sqlx-transparent-json-decode

Easier JSON decoding with sqlx
Rust
1
star
50

create-social-card

Rust
1
star
51

node-tda-api

A few endpoints for the TD Ameritrade API
TypeScript
1
star
52

env-template

Render Handlebars template files using environment variables
Rust
1
star
53

svelte-lazyload

Use an IntersectionObserver to delay loading elements until they are about to enter the viewport.
Svelte
1
star
54

glance

Your Personal Dashboard
Rust
1
star
55

spacelog-levelstring

Log level configuration of spacemonkeygo/spacelog from a string
Go
1
star