kurierjs / kurier

TypeScript framework to create JSON:API compliant APIs
https://kurier.readthedocs.io/en/latest/
MIT License
61 stars 9 forks source link
hacktoberfest jsonapi knex koa kurier typescript-framework

Kurier

A TypeScript framework to create APIs following the 1.1 Spec of JSONAPI + the Operations proposal spec.

Features

Getting started

One-click way

Click right here to get started with TypeScript, a dockerized database, basic user management support, HTTP logs and more.

The second quickest possible way

Create your project using the GitHub CLI and with one of our starter packs:

# Create a TypeScript + Kurier API.
npx gh repo create my-api-with-kurier -p kurierjs/kurier-starter-pack-typescript

# Create a JavaScript + Kurier API.
npx gh repo create my-api-with-kurier -p kurierjs/kurier-starter-pack-javascript

The DIY way

Note: This example assumes a TypeScript environment with several dependencies preinstalled.

  1. Install the package with npm or yarn:

    $ npm i kurier # or yarn add kurier
  2. Create a Resource:

    import { Resource } from "kurier";
    
    export default class Author extends Resource {
     static schema = {
       attributes: {
         firstName: String,
         lastName: String,
       },
     };
    }
  3. Create an Application and inject it into your server. For example, let's say you've installed Koa in your Node application and want to expose JSONAPI via HTTP:

    import { Application, jsonApiKoa, KnexProcessor } from "kurier";
    import Koa from "koa";
    import Author from "./author";
    
    const app = new Application({
     namespace: "api",
     types: [Author],
     defaultProcessor: new KnexProcessor(/* your knex DB connection settings */),
    });
    
    const api = new Koa();
    
    api.use(jsonApiKoa(app));
    
    api.listen(3000);
  4. Run the Node app, open a browser and navigate to http://localhost:3000/api/authors. You should get an empty response like this:

    {
     "data": [],
     "included": []
    }
  5. Add some data to the "authors" table and go back to the previous URL. You'll start seeing your data!

    {
     "data": [
       {
         "id": 1,
         "type": "author",
         "attributes": {
           "firstName": "John",
           "lastName": "Katzenbach"
         }
       }
     ],
     "included": []
    }

Addons

Extend Kurier's features with these addons:

Build your own addon!

We've created a template repository for developers who want to build their own addons. Check it out here!

Starter packs

Jump-start your project with these preconfigured, opinionated starter packs. They all include a dockerized database, HTTP logs, linting and basic user management.

Documentation

Check out our updated docs at ReadTheDocs. There you will find more info and examples.

Contributing

We have a little contributors guide now! Take a look at it in here.

License

MIT