Windmill: Open-source platform and runtime to turn any scripts into internal apps, integrations and workflows

Overview

windmill.dev

.

Open-source and self-hostable alternative to Airplane, Pipedream, Superblocks and a simplified Temporal with autogenerated UIs to trigger flows and scripts as internal apps. Convert code to no-code modules and, if the auto-generated UI is not sufficient, use it solely as an highly scalable backend layer. Add automation to your product or build your own no-code tool and delegate the core layer to Windmill .

Docker Image CI Package version Discord Shield


Join the beta (personal workspaces are free forever): https://app.windmill.dev

Documentation: https://docs.windmill.dev

Discord: https://discord.gg/V7PM2YHsPB

Hub: https://hub.windmill.dev

Contributor's guide: https://docs.windmill.dev/docs/contributors_guide

Roadmap: https://github.com/orgs/windmill-labs/projects/2

Self-host instruction

You can show your support for the project by starring this repo.


Windmill Labs offers commercial licenses and support to convert your existing automation and help you scale it in production. If interested, contact [email protected] (founder of Windmill).


Windmill

Disclaimer: Windmill is in BETA. It is secure to run in production but we are still improving the product fast.

Windmill Screenshot

Windmill is fully open-sourced:

  • community/, python-client/ and deno-client/ are Apache 2.0
  • backend, frontend and everything else under AGPLv3.

What is the general idea behind Windmill

  1. Define a minimal and generic script in Python or Typescript that solve a specific task. Here sending an email with SMTP. The code can be defined in the provided Web IDE or synchronized with your own github repo: Step 1

  2. Your scripts parameters are automatically parsed and generate a frontend. You can narrow down the types during task definition to specify regex for string, an enum or a specific format for objects. Each script correspond to an app by itself: Step 2

  3. Make it flow! You can chain your scripts or scripts made by the community shared on WindmillHub. There is tight integration between Windmill and the hub to make it easy to build flows from a soon-to-be exhaustive library of generic modules. In flows, one can pipe output to input using "Dynamic" expressions that are just plain Javascript underneath. Flows can contain for-loops, branching (coming soon). As such and coupled with inputs being able to refer to any step's output, they are actual DAG rather than just linear sequences. They are backed by an open JSON spec we call OpenFlow Step 3

Both scripts and flows are not restricted to be triggered by the UI. They can be triggered by a schedule, watch for changes (using internal states) or triggered through API with either an async or sync webhook. The latter kind of endpoints make Windmill akin to a self-hostable AWS Lambda. Windmill can be the central place to host, build and run all of your integrations, automation and internal apps. We include credentials management and OAuth integration, groups and much more!

Layout

  • backend/: The whole Rust backend
  • frontend: The whole Svelte frontend
  • community/: Scripts and resource types included in every workspace. It is useful for Python scripts since the WindmillHub only allow deno scripts and for sharing resource types that will be included in every workspace.
  • lsp/: The lsp asssistant for the monaco editor
  • nsjail/: The nsjail configuration files for sandboxing of the scripts' execution
  • python-client/: The wmill python client used within scripts to interact with the windmill platform
  • deno-client/: The wmill deno client used within scripts to interact with the windmill platform

Stack

  • Postgres as the database
  • backend in Rust with the following highly-available and horizontally scalable architecture:
    • stateless API backend
    • workers that pull jobs from a queue in Postgres (and later, Kafka or Redis. Upvote #173 if interested )
  • frontend in Svelte
  • scripts executions are sandboxed using google's nsjail
  • javascript runtime is the deno_core rust library (which itself uses the rusty_v8 and hence V8 underneath)
  • typescript runtime is deno
  • python runtime is python3

Security

Sandboxing and workload isolation

Windmill uses nsjail on top of the deno sandboxing. It is production multi-tenant grade secure. Do not take our word for it, take fly.io's one

Secrets, credentials and sensitive values

There is one encryption key per workspace to encrypt the credentials and secrets stored in Windmill's K/V store.

In addition, we strongly recommend that you encrypt the whole Postgres database. That is what we do at https://app.windmill.dev.

Performance

The performances are great, as long as you do not exceed the parrallelism of the workers, we are worse than AWS Lambda for small workloads but not by that much

Architecture

Big-picture Architecture

Technical Architecture

How to self-host

We only provide docker-compose setup here. For more advanced setups, like compiling from source or using without a postgres super user, see documentation

Docker compose

docker compose up with the following docker-compose is sufficient: https://github.com/windmill-labs/windmill/blob/main/docker-compose.yml

For older kernels < 4.18, set DISABLE_NUSER=true as env variable, otherwise nsjail will not be able to launch the isolated scripts.

To disable nsjail altogether, set DISABLE_NSJAIL=true.

The default super-admin user is: [email protected] / changeme

From there, you can create other users (do not forget to change the password!)

Commercial license

To self-host Windmill, you must respect the terms of the AGPLv3 license which you do not need to worry about for personal uses. For business uses, you should be fine if you do not re-expose it in any way Windmill to your users and are comfortable with AGPLv3.

To re-expose any Windmill parts to your users as a feature of your product, or to build a feature on top of Windmill, to comply with AGPLv3 your product must be AGPLv3 or you must get a commercial license. Contact us at [email protected] if you have any doubts.

In addition, a commercial license grants you a dedicated engineer to transition your current infrastructure to Windmill, support with tight SLA, audit logs export features, SSO, unlimited users creation, advanced permissioning features such as groups and the ability to create more than one workspace.

OAuth for self-hosting (very optional)

To get the same oauth integrations as Windmill Cloud, mount oauth.json with the following format:

{
  "<client>": {
    "id": "<CLIENT_ID>",
    "secret": "<CLIENT_SECRET>"
  }
}

and mount it at /usr/src/app/oauth.json.

The list of all possible "connect an app" oauth clients

To add more "connect an app" OAuth clients to the Windmill project, read the Contributor's guide. We welcome contributions!

Resource types

You will also want to import all the approved resource types from WindmillHub. There is no automatic way to do this automatically currently, but it will be possible using a command with the upcoming CLI tool.

Run a local dev setup

only Frontend

This will use the backend of https://app.windmill.dev but your own frontend with hot-code reloading.

  1. Install caddy
  2. Go to frontend/:
    1. npm run install, npm run generate-backend-client then npm run dev
    2. In another shell sudo caddy run --config CaddyfileRemote
  3. Et voilà, windmill should be available at http://localhost/

Backend + Frontend

  1. Create a Postgres Database for Windmill and create an admin role inside your Postgres setup.
  2. Install nsjail and have it accessible in your PATH
  3. Install deno and python3, have the bins at /usr/bin/deno and /usr/local/bin/python3
  4. Install caddy
  5. Install the lld linker
  6. Go to backend/: DATABASE_URL=<DATABASE_URL_TO_YOUR_WINDMILL_DB> RUST_LOG=info cargo run
  7. Go to frontend/:
    1. npm run install, npm run generate-backend-client then npm run dev
    2. In another shell sudo caddy run --config Caddyfile
  8. Et voilà, windmill should be available at http://localhost/

Contributors

Copyright

Windmill Labs, Inc 2022

Comments
  • feature: Improve packaging/distribution of components?

    feature: Improve packaging/distribution of components?

    I am trying to write a Windmill module for NixOs. It would be really nicer if there were separate independent packages for the different components of this app. I have a been able to build the windmill cli imperatively by following the Dockerfile provided but it still expects something on the database end (Error: Migrating database: while executing migrations: error returned from database: role "admin" does not exist).

    It would be very easy to package if the frontend and backend (and if it needs anything else) can be run with cli flags independently.

    Please let me know if you need more details.

    opened by dit7ya 43
  • chore(deps-dev): bump @typescript-eslint/parser from 5.30.3 to 5.30.5 in /frontend

    chore(deps-dev): bump @typescript-eslint/parser from 5.30.3 to 5.30.5 in /frontend

    Bumps @typescript-eslint/parser from 5.30.3 to 5.30.5.

    Release notes

    Sourced from @​typescript-eslint/parser's releases.

    v5.30.5

    5.30.5 (2022-07-04)

    Bug Fixes

    • eslint-plugin: [consistent-indexed-object-style] fix record mode fixer for generics with a default value (#5280) (57f032c)

    v5.30.4

    5.30.4 (2022-07-03)

    Bug Fixes

    • eslint-plugin: [no-base-to-string] add missing apostrophe to message (#5270) (d320174)
    Changelog

    Sourced from @​typescript-eslint/parser's changelog.

    5.30.5 (2022-07-04)

    Note: Version bump only for package @​typescript-eslint/parser

    5.30.4 (2022-07-03)

    Note: Version bump only for package @​typescript-eslint/parser

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 27
  • bug: script execution does not work on arm64

    bug: script execution does not work on arm64

    Describe the bug A clear and concise description of what the bug is. after cloned the project I login as admin. and then I create a script. and click run preview

    To Reproduce Steps to reproduce the behavior:

    1. cloned the project
    2. run docker volume create caddy_data && docker-compose up
    3. go to ui, login as admin
    4. create a script, and run preview
    5. check the log window

    Expected behavior A clear and concise description of what you expected to happen. the script is expected to run successfully

    Screenshots If applicable, add screenshots to help explain your problem. image

    Additional context Add any other context about the problem here.

    bug 
    opened by jackychen-sg 13
  • bug: `go mod` fails if I remove `rsc.io/quote` import in new go script

    bug: `go mod` fails if I remove `rsc.io/quote` import in new go script

    Describe the bug

    Note: I'm running this on rootless podman (not docker). Initial tests with demo scripts have worked, but once I try to manipulate the script a bit, I'm running into issues. Not enough information to debug in the logs that I can see.

    2022-10-05T20:52:10.880722Z  INFO windmill::worker: fetched job 0183a9eb-8f74-1b4b-15cf-016f0f4b79a1 worker=dt-worker-4CDDY-TVm6M id=0183a9eb-8f74-1b4b-15cf-016f0f4b79a1
    2022-10-05T20:52:10.880808Z  INFO windmill::worker: handling job 0183a9eb-8f74-1b4b-15cf-016f0f4b79a1 worker=dt-worker-4CDDY-TVm6M job_id=0183a9eb-8f74-1b4b-15cf-016f0f4b79a1 workspace_id=homelab
    2022-10-05T20:52:10.881234Z  INFO windmill::worker: started Go job 0183a9eb-8f74-1b4b-15cf-016f0f4b79a1 worker_name=dt-worker-4CDDY-TVm6M job_id=0183a9eb-8f74-1b4b-15cf-016f0f4b79a1 workspace_id=homelab is_ok=false
    2022-10-05T20:52:10.951254Z  INFO windmill::worker: go mod error
    

    To reproduce

    1. Create a go script
    2. Modify the script to look like below
    import (
    	"fmt"
    	// "rsc.io/quote"
    )
    
    func main(user string) (string, error) {
      // fmt.Println(quote.Opt())
      return fmt.Sprintf("Hello, %s!", user), nil
    }
    
    1. Hit test
    2. See error
    job 0183a9eb-8f74-1b4b-15cf-016f0f4b79a1 on worker dt-worker-4CDDY-TVm6M
    
    
    --- GO DEPENDENCIES SETUP---
    
    go: creating new go.mod: module mymod
    go: to add module requirements and sums:
    	go mod tidy
    Lock file generation failed. Status: Err(ExecutionErr("job process killed"))
    

    Expected behavior

    It should run (and then subsequently deploy). I can seemingly add some other imports (e.g. strings seems to import without a problem).

    Screenshots

    No response

    Browser information

    No response

    Application version

    v1.36.0-40-gc8c0daf

    Additional Context

    Using the container image at :main --> ghcr.io/windmill-labs/windmill@sha256:dfef65413a8a17055adef9e4872e1ed821d2c8d0f9c1f5737f810fbc71227f1f

    Podman podman version 4.2.1

    bug 
    opened by komish 12
  • feature: Load oauth_connect.json and oauth_login.json from disk if the files exist

    feature: Load oauth_connect.json and oauth_login.json from disk if the files exist

    In order to easily add new OAuth providers without needing to edit the source, it would be useful if windmill checked if oauth_login.json and oauth_connect.json were present in the local directory first, and use the included src version if they do not exist.

    Certain OAuth provides (such as AzureAD) require the authorisation and token endpoints to be specific for the tenant, so a generic URL will not be suitable for them.

    This seems like the simplest way currently of enabling adding new OAuth endpoints at the moment since the checks can be added to https://github.com/windmill-labs/windmill/blob/5cbc87e025643941f3853d2fb1b25d292b384c72/backend/windmill-api/src/oauth2.rs#L104 where the check for oauth.json already exists

    opened by unreality 8
  • bug:

    bug: "0 */0 * * * *" is not detected as an invalid CRON expression

    Describe the bug

    The endpoint POST https://app.windmill.dev/api/schedules/preview cannot deal with {"schedule":"0 */0 * * * *","offset":-120}.

    To Reproduce

    1. Create a schedule
    2. While editing the CRON expression, you may temporarily enter 0 */0 * * * *
    3. See an error
    4. In the network inspector, you'll find an HTTP 502 Bad Gateway from Cloudflare.

    Expected behavior

    Screenshot 2022-09-16 at 21-15-32 New Schedule Windmill

    Windmill version Latest on app.windmill.dev as of 2022-09-16.

    Additional notes

    The following strings cause the same error:

    • 0 /0 * * * *
    • 0 0 /0
    • 0/0 */1 * * *
    bug 
    opened by jaller94 8
  • bug: forloop jobs results are collected not necessarily in the order of the steps

    bug: forloop jobs results are collected not necessarily in the order of the steps

    @sqwishy

    This is because

                        "
                      SELECT result
                        FROM completed_job
                       WHERE id = ANY($1)
                         AND workspace_id = $2
                         AND success = true
                        ",
                    )
                    .bind(jobs.as_slice())
                    .bind(w_id)
                    .fetch(db)
                    .map_ok(|(v,)| v)
                    .try_collect::<Vec<serde_json::Value>>()
                    .await?;
    

    Does not follow necessarily the order of jobs. Thoughts on how to fix ? Maybe returning the id as well and then aligning the order of jobs id and the resulting vec ids ?

    bug 
    opened by rubenfiszel 7
  • Initial Benchmarking Tool

    Initial Benchmarking Tool

    Runs multiple deno workers to fill up the work queue. Scrapes metrics endpoint periodically & exports metrics to influxdb for easy analysis.

    I've had little success in actually getting windmill to max out any cores, but I've verified that the queue is actually filling up, so I'm confident this works. New metrics added to windmill are automatically picked up (including labels).

    opened by HurricanKai 6
  • feat(frontend): Button with popup

    feat(frontend): Button with popup

    desktop


    destop2

    Clicking or targeting the toggle button with the Tab key will open the popup. Tab targeting inside the opened window is disabled, keyboard navigation is only available with the arrow keys, so the user doesn't have to tab through the list of actions if they want to target the next element.

    opened by adam-kov 6
  • bug: Issues when creating a schedule with a long name

    bug: Issues when creating a schedule with a long name

    Describe the bug

    HTTP 500 and mysterious error in the webapp when creating a schedule with a long name.

    Internal: Could not insert into queue 0182b0f2-b7cd-1448-c7b3-8f4f1dd1a991: error returned from database: value too long for type character varying(50)

    To Reproduce

    1. Go to https://app.windmill.dev/schedule/add
    2. Create a name that's longer than 50 characters including /u/your_username/
    3. Click on "Schedule"

    Expected behavior

    • The length isn't restricted at 50 but at 200 or some other length which I'm unlikely to hit.
    • The form knows about the limit and does client-side validation.
    • The server returns a nice HTTP 400 with the info that the path (UI needs to translate this to the name field) is too long.
      • URL: POST https://app.windmill.dev/api/w/j94_test/schedules/create

    Screenshots

    Screenshot_2022-08-18_14-38-54

    Windmill version

    v1.31.0-19-g918f6db

    Windmill version

    Additional context

    bug 
    opened by jaller94 6
  • reorganize handle_child

    reorganize handle_child

    There were a couple issues with the current implementation:

    1. When reading stdout and stderr from the child, as soon as we hit EOF on one we would stop reading from both (line 1420). This could lead to the return value not being read from the job program.

    2. Lines read from stdout and stderr are put into a channel and read elsewhere with rx.recv() (line 1497) but that channel isn't read until empty. It is only read in the while !done.load(...) (line 1449) loop and that loop can stop after any .store(true, ...). Which happens when the child exits, when the job is cancelled, when either stdout or stderr reach EOF...

      This can be verified by putting dbg!(rx.recv().await) or a similar assertion after the while loop before returning from that function. It shows the channel still containing log lines on rare occasions.

    I was pretty careful in this to maintain the current behaviour; adding comments to express intention.

    One difference in this is that some regular intervals (cancel check and ping update) should be more regular?

    Before...

    at 00ms wait for 10ms at 10ms do things for 3ms at 13ms wait again for 10ms at 23ms do things again ...

    With change...

    at 00ms wait for 10ms at 10ms do things for 3ms at 13ms wait again but for 7ms at 20ms do things again ...

    Which I'm guessing is preferable but I could be wrong.

    opened by sqwishy 5
  • App bugfix

    App bugfix

    Fix various bugs:

    • resizing any input make it take a single unit of height and impossible to resize
    • when creating a new button app, the label says "Default Label" instead of the "Lorem Ipsum" that is default set as its label
    • there is some minimum padding between elements. We should make it 1 or 2 px vertically. Otherwise there is no way to actually use text as a label on tops of items such as table/inputs
    • User input as a runnable input does not retrigger the compute - We should probably remove the visible toggle altogether, it's confusing - static = invisible - connected = invisible - user input = visible I think we should actually just have Static & Connected, and a toggle in Static that allow for User Input
    Screenshot 2022-12-28 at 16 54 21
    opened by fatonramadani 1
  • chore(main): release 1.57.0

    chore(main): release 1.57.0

    :robot: I have created a release beep boop

    1.57.0 (2022-12-28)

    Features

    • app: Use consistent styles on settings pages (#1048) (681e2e8)
    • backend: resume from owner directly in flow status viewer (#1042) (40195d4)
    • frontend: Fix initial component dimensions + Select select + add spinner when buttons are clicked (#1044) (70e7a5d)
    • frontend: Properly support resource (#1039) (65f4e86)

    This PR was generated with Release Please. See documentation.

    autorelease: pending 
    opened by rubenfiszel 1
  • chore(deps): bump monaco-editor from 0.33.0 to 0.34.1 in /frontend

    chore(deps): bump monaco-editor from 0.33.0 to 0.34.1 in /frontend

    Bumps monaco-editor from 0.33.0 to 0.34.1.

    Changelog

    Sourced from monaco-editor's changelog.

    [0.34.1]

    • Adds API to register global actions, commands, or keybinding rules

    [0.34.0]

    • Introduction of IEditor.createDecorationsCollection API
    • New function removeAllMarkers to remove all markers
    • Support for light high contrast theme
    • Introduction of BracketPairColorizationOptions.independentColorPoolPerBracketType
    • Introduction of PositionAffinity.LeftOfInjectedText and PositionAffinity.RightOfInjectedText
    • Introduction of IEditorOptions.showFoldingControls: 'never'
    • Introduction of IDiffEditorBaseOptions.renderMarginRevertIcon: boolean
    • Inline Quick Suggestions
    • Introduction of IContentWidgetPosition.positionAffinity
    • Provider can now be registered for a LanguageSelector

    Breaking Changes

    • IEditorInlayHintsOptions tweaks
    • Iteration on InlineCompletion API
    • WorkspaceFileEdit -> IWorkspaceFileEdit
      • oldUri -> oldResource
      • newUri -> newResource
    • WorkspaceTextEdit -> IWorkspaceTextEdit
      • edit -> textEdit (now supports insertAsSnippet)
      • modelVersionId?: number -> versionId: number | undefined
    • InlayHint API tweaks
    • Soft deprecation of ICodeEditor.deltaDecorations, no adoption required. IEditor.createDecorationsCollection API should be used instead.

    Contributions to monaco-editor:

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 1
  • bug:

    bug: "Show code" on a schedule's page does not work for flows

    Describe the bug

    The "Show code" button only works if one selected a Script. It does not work for a Flow.

    Screenshot 2022-12-18 at 17-42-18 New Schedule Windmill

    To reproduce

    1. Go to New Schedule or open the page of an existing Flow
    2. Click on "Flow" to have a flow to be triggered by the schedule.
    3. Select any flow.
    4. Click on "Show code".
    5. See error

    Expected behavior

    It should have looked for a flow with that path, not a script.

    Screenshots

    Screenshot_2022-12-18_17-47-14

    Browser information

    No response

    Application version

    Windmill v1.55.0-53-g398c109a

    Additional Context

    No response

    bug 
    opened by jaller94 0
  • chore(deps-dev): bump svelte-preprocess from 4.10.7 to 5.0.0 in /frontend

    chore(deps-dev): bump svelte-preprocess from 4.10.7 to 5.0.0 in /frontend

    Bumps svelte-preprocess from 4.10.7 to 5.0.0.

    Changelog

    Sourced from svelte-preprocess's changelog.

    5.0.0 (2022-12-10)

    Bug Fixes

    • 🐛 add sugarss v3 and v4 as supported (3f2687b)
    • 🐛 remove support for 'type' attribute (07bc8aa)
    • 🐛 remove support for custom default languages (3d60856)
    • 🐛 map .sss as .css to support sugarss extension (2c0bd45)

    Performance Improvements

    • ⚡️ remove support for deprecated node-sass (a617fe1)

    BREAKING CHANGES

    • 🧨 Languages must be explicitly defined via the lang attribute.
    • 🧨 Minimum node version was bumped from 9 to 14
    • 🧨 Cannot use "type" attribute to identify the language of a style or script tag anymore. Use lang instead
    • 🧨 node-sass is not supported anymore. Use sass instead
    • minimum node version changed to v14
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 1
  • chore(deps): bump @fortawesome/free-brands-svg-icons from 6.2.0 to 6.2.1 in /frontend

    chore(deps): bump @fortawesome/free-brands-svg-icons from 6.2.0 to 6.2.1 in /frontend

    Bumps @fortawesome/free-brands-svg-icons from 6.2.0 to 6.2.1.

    Release notes

    Sourced from @​fortawesome/free-brands-svg-icons's releases.

    Release 6.2.1

    Change log available at https://fontawesome.com/docs/changelog/

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies javascript 
    opened by dependabot[bot] 1
Releases(v1.56.1)
Owner
Windmill Labs, Inc
Windmill Labs, Inc
Turn any dynamic website (especially wordpress) into a fast, secure, stable static site

Static site publisher Turn any dynamic website (especially wordpress) into a fast, secure, stable static site Reduced complexity - no need to run simp

Alex Ivkin 7 Apr 6, 2022
✨ An IRL tokenization platform to turn your hopes, dreams, and desires into fundable NFTs on the Polygon blockchain using Chainlink, IPFS, Moralis, and NFT.Storage.

GoFundYourself Getting funding for your passion project, needs or dream doesn't have to be a nightmare! check out our live demo on Netlify Let's Fundi

Brian H. Hough | brianhuff.eth 7 Dec 6, 2022
ToolJet an open-source low-code framework to build and deploy internal tools quickly without much effort from the engineering teams

ToolJet is an open-source low-code framework to build and deploy internal tools quickly without much effort from the engineering teams. You can connect to your data sources, such as databases (like PostgreSQL, MongoDB, Elasticsearch, etc), API endpoints (ToolJet supports importing OpenAPI spec & OAuth2 authorization), and external services (like Stripe, Slack, Google Sheets, Airtable) and use our pre-built UI widgets to build internal tools.

ToolJet 15.6k Jan 3, 2023
Open source infrastructure for scalable, reliable native integrations in B2B SaaS products

Open-source infrastructure for native integrations Native, customer-facing integrations for your B2B SaaS made simple, reliable and extensible. Explor

Nango 225 Jan 2, 2023
API dot Open Sauced is NestJS and SupaBase powered OAS3 backend designed to remove client complexity and provide a structured graph of all @open-sauced integrations

?? Open Sauced Nest Supabase API ?? The path to your next Open Source contribution ?? Prerequisites In order to run the project we need the following

TED Vortex (Teodor-Eugen Duțulescu) 13 Dec 18, 2022
A crawler that crawls the site's internal links, fetching information of interest to any SEO specialist to perform appropriate analysis on the site.

Overview ?? It is a module that crawls sites and extracts basic information on any web page of interest to site owners in general, and SEO specialists

Yazan Zoghbi 2 Apr 22, 2022
A crawler that crawls the site's internal links, fetching information of interest to any SEO specialist to perform appropriate analysis on the site.

Overview ?? It is a module that crawls sites and extracts basic information on any web page of interest to site owners in general, and SEO specialists

Yazan Zoghbi 2 Apr 22, 2022
An Open-Source Platform to certify open-source projects.

OC-Frontend This includes the frontend for Open-Certs. ?? After seeing so many open-source projects being monetized ?? without giving any recognition

Open Certs 15 Oct 23, 2022
A web tool for you to record your face and turn it into a 3D animation file.

Web Face Capture A free, open-source web tool for you to record your face and turn it into a 3D animation file. Go to the website Allow camera permisi

James Lee 9 Jan 6, 2023
✏️ A small jQuery extension to turn a static HTML table into an editable one. For quickly populating a small table with JSON data, letting the user modify it with validation, and then getting JSON data back out.

jquery-editable-table A small jQuery extension to turn an HTML table editable for fast data entry and validation Demo ?? https://jsfiddle.net/torrobin

Tor 7 Jul 31, 2022
A JavaScript plugin to turn many images into a gif

GiffyImages A JavaScript plugin to turn many elements images into a gif magically. Preview Getting started npm i giffy-images -D or yarn add giffy-im

Leonardo Carey 6 Nov 6, 2021
Turn queries into easy-to-use tools your teammates can share.

Turn queries into easy-to-use tools your teammates can share. Parameterize! Visualize! Collaboratize?! qwaver links: Latest Build •Use Cases • Help! •

Brian Risk 8 Nov 3, 2022
Open-source CD platform that helps developers to deliver applications efficiently by simplifying software releases and operations in any environment.

dyrector.io - The open source internal delivery platform Overview dyrector.io is an open-source internal delivery platform that helps developers to de

dyrector.io 160 Jan 3, 2023
⚗️Nitro provides a powerful toolchain and a runtime framework from the UnJS ecosystem to build and deploy any JavaScript server, anywhere

⚗️Nitro provides a powerful toolchain and a runtime framework from the UnJS ecosystem to build and deploy any JavaScript server, anywhere

unjs 1.3k Jan 5, 2023
io-ts Typed Event Bus for the runtime of your Node.js application. A core for any event-driven architecture based app.

Typed Event Bus Based on io-ts types, this bus provides a handy interface to publish and consume events in the current runtime of the Node.js process.

Konstantin Knyazev 3 May 23, 2022
This plugin for Obsidian enables you to quickly jump to internal and external links

Obsidian Quick Jump Plugin This plugin for Obsidian enables you to quickly jump to internal and external links. This plugin is inspired by Jump to lin

Tadashi Aikawa 9 Sep 24, 2022
Hadmean is an internal tool generator. It is language agnostic, schema driven, extremely customizable, featured packed, user-friendly and has just one installation step.

Hadmean Report a Bug · Request a Feature · Ask a Question Table of Contents About Quick Demo Motivation Why you should try Hadmean Getting Started Pre

Hadmean 344 Dec 29, 2022
Adds external & internal translators to various sites.

Twitter External Translator Adds a "Translate with ..." button to Tweets and User Bios. This was a fork of DeepL Twitter translation Version Link Alte

Magic 6 Oct 17, 2022
At BlackBox Vision we use heavily React Admin to build internal systems for our clients.

?? RA Firebase Starter ?? At BlackBox Vision we use heavily React Admin to build internal systems for our clients. Also, we rely on firebase a lot for

BlackBox Vision 2 Jun 7, 2022