What is hapi?

hapi is a simple to use configuration-centric framework with built-in support for input validation, caching, authentication, and other essential facilities for building web applications and services.
hapi is a tool in the Microframeworks (Backend) category of a tech stack.
hapi is an open source tool with 11.2K GitHub stars and 1.2K GitHub forks. Here’s a link to hapi's open source repository on GitHub

Who uses hapi?

53 companies use hapi in their tech stacks, including Hazeorid, Kanteronstack, and Epochtalk.

33 developers use hapi.

Why developers like hapi?

Here’s a list of reasons why companies and developers use hapi
hapi Reviews

Here are some stack decisions, common use cases and reviews by companies and developers who chose hapi in their tech stack.

Tim Nolet
Tim Nolet
Founder, Engineer & Dishwasher at Checkly · | 16 upvotes · 42.6K views
Amazon S3
AWS Lambda

Heroku Docker GitHub Node.js hapi Vue.js AWS Lambda Amazon S3 PostgreSQL Knex.js Checkly is a fairly young company and we're still working hard to find the correct mix of product features, price and audience.

We are focussed on tech B2B, but I always wanted to serve solo developers too. So I decided to make a $7 plan.

Why $7? Simply put, it seems to be a sweet spot for tech companies: Heroku, Docker, Github, Appoptics (Librato) all offer $7 plans. They must have done a ton of research into this, so why not piggy back that and try it out.

Enough biz talk, onto tech. The challenges were:

  • Slice of a portion of the functionality so a $7 plan is still profitable. We call this the "plan limits"
  • Update API and back end services to handle and enforce plan limits.
  • Update the UI to kindly state plan limits are in effect on some part of the UI.
  • Update the pricing page to reflect all changes.
  • Keep the actual processing backend, storage and API's as untouched as possible.

In essence, we went from strictly volume based pricing to value based pricing. Here come the technical steps & decisions we made to get there.

  1. We updated our PostgreSQL schema so plans now have an array of "features". These are string constants that represent feature toggles.
  2. The Vue.js frontend reads these from the vuex store on login.
  3. Based on these values, the UI has simple v-if statements to either just show the feature or show a friendly "please upgrade" button.
  4. The hapi API has a hook on each relevant API endpoint that checks whether a user's plan has the feature enabled, or not.

Side note: We offer 10 SMS messages per month on the developer plan. However, we were not actually counting how many people were sending. We had to update our alerting daemon (that runs on Heroku and triggers SMS messages via AWS SNS) to actually bump a counter.

What we build is basically feature-toggling based on plan features. It is very extensible for future additions. Our scheduling and storage backend that actually runs users' monitoring requests (AWS Lambda) and stores the results (S3 and Postgres) has no knowledge of all of this and remained unchanged.

Hope this helps anyone building out their SaaS and is in a similar situation.

See more
Tim Nolet
Tim Nolet
Founder, Engineer & Dishwasher at Checkly · | 7 upvotes · 11.3K views
Swagger UI

JavaScript Node.js hapi Vue.js Swagger UI Slate

Two weeks ago we released the public API for Checkly. We already had an API that was serving our frontend Vue.js app. We decided to create an new set of API endpoints and not reuse the already existing one. The blog post linked below details what parts we needed to refactor, what parts we added and how we handled generating API documentation. More specifically, the post dives into:

  • Refactoring the existing Hapi.js based API
  • API key based authentication
  • Refactoring models with Objection.js
  • Validating plan limits
  • Generating Swagger & Slate based documentation
See more
Tim Nolet
Tim Nolet
Founder, Engineer & Dishwasher at Checkly · | 5 upvotes · 5.1K views

Node.js Vue.js JavaScript hapi PostgreSQL A pretty basic question for any SaaS is how you deal with what a user can do on their account in a SaaS app? Can Jane on the "Starter" plan create another widget when she is near the limit of her plan? What if she's a trial user?

When building Checkly, I found it pretty hard to find good, solid examples on how to implement this. Specifically for my stack of Vue.js and Node.js / hapi

Turns out this is a mix of things:

  • Feature toggling
  • Counting stuff™
  • Custom API middleware very specific to your situation

Read my post on how we did this and where the bottlenecks are. The HackerNews thread on this has some great contributions too.

See more
Thibault Maekelbergh
Thibault Maekelbergh

Serves static content. Was added to make it more easy to transition to serverside view templating and API. hapi

See more

hapi Alternatives & Comparisons

What are some alternatives to hapi?
Express is a minimal and flexible node.js web application framework, providing a robust set of features for building single and multi-page, and hybrid web applications.
Flask is intended for getting started very quickly and was developed with best intentions in mind.
Django REST framework
Django REST framework is a powerful and flexible toolkit that makes it easy to build Web APIs.
Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort.
Koa aims to be a smaller, more expressive, and more robust foundation for web applications and APIs. Through leveraging generators Koa allows you to ditch callbacks and greatly increase error-handling. Koa does not bundle any middleware.
See all alternatives

hapi's Stats