Where do i start?

Hi,

I want to understand the code. How do I go about it? The existing developer’s documents are not that useful to understand how the code is structured, how do I setup the development environment, how do I debug the code etc. I am looking for a code walkthrough of the platform. Can someone please help me so that I can learn and extend this platform and also add more features I have in mind.

Regards,
Ashwin

Hi @ashwin, and welcome!

I understand the documentation can be very lengthy and possibly confusing for first-time users.

Did you take a look at this bit of the documentation: DevOps guide :: Corteza Docs ? I believe this is a good starting spot to get an idea of the project’s overall structure and where to start setting up the environment locally.

If you already followed this guide, please let us know what the blocker is, and we’ll do our best to find a solution.

Cheers!

Hello Mia,

I have already run through the guide and set up my local environment. I can access corteza server using localhost address. I have also explored the platform by creating a namespace, building modules, pages, validations etc. While exploring the platform, I came across certain things which I thought could be improved. Some of the things that came to my mind are,

  1. Navigation: the namespace landing page can be improved by listing namespaecs, modules, pages etc in a left navigation bar.

  2. Permission model: can be improved by
    a. Allow/Deny based on current record meeting certain condition/s
    b. Allow/Deny based on the result of an expression or a set of expressions
    c. Allow/Deny based on the combination of all

  3. Client-side scripting: Ability to write scripts to perform client-side operations like:

Setting a field value

Making a field mandatory, read-only, visible/hidden

Performing complex validations using a script

Saving a record

Show a message/error/input box.

Open a modal form

Trigger server side processing from client side

etc.

Styling: Provide configurable styling (CSS) at namespace level

and so on.

Now that I like the platform, I want to learn more about it and improve it. I have been working on RAD (Rapid Application Development) platform since last 15 years and have worked on Remedy and ServiceNow platforms. These were/are the original no code low code heroes which very few people know about. I think I can leverage that expertise to improve Corteza platform which essentially follows the same principle that Remedy and ServiceNow have followed but decades ago.

I need a code walkthrough and need to know how I set up my development environment and run/debug the code in IDE.

Hi @ashwin

Thank you for your input. We’re aware that that we need to extend and polish our docs in quite a few places and make it easier to understand for every interested developer . So far it’s been mostly our internal team or people with good understanding of golang projects.

In a nutshell:

  • checkout the repo
  • run make watch to spin up Corteza in dev mode with reloading on change
  • change/fix stuff in the code

I’m fully aware that in practice is not as trivial as 3 bullets above describe.

For now, I’ll have to invite you to do some exploration on your own and if possible, maybe you write a paragraph or two on setting up the env?


Regarding the suggested improvements

  1. This is already in the making and pretty much done. I’ll let @mia.arh share some details
  2. Permissions is strictly RBAC for now. Digging into attribute-based access control would need quite a few changes in the core of RBAC and how it’s implemented. Not sure if we want to take it so far. You might want to know that RBAC is getting some upgrades in the next 1 or 2 releases: we will add support for “dynamic groups” (for the lack of the better name) that will enable setting permissions to “owners”, “creators”, …
  3. Client side scripting with functionalities you’re describing is already available through Corredor Automation server Client Scripts and to some extend via Workflow (released with 2021.3 this week). I know it’s far from easy-to-use-and-understand but it’s at the level where it needs some good examples using building blocks already available.
  4. Configurable styling is something that would really come in handy.
2 Likes

Hi guys,

For point 1 - as Denis said, we indeed are working on a similar solution with a sidebar where the user sees all the pages, can search through them and switch between namespaces - all in one place.

Here is a screenshot of a proof of concept:

I hope this makes sense!

2 Likes

Came here looking for what this commenter was looking for.

I’m looking to migrate from another platform which has a few limitations that are causing problems one of them being their highly proprietary code. On the face of it Corteza looks like it has potential, but I’m a bit lost. The YouTube videos are helpful for “this is how you do x”, but it would be really helpful if there was a worked example that tied the pieces together. A library app for example, something that is semantically universal, relatively simple but has enough moving parts to work through and tie it all together.

Thanks
Pw

I’m looking for exactly the same thing as the OP and Pointswell. A clear complete reference project to both use and improve Corteza.

I’d be interested in sponsoring this initial effort and would gladly create the outline and progressive complexity needed to be explained for the market.

I’ve reviewed and tried nearly every low code contender out there (outsystems, kony/hcl, wrapper, appgyver, uibakery, budibase, dotcms, internal-io, dozens more …) They all have their fatal flaws, with wrapper being the best self-hosted alternative and HCL Volt being the best cloud alternative, for my needs.

They all have promise but the opensource approach of Corteza to namespaces apps, workflow, go, client/server separation, and integrations is what I I’m looking for.

I’ll also gladly help support the documentation as it’s your primary developer evangelist at the moment, and we’re struggling to adopt.

Cheers,
Lance

@Pointswell, @travtrax hello and a warm welcome to Corteza :wave:

This is precious feedback, thanks. While Corteza is indeed really powerful, it perhaps comes hand in hand with complexity. The majority of our team consist of developers, and maybe we focus too much on other engineers and not enough on end-users.

CRM and Service Solution pre-configurations are meant precisely for that - to give you a starting point and an example of what’s possible. CRM is also pretty commonly used in Corteza, so the idea is to provide users with an example, so they don’t have to build it from scratch. Is this not helpful at all? Can you give me a bit more insight into your use case, so I can hopefully advise better?

I was meaning a project for a new (developer) user to build. The CRM project does indeed give a great showcase of the possible, it’s also not very penetrable for someone wanting to build another project from scratch.

What does this look like? A series of steps for an end user to take to put all the bits together themselves, hence a relatively simple model, which is why I suggested the library example.

Currently there are steps that are easily demonstrated from a video (How to create a Namespace, how to create a Module), but there are things that are missing in terms of tying these together. The examples are (probably) in the CRM module, but if you don’t know the thought process of the developer then the Workflows (for example) are a list of Workflows, you don’t easily know what it is doing, from where or why.

This creates quite a high barrier to entry. To figure out what is happening you need to first dissemble the model, then figure out where the Workflows are being called from, then figure out how the modeller works. This reverse engineering process is not an effective learning method and requires a significant investment in time on matters unrelated to learning how to use Corteza.

A straightforward example of something to build and then either video tutorials or a manual laying out the steps and what it looks like at the end would be enormously beneficial and allow new comers to learn from doing which reduces the number of “how do I” questions.

@Pointswell we do have quite a bit of documentation around creating your own low-code applications with Corteza, as well as how to automate your business processes with automation.

The docs are available here where this guide focuses on configuring your namespaces, modules, pages (the “data model”) and this one focuses on automation.

Now, it is true that we still have quite a way to go in regards to the documentation, but I do think we’ve managed to provide enough insight into the more common use cases.
Any feedback on the documentation such as clarity of finding what you were looking for, what unknowns were left unanswered is always welcome!

@tjerman thanks for the links.

What I’m missing from the documentation is (for example) for a a workflow, how do I bring a module and it’s record(s) into context, what’s the syntax. The documentation seems to have all the reference information there but it lacks the how to that links it all together.

Which is why I suggested a step by step in a straightforward app either text or video. It really is the stitching of the reference manual to the how to.

Hmmm, I understand; it’s a bit hard for the core developers to approach the documentation from the end-users perspective, so any additional feedback on what could be reworded/added/removed is very appreciated.

Can I ask you to put together a series of questions that are left unanswered by the current documentation (not limited to the ones I’ve linked)?
That would help us in revising the documentation to include the missing bits.

I will most likely prepare a little TL;DR document that outlines the whole thing and the entire process on a few pages hopefully written on the end-user level.
I’ll include a reference to it in this thread most likely sometime in the following week depending on how tricky it turns out to be.

We are reaching a catch 22 situation. I cannot tell you what I do not know.

Surely the core developer have designed Corteza with a method of use in mind. It’s possible I am not the person that the developers intend to use the tool, but if end users are intended to use the low code development elements of Corteza then they need some how to guidance beyond “Here’s the function language, here’s how to create a module, figure out the rest”

I have no idea how to go about using the low code development aspects of Corteza.

I can create a name space I can create a page and I can probably create a query. How do I create page navigations? Beyond opening the workflow editor how do you set up a work flow?

Can I ask you to put together a series of questions that are left unanswered by the current documentation (not limited to the ones I’ve linked)?

That would help us in revising the documentation to include the missing bits.

I, along with others above (and elsewhere in the forum), have outlined what we need to be productive, a worked example that steps through what needs to be done to create a simple app. It’s not a TLDR issue, its about approachable documentation that gives an insight into how the developers envisage the tool being used.

Hi @Pointswell. We have a list of videos that will help you to create a simple app :slight_smile: https://www.youtube.com/channel/UC25S-24KQHVvS2mEmggHEPQ/videos

I feel like this is a circular conversation, as I mentioned above

The YouTube videos are helpful for “this is how you do x”, but it would be really helpful if there was a worked example that tied the pieces together.

Sorry, didn’t catch that bit in your comment. :slight_smile:

Let me share a tutorial with you. It’s from a previous version of Corteza, so screenshots look a little bit different, and since then new features have been added. But the main story is still the same: firstly, create the modules to set what data you want to store. and secondly, create the pages, so that the data can be shown.

In the set of articles a simple donation management app is created.

  1. Getting started with Corteza Low Code for your CRM: How to build an application | Opensource.com
  2. How to create the data structure for a Corteza Low Code application | Opensource.com
  3. How to create the user interface for your Corteza Low Code application | Opensource.com

The result is this app: Low Code

Hope this is the kind of info that you are looking for :slight_smile:

This is in exactly the direction that I was looking for. Did any articles every get written for the next steps, i.e. how to tie in the use of Automations and workflows? That seems to be the missing piece and the area where I have least visibility / clue

1 Like

You can expect those kind of articles over the next weeks. :slight_smile:

1 Like

:+1: Great to hear that

Hello,
I’m new on this plateform and i’m new using corteza as well. However i need to make a join betwwen a user selector and a record selector and show the result. Is it possible? In DB it’s a join left between tables. However i have a user selector and a record selector.