We started the Bolt project based on a “Block architecture” where each element is a JSON block containing consistent parameters. This is based on the “Notion” block data model explained in this
This type of architecture has grown in popularity, mainly by doc creating apps like Notion or Coda.io; where you where creating web pages/docs in real time rather than using an editor in an admin.
This structure forces us to handle each element as a single element (block) at its source, which results in high scalability and allows us to expand different parts of the project with minimal effort.
Bolt is currently a test project, but the idea is that it should allow a user to create a website/app in real time, without the need for an editor or admin dashboard.
Short Intro Dec 2023
Block architecture
There are 2 main files managing blocks. The data file, which contains the JSON data for all blocks on a page and the block settings file, where each block is defined as an object with information on how the block behaves.
Block data
Each block contains information about the block type, its unique id, its position, creation date etc.
Block settings data
Each block is defined as an object with information on how the block behaves.
{
"id":"2-6",
"type":"navigation_item",
"items":["1","2"],
"created_at":"8/14/2023 10:59:23 PM",
"updated_at":"8/14/2023 10:59:23 PM",
"created_by":{
"object":"user",
"id":1
},
"last_edited_by":{
"object":"user",
"id":1
},
"parameters":{
//... Unique to block
},
navigation_item:{
description:`A clickable link for easy browsing and moving around.`,
group:"navigation",// Block group
friendly_name:"Navigation item",// Name of block for display
accepts:[],
sortable_context:false,
droppable:false,
draggable:true,
// Custom parameters - These are shown to in the sidebar editor for each block