Enyo full stack - what's in your wallet?

Let's discuss how Enyo fits into our total application mindset. The "full stack" if you will.

Once upon a time, I used WebObjects from NeXT / Apple. I didn't have to think about what I would use, I just needed to use what they gave me because it was a complete solution.

Over the years "LAMP" for PHP has been there, now there is "MEAN" for Javascript. It's an attempt to take a bunch of pieces to make something coherent. Though I don't think anyone reading this forum wants to use LAMP nor MEAN.

With Enyo, we got the perfect solution for righting a highly intelligent single page application. But what about the rest?

Right now for my next project I'm evaluating:
Ares (IDE)
Enyo (client layer)
Lawnchair (client side persistence)
Appcache (to make Enyo an "offline first" app)
Node (server layer)
Express (rest API layer)
Bookshelf (ORM layer)
Passport (authentication)

What do you use?


  • This is what I use initially for all my Enyo related projects. Depending on the project requirements, I may change to another Client Side Persistence method and DB to an SQL type db using Sequelize as an ORM layer.

    Sublime (IDE)
    Enyo (UI)
    PouchDB (Client Side Persistence)
    Node (Server Layer)
    Express (REST API Layer)
    CouchDB (Database)

    So I guess my stack it CEEN... CouchDB, Express, Enyo, Node!
  • Hi Fred, "CEEN" I love it!

    Could you expand upon why you are thinking of going from a NoSQL to a SQL DB persistence in the future?

    There are a few ORM solutions for SQL:

    I had been leaning towards Bookshelf but not overly so. Mainly I had seen a number of blog posts I liked that used it, but other than that I'm not sold. Seems like many people use Sequelize too.

    Mind sharing why you give Sequelize the nod?
  • Fred, I've been reading about your CEEN approach over the weekend. It has a lot of merit primarily because:

    1) CouchDB is not only a persistence layer... it also provides REST and web app services with user authentication out of the box. It wants to not only be your DB but your website too.

    2) CouchDB was designed for "master-master" replication. It's a bit like GIT. Every copy of CouchDB is a "master" so you can write to it and the changes propagate. This leads to a very interesting #3 below.

    3) PouchDB is a javascript version of CouchDB that shares the same API but runs in the browser using whatever it has available (IndexDB, WebSQL, LocalStorage). It will automagically sync whatever you do in your Enyo app with the server.

    4) Doing your CEEN approach is a very exciting way to create an "offline first" app that always works, is always fast, will keep in sync with the server.

    I have incorporated the CEEN approach into a slide in my upcoming talk about Offline apps:

    I have made a slide covering the more traditional SQL approach:
  • Recurve,

    On you question about switching from NoSQL to SQL for persistence, well I have only had to do that once because of the requirement of another developer. On one project I was building a new front-end UI for an application that was already based on SQL back-end. The app owner/dev wanted persistence to be SQL since that is what he knew and was anti-NoSQL.

    As for Sequelize... Well my last project needed an ORM solution and I didn't know about ORM, so I reached out to a few local devs and that is what they suggested. I think I will also look into Bookshelf next time.

    When it comes to CouchDB. I use it for all my projects. I have also used other NoSQL DB's but like CouchDB the most because of the REST integration built in. I have a personal "grocery inventory/list" app that uses CouchDB and PouchDB's sync process. Works great.

    I have several internal apps built on the CEEN stack for the company I work for that are all around DevOps.
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!