A Node.js framework for faster-than-light development.

Sapling is a Node.js framework for building websites, web apps and APIs as fast as you can imagine them. With unrivalled speed of development, you can prototype quickly, iterate with ease, and deploy the same day. Zero code, zero config – unless you want to.

Quick start npm i -g @sapling/cli && sapling create
DIY npm i --save @sapling/sapling & Docs
  View on GitHub

Unmatched speed of development.

Sapling is designed for faster-than-light development. There is zero mandatory configuration or boilerplate code. UIs and forms simply come alive as you write them. All the common SaaS features are built in and fully configurable.

All the SaaS features you hate to write.

Sapling will have all of the usual SaaS features nobody likes to write, built right in.

Authentication

Login, registration, forgot password, change password, all handled natively out of the box.

Email notifications

Send users automated notifications and messages via email, with easy styling and testing.

File upload

Handle user-uploaded files with ease, including image thumbnails and S3 storage integration out of the box.

Backend & API

Sapling features a zero-code dynamic data backend which can double up as an API for a mobile app.

One-off payments

Coming soon

Sapling integrates with Stripe, and handles payments, paywalls, credit card details, taxes, order histories, PDF invoices and more.

Recurring payments

Coming soon

Plans, subscriptions, upgrading, downgrading, prorating, free trials, all out of the box and ready to go.

Teams

Coming soon

Allow users to create and manage teams, with invites, permission levels and admin tools built in (and yes, there's also team billing).

Websockets

Coming soon

Sapling can also run a websocket server, creating real-time interactions with zero configuration.

Push & SMS notifications

Coming soon

Send users automated notifications via push and SMS just as easily as sending email.

2FA

Coming soon

Two-factor authentication, with QR codes, recovery codes, setup, enforcement, app specific passwords and more.

User impersonation

Coming soon

Securely authenticate as any of your users to immediately see your app through their eyes.

Localisation

Coming soon

Translations, number and date formats, and everything else for a fully internationalisable app.

All the other good stuff, too.

Despite the focus on prototyping and speed of development, Sapling is fully production-ready, too.

Scalable

Native cluster support for utilising all CPU cores, and support for load balancing.

Secure

Robust permission structure, and a production mode that trades some of the development speed for completeness.

Unopinionated

Use any database system, templating language, and frontend stack you like.

Your grave concerns.

Rightly you might feel skeptical. Here are the common "but"s and our take on them.

How can all the forms work with no backend code?

Sapling's dynamic data backend figures out what to do based on the type of request it receives to the built-in /data route. It acts as a lightweight wrapper for abstract CRUD operations;

  • GET /data/posts returns all records in the collection posts
  • GET /data/posts/type/text returns records in the collection posts, where the value of type is "text"
  • POST /data/posts creates a new record in the collection posts
  • POST /data/posts/_id/1 modifies any records in the collection posts, where the value of _id is 1
  • DELETE /data/posts deletes all records in the collection posts
  • DELETE /data/posts/_id/1 deletes any records in the collection posts, where the value of _id is 1

As such, the second URL segment is the collection, and if the third and fourth segments are provided, they will act as key and value for a where clause, respectively. The method of the HTTP request determines what is done with the matching records. In cases of POST requests, any and all POST values received are saved into a new record or any matching records.

Learn more about the data API

Oh wow. Putting this on production would be insanity!

Absolutely, and Sapling's default configuration is indeed not meant for production use, but rather, optimised for rapid prototyping.

Sapling has robust support for built-in data and request validation, as well as access control for each method-route combination. By default, these are optional. However, in Sapling's production mode, both of these must be defined, and nothing is ever implicitly saved into the database.

Learn more about production mode

Learn more about data models

This must be some low-code framework for beginners, with no options for advanced development.

Just because you don't need to write code to do basic CRUD operations with Sapling, doesn't mean you can't write code when you actually need to.

When you need to write advanced functionality, Sapling will step aside, and let you handle requests just like you would with any other server framework. Organise and write your code however you wish. All of Sapling's internals methods are available to you - though you don't need to use them, if you don't want to.

Learn more about hooks

This doesn't sound very robust – this would never work for my team of 250 devs building custom enterprise banking solutions.

And that's fine. No tool is right for every job.

Where Sapling shines are situations where speed of development is critical, or available manpower is limited: MVPs, hackathons, prototypes, proofs of concept, mockups, side hustles, personal projects, one-off campaigns, and so on.

Get off the ground quickly by never having to write another login form, or worrying about backends for all the basic "put thing in database" stuff – spend 100% of your time on the things that actually butter your bread. And if you ever feel your project has "graduated" out of Sapling, all your custom-developed business logic remains easily portable to any other JS framework.

Learn more about code portability

I don't like MongoDB or Nunjucks or Vue.

You don't have to! Sapling uses these three by default, but that's all they are – defaults. Each functionality (database, templating, frontend framework) is its own separate package, which you can replace or uninstall at any time.

Sapling is fairly hands-off with the frontend stack, so you are free to use whatever frontend build pipelines you prefer.

Database and templating engines connect to Sapling via an abstraction layer called a driver. Chances are, there's already a driver for your favourite database or templating engine – and if not, you can easily write your own.

Learn more about drivers

Quick start.

Install the CLI

Run npm install -g @sapling/cli to install the command line tool globally. The command line tool helps you create and manage Sapling projects.

Create your first project

Run sapling create to run a wizard for creating a new blank project. It will automatically create the files and folders needed, and install any dependencies.

Start developing

Navigate to the folder and run sapling run to turn on the server. Read the documentation to learn the basics of Sapling.