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
You never have to re-implement any of these features again for any web apps you build
Out of the box user account management
Account registration
User authentication - login /logout
Password reset
Email address verification
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
crappyPost.delete()
Rate content
mehPost.rate(6)
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
| unauthenticated | authenticated | editor | administrator | |
|---|---|---|---|---|
| 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')
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"
}
handy.sendEmail(message)