Skip to content

Fast, unopinionated, minimalist API framework written in jQuery. The world needs this.

Notifications You must be signed in to change notification settings

koffiebaard/jquery-back-end

Repository files navigation

Fast, unopinionated, minimalist API framework written in jQuery.

jQuery together with JSDom powers the database and routing system, which are html files respectively. The web side is handled by fastcgi and nginx.

Features

  • Efficient routing (jQuery)
  • Out of the box database support (jQuery)
  • Easily built controllers and models
  • Very (very) unopinionated
  • Only two dependencies; jQuery and JSDom

Quick Start

All you need is Nodejs and running npm install. The routing and the database are both powered by jQuery, so there are no other dependencies. You can also run it via Docker (as explained below).

Routing

The routing file looks like this:

<html>
<head></head>
<body>
  <a href="/books" method="GET">get_books</a>
  <a href="/users" method="GET">get_users</a>
  <a href="/" method="GET">home</a>
</body>
</html>

The correct route is selected like this:

$("a").each(function(value, test) {

  if ( $(this).attr("method") == request_method && $(this).attr("href") == request_endpoint ) {
    route = $(this).text();
  }
});

Very effective. Very efficient. Very jQuery.

Database

Out-of-the-box database support through jQuery. A database file looks like this:

<html>
<head></head>
<body>
  <ul>
    <li author="Terry Pratchett" number_of_pages=394>Going Postal</li>
    <li author="Neil Gaiman" number_of_pages=465>American Gods</li>
  </ul>
</body>
</html>

You can query like this:

$( 'ul li' ).each(function(value, test) {

    if (!search || $(this).text().toLowerCase().includes(search.toLowerCase())) {

      let book = {
        "name": $(this).text(),
        "number_of_pages": $(this).attr("number_of_pages")
      }
      
      books.push(book);
    }
});

You can add records:

$('<li/>', {
    "text": book.name,
    "author": book.author,
    "number_of_pages": book.number_of_pages
}).appendTo('ul');

fs.writeFileSync(db_file, window.document.documentElement.outerHTML, { mode: 0o755 });

Deletions are super easy too:

let removed = $(`ul li[id=${id}]`).remove();

fs.writeFileSync(db_file, window.document.documentElement.outerHTML, { mode: 0o755 });

Docker

You can easily run it with Docker:

$ git clone https://github.com/koffiebaard/jquery-back-end/
$ docker build -t jquery-back-end .
$ docker run --name=jquery-back-end-container -d -p 6969:6969 jquery-back-end

You can now view the API at: http://localhost:6969.

Contributing

Feel free to contribute! Ping me or send a pull request and let's go.

License

jQuery back-end is under the MIT license, but without me shipping the copyright text with the project. That's too much effort.

About

Fast, unopinionated, minimalist API framework written in jQuery. The world needs this.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published