
I have published some blog posts and videos about Total.js Flow, the famous node-red alternative that is entirely written with the Total.js framework. Then I got many feedbacks from people asking me how to get started with thetotal.js framework. And I finally decided to create this Total.js tutorial series to help you move from zero to hero with theTotal.js framework. I am so happy to publish the first tutorial of this series. Today's tutorial has two parts:part 1 will focus on the server-side implementation of our simple todo application, andpart 2 will focus on its client-side implementation. I will share with you the GitHub source-code link and the youtube video link of this tutorial so that you can effectively learn everything about the Total.js framework.
Create project
Before you create a project for this tutorial, make sure that you have node.js v14 or earlier installed on your machine. This is enough to start building anything you want with the Total.js framework. Then we need to open your terminal and type the following commands:
# create folder and move into it$mkdirtodoapp&&cdtodoapp# init project with npm$npm init-y# install total.js (The only one dependency you need )$npminstalltotal4
Now you can open the project in your favorite code editor. In my case, I am using VSCode.
Create a main entry file (index.js)
Create a.js
file in the root of your application. The name for the app entry file is usually anindex.js
file but you can name it whatever you want! The important thing is that you will need it to start the development server for your application. After you created it, you must put the following simple start script:
require('total4/debug')({port:5000});
That one line of code is enough to start the server in debugging (development) mode!
Then you type the following in the terminal to run it:
node index.js
The output of that will look like the following:
Create todo API endpoints
Create/controllers/api.js
file to define your application endpoints.
exports.install=function(){// Http_method Uri *Schema_name --> action_nameROUTE('GET /todos/list/ *Todos --> list');ROUTE('POST /todos/create/ *Todos --> create');ROUTE('GET /todos/read/{id}/ *Todos --> read');ROUTE('UPDATE /todos/updates/{id}/ *Todos --> update');ROUTE('DELETE /todos/remove/{id}/ *Todos --> remove');ROUTE('GET /todos/toggle/{id}/ *Todos --> done');}
Create schema and actions for the app endpoints
Create/schemas/todos.js
file to define your Todos schema.
NEWSCHEMA('Todos',function(schema){schema.action('list',{name:'List todos',query:'search:String',action:function($){varbuilder=DB().find('nosql/todos');builder.where('isremoved',false);// enable searching via request query parameter$.query.search&&builder.search('search',$.query.search);builder.fields('id,name,isdone,description');builder.callback($.callback);}});schema.action('create',{name:'Create new todo',input:'*name:String,description:String,isdone:String',action:function($,model){model.id=UID();model.isdone=false;model.search=(model.name+''+model.description||'').toSearch();model.isremoved=false;model.dtcreated=NOW;DB().insert('nosql/todos',model).callback($.done(model.id));}});schema.action('read',{name:'Read specific todo',params:'*id:String',action:function($){varparams=$.params;DB().read('nosql/todos').fields('id,name,isdone,description').id(params.id).where('isremoved',false).error(404).callback($.callback);}});schema.action('update',{name:'Update todo',params:'*id:String',input:'*name:String,description:String,isdone:String',action:function($,model){varparams=$.params;model.dtupdated=NOW;model.search=(model.name+''+model.description||'').toSearch();DB().update('nosql/todos',model).id(params.id).where('isremoved',false).error(404).callback($.done());}});schema.action('remove',{name:'Remove a todo',params:'*id:String',action:function($){varparams=$.params;DB().update('nosql/todos',{isremoved:true,dtremoved:NOW}).id(params.id).where('isremoved',false).error(404).callback($.done());}});schema.action('done',{name:'Toggle done/undone status of todo',params:'*id:String',action:function($){varparams=$.params;DB().update('nosql/todos',{'!isdone':true}).id(params.id).where('isremoved',false).error(404).callback($.done());}})});
Testing the endpoints
Your API development is done! Now you need to test it to make sure that everything is okay. You can use your favorite API testing tool. The most popular isPostman but you can useinsomnia or LinuxRest scope (in my case).
That is all for our applicationServer side API implementation. The next step is to implement a niceclient-side UI for interacting with our API and this will thePart 2 of this tutorial. If you enjoyed reading this tutorial, please share it with your colleagues, like and leave me some comments.In part 2, I will share the source code link and the video tutorial link too. So consider following me and subscribing to the newsletter to not miss part 2.
Top comments(0)
For further actions, you may consider blocking this person and/orreporting abuse