Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Cover image for Total.js tutorial: Simple Todo application (part 1)
Louis Bertson
Louis Bertson

Posted on • Edited on

     

Total.js tutorial: Simple Todo application (part 1)

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
Enter fullscreen modeExit fullscreen mode

Now you can open the project in your favorite code editor. In my case, I am using VSCode.

Image description

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});
Enter fullscreen modeExit fullscreen mode

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
Enter fullscreen modeExit fullscreen mode

The output of that will look like the following:

Image description

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');}
Enter fullscreen modeExit fullscreen mode

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());}})});
Enter fullscreen modeExit fullscreen mode

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).

  • POST /todos/create
    Image description

  • GET /todos/read/{id}/
    Image description

  • PUT /todos/update/{id}/
    Image description

  • GET /todos/list
    Image description

  • GET /todos/toggle/{id}/
    Image description

  • DELETE /todos/remove/{id}/
    Image description

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)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Software Developer at Total.js
  • Location
    Ouagadougou, Burkina Faso
  • Work
    Developer
  • Joined

More fromLouis Bertson

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp