Think Arke

Terminology and method

Arke was studied to avoid code and logic repetition. What you will find here is a standardized approach, this permits to unify logics with naming and methods.

Getting into the arke mindset you'll discover that architecture shared a common philosophy. Variable naming and conventions are the main keys. We invite you to follow the below terminology to get started with Arke development, this help you to understand how data are stored and how should be modeled.


It's a type of abstract model that can represent a person, a place or a thing. An Arke can be imagined as a json representation of a database table, the name of which will be determined by the name of the Arke itself.

Everything could be described as an Arke, as a digital twin for our purpose. Imagine that you want to create an application to manage animals species, their characteristics to catalog them and relate them. We can create an Arke for each entity that we want to manage: e.g. the arke dog, the arke cat and the arke fish (Use as convention the singular for the identifier naming)

Every time that you'll create the primitive arke a set of functionalities are attached:

  • Database storing (persistance): a Record on database will be created to store and manage the updates of your arke
  • Autogenerated APIs: with authentication system, permissions (GET/UPDATE/CREATE/DELETE), sorting, filters and more to allow the connection from other systems (our arkectl CLI, APIs client, the arke console or your frontend application).



The parameters extends the attributes of our entity to describe it. Each arke has a list of default assigned parameters and a custom list.

On default parameters we found a standard list of generic information useful to manage our arke. For example we have the id that identifies our entity, the created_at/updated_at to know when this entity it was created or updated and more.

On custom parameters we found a list of additional specific parameters that we can add on our arke to describe it. Considering the arke dog for our application, we can associate parameters name/weight/race/etc. to describe our dogs, and later collect, the dog data.


The list of parameters that composed an arke is defined as Struct (structure)

There are different types of parameter that you can define such String/Integer/Float/Link, we'll discover them better on the Parameters chapter.


After the definition of our arke and their parameters, we can create a unit. The unit is the specific instance of the arke. Always considering our arke dog, a unit is the specific dog (eg. Pluto, Scooby Doo, Balto) with his data (name, weight, race) defined previously by parameters. On below a representation of dog and race arke with their parameters and units.



Links define the type of relation/connection that can exist between different Units. Units can be linked together to create distributed structures. For our application the dog could be connected on units of the arke race. The race represents the Parent and the dog the Child.


Link parameter

It exists a special parameter with type link that automatically generated a connection when is popolated.



With Group you can create aggregation of arke and relative units. In our case we can create a animal group that groups all dogs, cats and fish. With grouping we can have autogenerated APIs for this group with sorting, filtering units of all arke in this group.



Below you can find a complete representation that can help you to understand all low-level entities of arke framework.


Below you can find a quick recap table that will help you to understand the differences between Arke and Relational Databases.

Relational DatabaseArke framework

Remember that Arke is the primitive that unlock the functionalities (such CRUD APIs, struct, sorting). Each upper layer such unit, parameter, link, shared that functionalities and extend them