Hotplate SaaS development framework

Welcome to Hotplate

Hotplate is a framework that allows you to create 201X software in no time. By 201X software I mean software that:

  • allows you to log in using Facebook, Google, Twitter, Oauth1/2, or... well, login/password pair if you like
  • shows information as it changes to the user. If you have three tabs open, and change your user photo, from one tab, the other two tabs need to see the new photo as well. If you change your name, other users will need to see the update right away.
  • feels like software, and not like a bunch of web pages
  • uses a smart client, and a smart server; the smart client is to display information is the most user-friendly possibly way, whereas the smart server is to provide a bunch of secure data stores that are JSON-REST compatible
  • handles errors (including, and in fact especially, network errors) properly. If anything really bad happens, the application must not stop. Instead, it will tell the user that something network-wise went wrong
  • has the ability to communicate to your users in different ways: email, SMS, and whatever the world throws at us
  • is written as a bunch of small, independent, maintainable modules

I realise that in 202X (that is, 2020 to 2030) writing software will be different. What is cool now, will be taken 100% for granted in 2025. Or maybe Javascript will be dead. I don't know, and I frankly don't care. I wrote Hotplate because I felt that this is what software should be in 201X -- which is now.

Getting into it

Hotplate is written for Node. It's a normal, no-frills Node-based framework. So, before you get into Node, you should know:

  • Javascript. Too many resources to list. The book that got me started was Object-Oriented Javascript. I think it's great that it covers how constructors and objects work.

  • NodeJs's documentation. Not exactly tutorial style, but I find that actually going through Node's own documentation is a great way to actually get to know Node. It starts with a simple, basic web server and then goes through all the nitty-gritty about Node. I personally read it once a month, just to freshen up (you end up using a tiny fraction of what's in the docs)

  • ExpressJs's guide and API. Express is actually surprisingly simple and small. It doesn't actually do that much, what everything it does is really important, and it does it well. It's important to understand how middleware plugins work.

  • HTTPErrors. A very simple module that creates constructor functions for every HTTP return code (actually, not just errors).

  • SimpleDeclare. Javascript is a great language, but it lacks a simple way to declare object constructors and inheriting. A lot of node programmers actually do it by hand, writing Class.prototype.someMethod = function(){ ... }. I personally find that absolutely insane. SimpleDeclare solves this problem: it handles (multiple) inheritance, constructor methods, calling of inherited methods, and inheritance of constructor-wide methods. SimpleDeclare is really small, but it does everything for you.

  • JsonRestStores (which uses SimpleSchema). Hotplate is all about stores -- really. JsonRestStores is a fundamental piece here: it allows you to create Json REST stores in no time, dealing with permissions, queries, error management, inherited stores, and so on. You should make yourself comfortable with JsonRestStores while studying Hotplate.

Hotplate comes with comprehensive documentation [Note: not yet, documentation is in the works. The statement below are blatantly false]. It has:

  • A comprehensive guide. The guide takes you from absolute zero, to actually knowing what you are doing with Hotplate. It's a tutorial-style guide, where you are explained everything step by step.

  • Server API documentation. It documents what each Hotplate module provides, from a server point of view.

  • Client API documentation. It documents what each Hotplate module provides to the clients (for example Dojo widgets).

Current status:

  • Authentication: DONE
  • General code cleanup: DONE
  • Fixing hotCoreCometMessages for real time comet updates: DONE
  • Write a sample, small application: IN THE WORKS
  • Writing the messenging framework: UPCOMING