campkit

by getcampsite

getcampsite / campkit

Build serverless Node.js microservices fast

126 Stars 6 Forks Last release: Not found MIT License 89 Commits 39 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

⛺ Campkit

Build serverless Node.js microservices fast.


serverless node awesome

Intro

This project is under heavy development.

Campkit is an opinionated Node.js framework for building serverless microservices. It makes a bunch of decisions so that you don't have to. Currently it works best with aws lambda and the serverless framework.

Quick start

npx @campkit/cli create someServiceName

Features

  • small & simple
  • define your service as a class annotating it to provide configuration
  • path and query parameters are automatically injected into the class method
  • service discovery built in (coming soon)

Works with provider

  • [x] Amazon Web Service - Lambda

At a glance

import { RestController, Get, Post } from "@campkit/rest";

@RestController({ basePath: "/user" }) export class UserController {

@Get({ path: "/:id" // -> GET user/1234 }) getUserById({ params }) { return { id: params.id }; }

@Post({ path: "/" // -> POST user/ }) createUser({ body }){ return { user: body }; }

Basic microservice

// index.js

import { CampkitFactory } from "@campkit/core"; import { UserApp } from "./user.app";

export const handler = async (event, context) => { return await CampkitFactory.create(UserApp, { event, context }); };

// user.app.js

import { App } from "@campkit/core"; import { UserController } from "./user.controller";

@App({ name: "user", restController: UserController }) export class UserApp {

}

// user.controller.js

import { RestController, Get, Post } from "@campkit/rest";

@RestController({ basePath: "/user" }) export class UserController {

@Get({ path: "/:id" // -> GET user/1234 }) getUser({ params }) { return { message: "get user by id", id: params.id }; }

@Post({ path: "/" // -> POST user/ }) createUser({ body }){ return { message: "create a user", userInfo: body }; }

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.