Save weeks of time and build your Node.js & React SaaS app at warp speed

Gravity is a Node.js SaaS boilerplate with React UI. It has all the features you need in a single install.
Buy Now Try a Demo
Gravity Web Demo Video

252 Startups & Developers Trust Gravity


If it takes you 4+ weeks to write all 11,328 lines of code. At $75 per hour that's a whopping $12,000.
You save $11403

Read the Full Spec

Need a feature not listed?

Gravity can be customised to include additional features that fit your project requirements.

Customise Gravity

Products Built With Gravity

Founders and freelancers use Gravity to test new ideas and build fully-loaded market-ready products

How it Works

Download the codebase and run the setup wizard – in less than two minutes, you’ll have a fully-functioning web application.


  •       /*
          * account.create()
          * create a new account and stripe customer
          * process the payment and create a new recurring monthly subscription
          exports.create = async function(req, res){
            const signup = req.body;
            let stripeData = {};
            // check if the account already exists
            const exists = await account.get(null,;
            if (exists)
              throw ({ inputError: "email", message: "You're already registered" });
            // create a stripe customer and subscribe them to a plan
            stripeData.customer = await stripe.customer.create(, signup.source);
            stripeData.subscription = await stripe.customer.subscribe(, signup.plan);
            // create the account and user
            const accountId = await account.create(signup, stripeData);
            const userId = await user.create(,, signup.password, accountId, "owner");
            // send welcome email
            mail.send(, "Welcome to Gravity!", "welcome-account", {
              name:, plan: signup.plan, price: stripeData.subscription.price
            // autheticate user
            authController.signin(req, res);
  •       /*
          * verify the api token
          exports.verify = function(permission){
            return async function(req, res, next){
              try {
                const token = req.headers['authorization'];
                if (!token) throw new Error();
                 // decode the json token
                let bearer = token.split(" ");
                const decode = jwt.verify(bearer[1], settings.token.secret);
                // verify user
                if (decode.accountId && decode.userId && decode.permission){
                  // now verify the permission
                  const userPermissions = getPermission(req);
                  if (userPermissions[permission]){
                    req.account = decode.accountId;
                    req.user = decode.userId;
                    throw new Error();
                  throw new Error();
              catch (err){
                res.status(401).send({ message: "You do not have permission to perform this action. Please try logging in again" });

Powered By

Stripe Logo Mailgun Logo

Why Use Gravity?

As a founder and startup mentor, I've watched an endless number of businesses blowing huge budgets and wasting weeks of time creating standard features like login forms and billing.

I created a Node.js SaaS boilerplate to help developers and businesses to slash development costs and build products faster, empowering them to focus on building features that truly matter – the ones that generate revenue.

For a small fee, you'll have a market-ready web application that will save you weeks of time and thousands of dollars in in software development.

Get a head start on your SaaS app today

Buy Now