Skip to content

Latest commit

 

History

History
224 lines (153 loc) · 9.59 KB

README.md

File metadata and controls

224 lines (153 loc) · 9.59 KB
PipelineUI logo

Pipeline UI is a free, open-source visual editor for visualizing, creating and managing GitHub Actions workflows. Built with SolidStart, this tool simplifies the process of creating GitHub pipelines by allowing users to visualize, create and update existing CI/CD workflows.

Note

This project has been built to partecipate in SolidHack 2024 and Appwrite’s Hacktoberfest 2024 Hackathon.

Although there are some alternative solutions that can help a lot writing workflow files directly from IDE, this project mainly is a MVP to discover new technologies

The amount of time dedicated in this project is very limited, and the features needed for a complete project are numerous.

Therefore, some features will undoubtedly be missing and may be implemented in the future.

Table of contents

Features

✅ Built-in editor

Visualize and/or modify your workflow file through a simple UI.

  • View your steps dependency graph through the main interactive canvas
  • Check your workflow validity through the YAML Viewer and it's linter, which immediately tell you if your file respect the GitHub Workflow Syntax thanks to the GitHub Language Service integration.
  • Modify your workflow file updating the Properties panel in the right side.

Built-in editor

✅ Search for existing GitHub workflows

If you already have an existing workflow file pushed in your repository, yu can use the built-in search to retrieve all workflows and fork them.

Search for existing github workflows

✅ Create your own workflows files

If you haven't an existing workflow file, you can create it from scratch (only if you're authenticated)

Workflow files are persisted into Appwrite Cloud and are publicly readable to everyone that now the shareable link.

Create scratches

🤖 Technical info

PipelineUI is entirely built with Solid and SolidStart with enabled SSR.

The core technical points of this project can be summarized in those bullet items:

  • SolidStart SSR with mutations and server functions for session, workflow and scratches crud
  • MDX prerendered routes for /about pages
  • Language Service Protocol and linter integration with CodeMirror via web-worker
  • Editor local first state management with statebuilder via plugins
  • Usage of Lingui for i18n
  • Appwrite OAuth integration with SolidStart API routes
  • Appwrite Database integration with SolidStart server functions

User interface

The user interface has been built with:

Warning

The source code of @vanilla-extract/vite-plugin has been patched in order to support solid start w/ vinxi for multi-environment ssr/csr build.

Patch file

Custom app config


GitHub API

This project uses ungh from UnJS in order to call GitHub API.


State Management

This project uses statebuilder to handle local state.

The editor store uses a command-based approach which granularly update the yaml code imperatively via yaml package. Currently autosave and local persistance (indexedb) is not implemented, but may be present in the future

See some implementations in store folder:


YAML Editor

Warning

The source code of @actions/workflow-parser has been patched and rebuilt in order to work on vite in node/browser environment without getting errors and to extend some functionalities needed to the workflow yaml parser and lsp that were not available before.

Currently @actions/languageserver has been wrapped to ship only browser compatible packages with the built-in workflow-parser patch.

Read more about this in the package README.

MIT License

My patch file


Flow diagram

The implemented Flow diagram is very basic and it has been built with solid taking advantage of some other dependencies:

  • elkjs: ELK layout algorithm, used to calculate the flow item positions
  • panzoom: Cross-browser compatible pan and zoom library
  • @xyflow/system: Core of xyflow, currently used to build the smooth edge curve svg

Backend

Backend persistence and authentication has been done with appwrite.

Used Appwrite features:

  • Auth
  • Database

Most of the Appwrite code is available into


Other dependencies

Here's a list of my personal dependencies, which they have been used to be tested and improved during the development.


Hosting

This application is hosted on Railway. Deploy are made via github action CI/CD


Disclaimer for hackathon entry

This project will be submitted for these two hackathons:

Since they have two different deadlines, development will be subdivided into two branches until the two hackathon ends:

  • main: Source code to be submitted for SolidHack
  • appwrite: Source code to be submitted for Appwrite Hackathon

Those two branches are linked in a multi-environment railway project which is currently visible to everyone: Railway Deployment.

GitHub workflow for automated deploy: deploy.yml

Github environment deployments:


LICENSE

MIT © Riccardo Perra