Become a sponsor to Joel Alejandro Villarreal Bertoldi
While I'm working on several different projects, my main goal on GitHub Sponsors is to help Kurier grow. But, what is Kurier?
Kurier is a TypeScript framework to create APIs following the 1.1 Spec of JSONAPI + the Operations proposal spec, supporting the following features:
- Operation-driven API: JSONAPI is transport-layer independent, so it can be used for HTTP, WebSockets or any transport protocol of your choice.
- Declarative style for resource definition: Every queryable object in JSONAPI is a resource, a representation of data that may come from any source, be it a database, an external API, etc. Kurier defines these resources in a declarative style.
- CRUD database operations: Baked into Kurier, there is an operation processor which takes care of basic CRUD actions by using Knex. This allows the framework to support any database engine compatible with Knex. Also includes support for filtering fields by using common SQL operators, sorting and pagination.
- Transport layer integrations: The framework supports JSONAPI operations via WebSockets, and it includes middlewares for Koa, Express and Vercel to automatically add HTTP endpoints for each declared resource and processor.
- Relationships and sideloading: Resources can be related with
belongsTo
/hasMany
helpers on their declarations. Kurier provides proper, compliant serialization to connect resources and even serve them all together on a single response. - Error handling: The framework includes some basic error responses to handle cases equivalent to HTTP status codes 401 (Unauthorized), 403 (Forbidden), 404 (Not Found) and 500 (Internal Server Error).
- User/Role presence authorization: By building on top of the decorators syntax, Kurier allows you to inject user detection on specific operations or whole processors. The framework uses JSON Web Tokens as a way of verifying if a user is valid for a given operation.
- Extensibility: Both resources and processors are open classes that you can extend to suit your use case. For example, do you need to serialize an existing, external API into JSONAPI format? Create a
MyExternalApiProcessor
extending fromOperationProcessor
and implement the necessary calls et voilà!.
Why sponsor this project?
All of the time and effort spent on this project is volunteered. I believe JSON:API is truly a robust standard for API development. The next iterations will attempt to tackle some of the biggest features we want to include in the framework, such as:
- Integration with OpenAPI standards (self-documenting API)
- A CLI to ease in the API development process
- Data integrations beyond Knex's capabilities
- Growth of our addon ecosystem
Your support would be a huge help for me!
Featured work
-
kurierjs/kurier
TypeScript framework to create JSON:API compliant APIs
TypeScript 61 -
kurierjs/kurier-starter-pack-javascript
A project template for starting a JavaScript project with Kurier, plus some linting and testing.
JavaScript 2 -
kurierjs/kurier-starter-pack-typescript
A project template for starting a TypeScript project with Kurier, plus some linting and testing.
TypeScript 3 -
kurierjs/kurier-addon-transport-layer-context
An addon to inject the client's IP address and request headers in your transport layer.
TypeScript -
kurierjs/kurier-addon-starter
Starter repo for creating addons.
TypeScript
0% towards $1,000 per month goal
Be the first to sponsor this goal!