At its heart, SaneJS is just a starter-kit for server-rendered templates built with HTMX, Express, and Mongoose. It comes all wired up out of the box with error handling, file-based routing, a simple but powerful templating engine, TailwindCSS based theme system, LiveReload, and middleware helpers.

What's in the box

  devops/  # Scripts for deploying and managing pm2
  lib/     # Middleware, MongoConnection, Logger
  models/  # Mongoose models
  routes/  # HTML templates with inline server-side scripts
  static/  # Static files like images and CSS
  style/   # Tailwind CSS compiles to /static/css/bundle.css
  app.js   # The main Express app / entry point
  .env     # Mongo connection, app port, etc.

5,000 foot view of a SaneJS app

Using file-based routing, Sane will look in the routes/ directory for a match. If one is found, it will be rendered with its partials, layouts, and front matter. If a server block was also defined for this route, Express will execute that code and render the template with locals parsed in. This all done on the server-side.

Once a template is downloaded to the user's browser, HTMX is used to facilitate partial DOM replacements, and Hyperscript can be used for client-side DOM manipulation and animation making the app feel far more fluid and interactive.

Quick start

  1. Download and cd into SaneJS.zip
  2. npm install
  3. npm run dev