Write less code. Ship faster

Handy.js is a web application template for nodejs

Handy.js provides all the basic functionality of a web app freeing you to focus on the features that make your app truly unique

See Handy.js in action  Create a blog in 30 minutes or less using Handy.js


You never have to re-implement any of these features again for any web apps you build

User management

Out of the box user account management

  • Account registration

  • User authentication - login /logout

  • Password reset

  • Email address verification

Content management

Dead simple content management

  • Define new content types

    // define a new type of content - "Blog"

    var Blog = handy.defineNewContentType({content_description})

    var post = new Blog()    // create a blog post

  • Save or retrieve content from the database

    awesomePost.save()     // save to database

    awesomePost.load()      // load from database

  • Delete content


  • Rate content


Access control

Easy role based access control

  • Assign roles to users

    var eve = new handy.User()      // create a new user

    handy.assignRole(eve, 'editor')      // assign them the role of "editor"

  • Grant access permission

    var roleResourcePermissionList = [
     {role: 'editor', resource: 'content.BugReport', permissions: ['can edit any content']}

    handy.user.updateRolePermission(roleResourcePermissionList, callback)

    // any user with the role of "editor" can now edit all BugReport content

  • Check user permissions to access resources

    handy.checkPermission(eve, 'system.System', 'can modify system configuration')

    // return false if user does not have a role with permission to modify system configuration

  • Manage permissions with a graphical UI

    Can modify system configuration
    Can create new content
    Can edit own content
    Can edit any content
    Can create delete content


Advance content caching

  • Built in content caching

    1stcall:      popularContent.load()   // loads from database

    2ndcall:    popularContent.load()    // subsequent calls load from cache

  • Smart caching

    Cache is automatically updated whenever the content is modified or edited


Simply schedule cron tasks

  • Run site functionality periodically

    handy.addCronTask('send newsletter', newsletter.process, 'weekly')

Search engine optimization

Built in SEO tools

  • XML sitemaps automatically generated and submitted to search engines

  • SEO friendly urls created for all content

    "/content/1234" === "blog/one-weird-trick-to-create-insane-web-apps"

    // all content has both permalink and "clean" urls


Configurable database backups

  • Schedule backups to be saved to disk or sent by email


Send email using your email server of choice

  • Simple email delivery

    var message = {
        to: "new@user.com",
        subject: "Let's keep in touch",
        body: "Hey, here's my awesome email to you"