connect-platform / connect-platform Goto Github PK
View Code? Open in Web Editor NEWVisual Backend Programming Platform
Home Page: https://connect-platform.com
License: MIT License
Visual Backend Programming Platform
Home Page: https://connect-platform.com
License: MIT License
Add save functionality for timeout (saved for each node). This should be the default in my opinion.
[this issue was mentioned originally by @tkw1536, adding this issue to migrate the discussion over here].
When I add one in the panel, it was at first unclear to me how this node was stored. Does it remain after I restart the server? Is it stored on disk?
I had a slightly closer look and noticed that they were stored in some JSON format on disk.
IMO this is fine for development usage, but if I actually want to use this in production that could be bad.
Parsing / Interpreting some JSON can be slow, especially if some values have to be propagated through a graph.
If I see this right, atm this is done for every request.
Does it not make sense, to “compile” nodes into JS codes for production usage / on every change?This would avoid having to propagate the graph manually every time.
If done right, this could lead to automatically generating an entire codebase (e.g. an express app), that could then be run in stand-alone mode efficiently. Makes connect useful as a rapid prototyping tool.
It would be nice to get the ability to save progress just by using the shortcut instead of having to click the save button every time.
This also references issue #14. I noticed that making calls to longer URLs can get a little bit messy with the call box / search menu sizes.
When developing packages, it can get really annoying to not know about syntax errors (or other errors) that prevent packages from getting loaded. The only warning that you would get is that the module couldn't be loaded. An expressive error would provide a much better hint on what to do to solve the error efficiently.
This is probably only relevant for people who will develop packages on top of the platform but could potentially affect users which could theoretically run into problems when setting up the platform and using packages that might have errors due to the environment of the setup.
it should not
It would be really helpful to be able to filter the different layers of logic into 3:
Add support for production configuration that only loads on production and is not committed to the repo.
[this was first brought up by @tkw1536, adding an issue to migrate the discussion here]
I have seen the simple examples, like adding and connecting a handful of nodes, but so far I could have done all that with code just as well.
Here is the example from your website, but in modern JavaScript: https://gist.github.com/tkw1536/4fe9560f045abc6f5b2ff96f6bcf54e6
[first mentioned by @tkw1536, adding an issue to migrate the discussion here]
Generating human-readable documentation, maybe even with descriptions for all fields, would be huge.
When installing on a local machine using npm i:
404 Not Found: [email protected]
That version is not available on npm, possibly due to the hack on that library.
As an analogy to interfaces in Object Oriented Programming languages, it would provide a basis for best practice coding when there's a kind of type check on each call made out to nodes.
A sort of debug / sandbox mode would be interesting to test out things without having an impact on the actual logic. This is a random thought that needs to be explored more in depth as we dive into more concrete, real-world applications.
[this topic was first brought up by @tkw1536, adding an issue to migrate the discussion]
The type of each input was unclear. Maybe indicate if inputs are e.g. a string or a number. You could even validate them at runtime and throw an error if they are of the wrong type.
This could be interesting when the graph gets more complicated and you have intersecting arrows which can't simply be solved by rearranging the blocks. Therefore, an automatic rearrangement of the inputs / outputs order could provide a potential solution to this problem.
A quality of life change would be to be able to delete blocks just by using the DEL or backspace key.
The idea consists of being able to automatically refactor selected blocks into a new node that is used in the existing node code.
API caching will be a really important aspect of the platform as it could lead to better performance when done right and to outright wrong results if done wrong.
Some articles that might help:
Implementing API cache control
How-to: HTTP Caching for RESTful & Hypermedia APIs
RESTful Web Services - Caching
it happens sometimes that some files generated by the panel become corrupted, causing bogus registry info to be passed to the client. observed cases: panel-generated/index.js
(was empty), panel-generated/config.json
(was empty). this probably occurs due to immature interruption of saving/deleting processes, and should be checked with a high priority.
Eliminate render-blocking JavaScript and CSS in above-the-fold content.
In inedx.html, line 7:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Note:
eg:
If the HTML document looks like this
<head>
<script type="text/javascript" src="small.js"></script>
</head>
Then you can inline the script as follows:
<script type="text/javascript">
/* contents of a small JavaScript file */
</script>
Source: PageSpeed Insights
Reference:
https://developers.google.com/speed/docs/insights/BlockingJS
https://www.w3schools.com/tags/tag_script.asp
The ability to do Async calls will be important for well designed APIs. Hence, it should be carefully thought out how to implement this in the calls from the visual aspect of the platform. Also, in this context, callbacks would be necessary for some workflows / logic.
It will become of crucial importance in real world cases that APIs are tested out before actually going into production.
What happens if: you need to mock test for example production includes list of 1M email to transact and you need to make sure 100% your code works before you send the 1M emails? a way to dev/prod switch?
API versioning is an important aspect of any API. How can the connect platform handle this aspect especially with changing API interfaces, this can be of detrimental impact on users of you service and needs to be addressed by the platform as a way of enforcing these API contracts depending on the version of usage.
This is particularly important in the case of a third-party packages market place.
Articles worth taking a look at:
Introduction to API Versioning Best Practices
Versioning a REST API
Best practices for API versioning?
Boxes should be deselected when the user click out side of the box. This is of course a quality of life change.
running a node with a loop within it causes the platform to become unresponsive, although the node itself works correctly on first execution. probably some sub-nodes keep working indefinitely even after the master-node has responded.
We definitely need the ability to copy paste blocks as that would make the dev workflow faster.
what about nodes streaming data instead of putting out once? i.e. the node does not stop execution after first output and actually multiple outputs can be outputted? the node obviously would then need to explicitly finish the stream. I don't know, it might be a useful concept specifically as it enables asynchronous iteration (something we currently cannot support). however, it also makes understanding and specifically debugging the code much harder.
@must @CowboyBebug ideas?
When handling complex graphes it will be more practical to have the ability to select multiple boxes (Shift select for example) to be able to rearrange, duplicate or delete them.
When you open the Install custom code modal / page and then click on one of the inputs or tab to the other one, it automatically closes. This only happens once (first click) for each of the two inputs.
It would be a nice feature to be able to directly jump into node's code from the call itself. So when I call a node on the visual interface, it would prove to be of good value to be able to just double click or click a button to directly go into that node.
It would be better to add a warning for watch timeout running out (both in the actual response and the connect interface)
[first mentioned by @tkw1536, adding issue to migrate the discussion here]
A button “Copy as CURL request” or “Copy as JavaScript Client Function” would be really great. Then just copy-pasting that into another project would really add to usability for me.
when watching multiple nodes, console.log will cause a maximum stack call as multiple console watchers attempt to override the native functionality.
sometimes when we've got racing data links, the node might get stuck for some reason. this might be some silenced error or some mishandling of race conditions. anyways since race conditions aren't supposed to work fine, this is of low priority for now. but should nevertheless get fixed.
It would be really nice to have the ability to duplicate nodes and blocks (With the shortcut of copy paste and also from a right click menu as an option).
Blocks reference calls / component logic that is used in a node.
Nodes are the macro-logic end-points.
This is interesting because it simplifies creating the visual logic in some cases where reusing a graph is relevant either in package development or in actual development on top of the platform.
This is a really superficial comment, but the button for getting back home is not intuitive as it is placed in the menu on the bottom left under the save button. A more efficient and intuitive way of getting back to the home panel would be better in my personal opinion.
I tried to launch a package which used a configuration to connect to a redis server. When I used a wrong port for testing (by setting it through the config panel) it won't let me start the connect instance anymore (which means I could only remove the config from the config file and not through the platform to remedy this problem.
Is a logging mechanism for errors provided by the platform? @loreanvictor
Updated with detailed description:
So my question is more related to run-time errors as a way to provide a mechanism for logging errors that are not to be expected under normal circumstances and hence provide a way for the visual developers to debug their visual code. This is especially important for production as unforeseen complexities (Bugs) will eventually arise (Murphy's law).
Also logging can provide other levels of information (Debug, Info etc..)
yeah sometimes this happens. should investigate why, and should fix it.
When running API end-points, it can get really frustrating that a call would hang for no apparent reason only to find out that the problem is an output that hasn't been passed to an input. A sort of time out mechanism should be provided to remedy this problem.
It will be useful to add a command panel (like with sublime text CMD+SHIFT+P) with useful commands like Add call block, add expression block, add input, add config, add output
As the title says, it would be nice to have multiple calls in a row watched and listed with the developer being able to access each and play it back.
When you change an end point name / URI to remove a trailing slash then it is not recognized by nodes that already use it with the trailing slash name.
As the number of paths grow bigger, a structured Tree (through URIs) would be really helpful in keeping everything in order. Also, getting the ability to reorder nodes on the main interface could also help maintaining things organized.
[this was first mentioned by @tkw1536, adding an issue to migrate the discussion here]
Sometimes “Expressions” grow big. “a + b” fits in a text box, but how about having a button “Create node in external editor”, that opens up a normal editor where you can type code (either on the browser like Cloud9, or via the operating system)
An accessible way of exporting / importing end-point logic would be interesting from multiple perspectives:
I'm pretty sure we can come up with many more use cases for a functionality like this. And I am aware that the logic is already translated into a file format somewhere in the platform. This functionality is about providing an easy way of exporting / importing such a logic.
packing/unpacking is a recurrent thing and maybe adding some native nodes helps lazy developers on this one. @CowboyBebug first mentioned this during doing Telegram stuff, and I have some idea of how to pull that off:
[this was originally mentioned by @tkw1536, adding an issue to migrate the discussion here]
Instead of having to copy/paste code from the tutorial one can just run “git clone …”, or just run “npx connect-platform-quickstart”
The former is really quick to do, and would improve things a lot
The latter could a la https://github.com/facebook/create-react-app
A sort of templates for package usage could provide an intuitive way of not only documenting a package but also for easy setup when it comes to new users.
So the idea is basically block constructs that are a pre-arranged ensemble of nodes and their connections which are specific to a package and come with it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.