Project summary
Circuitz is an iPaaS (Integration Platform as a Service) platform designed for interaction within the IC ecosystem. This platform simplifies the process of integrating with various canisters. It allows seamless data exchange and transformation, building on each step to create a circuit (workflow).
The primary goal is to ease the process of data integration and management on the IC, making it more accessible and user-friendly for everyone. The aim is to bridge the gap between complex blockchain technology and everyday web2 applications using ICs HTTP outcalls, for both developers and non-developers.
Key fuctionalities are:
-
Node filtering
-
Lookup Node filtering
-
Data mapper
-
Output Node
The platform is designed for the following users:
-
Developers who are looking to streamline their workflows in building and managing application on the IC.
-
Non-developers such as business analysts who require an interface to interact with and utilize data from various canisters.
How it works
Users can create a Circuit
that referres to its own Nodes
canister. This canister is the base of your circuits where you store 1 or more nodes.
Each circuit will begin with an Input Node
that retreives data from the outside world, with the chosen verification method. This data then flows to its subsequent nodes
.
Lookup node
A lookup is basically saying “Fetch data from Canister X
or a Web2 Service X
and combine it with my previous node
’s data”.
Lookup node Pins
These Pin
s can act as a sort of middlewares
for the node
.
-
Filter pin: allows skipping the node based on certain rules
-
Lookup filter pin: prevents data flow to the next
node
based on rules -
Mapper: converts data into a different format
All these rules can be based on dynamic values received from the Input Node
or Lookup Node
’s data.
Output node
An Output Node
is the end destination of your circuit. This will consolidate all data and send it to a designated Canister
or Web2 service
.
Here is a little preview: https://x.com/Slmii05/status/1731423434180051110
Arcitecture
The project consists of a front-end and a back-end
Front-end
Developed in React
, this allows users to configure their circuits and nodes to suit their needs, including data fetching and mapping.
Back-end
Developed in Rust using tools like ic-cdk
and serde
, the back-end can operate independently, running circuits based on user configurations.
Canisters
The project includes a 3 canister-system:
-
Front end canister
-
Main canister
– Stores user data and cirtuits meta data -
Nodes canister
– Each circuit a user creates will also create its ownnodes canister
.This canister is then in full controll of the owner, meaning that the user is responsible for the canister management, eg.cycles
– Stores nodes configuration, errors and logs
Status
The front-end configuration of circuits and nodes is nearly complete. The next steps involve enabling the back-end to operate independently and implementing logging and error tracing for better user debugging.
Future
The roadmap includes features like automated node triggering and custom script injections for detailed data transformations. These are just a few examples of the project’s future.