hyper logo

hyper 

 Beta  

hyper - a Service Framework for building hyperscale applications

Create. Connect. Build.

Create your services. Connect using a consistent, clean API. Build and focus on your application's features, not its cloud plumbing.

homepage splash
THE PROBLEM

Cloud services are complex.

Choosing the correct cloud service and provider while ensuring scalability, security, and minimizing downtime is a huge challenge that distracts from your overall goal: building features that solves your customer's problems.

flow
OUR SOLUTION

hyper. A service framework.

Hyper delivers straightforward and secure access to reliable and scalable services using clear and easy-to-use APIs. Create features quickly into apps that scale while keeping cloud complexity and frustrations at bay.

hyper provides APIs to core application services: data, cache, storage, queues, and search.

hyper box

Data Service

Store, retrieve, and index structured data

MORE INFO >
import { connect } from "hyper-connect";
import { cuid } from "cuid";
const hyper = connect(process.env.HYPER);

export async function addMovies(movies) {
  movies = movies.map((movie) => ({
    _id: `movie-${cuid()}`,
    ...movie,
    type: "movie",
  }));
  await hyper.data.bulk(movies);
  return movies;
}

export async function addMovie(movie) {
  movie = { _id: `movie-${cuid()}`, ...movie, type: "movie" };
  await hyper.data.add(movie);
  return movie;
}

export async function findMovies(rating) {
  const { docs: movies } = await hyper.data.query(
    {
      rating: {
        $gte: rating,
      },
    },
    { useIndex: "custom-idx" }
  );
  return movies;
}

Compose Hyper Services Seamlessly 🧪

Compose your Hyper services to create complex flows

import { connect } from "hyper-connect";
import { cuid } from "cuid";
const hyper = connect(process.env.HYPER);

export async function addMovie(movie) {
  movie = { _id: `movie-${cuid()}`, ...movie, type: "movie" };
  await hyper.data.add(movie);
  await hyper.cache.add(movie._id, movie, "1h");
  await hyper.search.add(movie._id, movie);
  await hyper.queue.enqueue({ type: "MOVIE_ADDED", movieId: movie._id });
  return movie;
}

export async function getMovie(movieId) {
  let movie = await hyper.cache.get(movieId);
  if (movie.status === 404) {
    movie = await hyper.data.get(movieId);
    await hyper.cache.add(movie._id, movie, "1h");
  }
  return movie;
}

export async function searchMovies(criteria) {
  const { matches: movies } = await hyper.search.query(criteria);
  await Promise.all(
    movies.map((movie) => hyper.queue.enqueue({ type: "MOVIE_SEARCH_MATCH", movieId: movie._id }))
  );
  return movies;
}

export async function findPopularMovies() {
  const { movies: trending } = await hyper.cache.get("trending-movies");
  return trending;
}

// Your Queue Target Worker
export async function handleMovieJobs(payload) {
  const movie = await hyper.data.get(payload.movieId);
  switch (payload.type) {
    case "MOVIE_ADDED":
      await notifyGenreSubscribers(movie.genre, movie);
      await updateMovieStats(movie);
      break;
    case "MOVIE_SEARCH_MATCH":
      let { count = 0 } = await hyper.cache.get(`search-hits-${movie._id}`);
      await hyper.cache.set(`search-hits-${movie._id}`, { count: count++, _id: movie._id }, "1h");
      if (count > 10) {
        await updateTrendingMovies(movie);
      }
      break;
  }
}

Where does hyper fit?

hyper services power your backend business services. Hyper's consistent API makes it simple to consume cloud native services, and without coupling. Focus on your business services, not plubming in the cloud.

HYPER POWER

All-in-one

hyper contains all of the services primitives to build applications without having to deal with servers, services or clouds.

hyper framework

Learn About hyper

Visit the docs to learn more about building with hyper

Learn how to host The hyper Service Framework using any infrastructure

Learn how hyper Service apis work

The hyper Service Framework in a bottle, great for sandboxed loval development

Seamlessly connect to hyper services on Node or Deno

Keep up with all of the news and info from the hyper team

TESTIMONIALS

Why use hyper?

hyper enables us to spend time on what matters. By providing a well-defined interface for things like data persistence, caching, and search, hyper allows us to avoid bike-shedding and reinventing logic that is common across the majority of our applications. Instead, we can spend our time working on the details that make each project unique and keep our focus on providing value to the customer.

Travis Nesland, Senior Lead Developer at Sovereign, co.