A LUA fast, low-latency, low-memory footprint, web JSON-API framework with Test Driven Development helpers and patterns.
Lua Shell
Latest commit cb35e87 Sep 14, 2015 @ostinelli Merge pull request #28 from istr/table-id
Allow models to define a different primary key field (issue #15).

README.md

Build Status

GIN JSON-API framework

Gin is an JSON-API framework, currently in its early stage.

It has been designed to allow for fast development, TDD and ease of maintenance.

Gin is helpful when you need an extra-boost in performance and scalability, as it runs embedded in a packaged version of nginx called OpenResty and it's entirely written in Lua. For those not familiar with Lua, don't let that scare you away: Lua is really easy to use, very fast and simple to get started with.

For instance, this is what a simple Gin controller looks like:

local InfoController = {}

function InfoController:whoami()
    return 200, { name = 'gin' }
end

return InfoController

When called, this returns an HTTP 200 response with body:

{
	"name": "gin"
}

Features

Gin already provides:

Get started now! Please refer to the official gin.io website for documentation.

Contributing

So you want to contribute? That's great! Please follow the guidelines below. It will make it easier to get merged in.

Before implementing a new feature, please submit a ticket to discuss what you intend to do. Your feature might already be in the works, or an alternative implementation might have already been discussed.

Every pull request should have its own topic branch. In this way, every additional adjustments to the original pull request might be done easily, and squashed with git rebase -i. The updated branch will be visible in the same pull request, so there will be no need to open new pull requests when there are changes to be applied.

Do not commit to master in your fork. Provide a clean branch without merge commits.

Ensure to include proper testing. To test gin you simply have to be in the project's root directory and issue:

$ busted

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● ○
195 successes / 0 failures / 0 pending : 0.156489 seconds.

There will be no merges without a clean build.