/wintermute-old

Restful API written in NodeJS and express for projects that need dummy data

Primary LanguageJavaScript

Wintermute

=======

The Why

I love cyberpunk. I love API design (really, I do) and I wanted to practice my NodeJS skills. So what better way to bring these three things together than using expressJS to build an API of famous cyberpunk novels, characters and authors ?

The goal was to develop a clean API available to developers to test their applications with. I am fully aware that there are a million of them out there already, but let's be honest, no one cares about Lorem Ipsum.

The What

Here's a quick list of wintermute's features:

  • Support for GET, POST, PUT, PATCH and DELETE requests
  • Built with the best practices of REST in mind
  • Simple, clean and easy to understand API
  • Support for HasMany relationships
  • Uses PostgreSQL for the database
  • No need to register (for now)
  • Support for nested resources
  • Compatible with the most popular JS frameworks
  • Secured with SSL
  • Graceful error handling

The How

You can check out some examples of how to use the API 0.

The things to know about contributing

I will be more than happy to accept contributions to this project, especially if you can teach me a trick of two about API design and security.

So feel free to initiate a PR and I will look into it 😄 (The only thing that I require is that you give an explanation as to how your solution is better/improves security etc)

The things that remain to be done

  • Write a detailed documentation
  • Implement rate limiting
  • Implement pagination
  • Implement caching
  • Add support for OPTIONS requests
  • Create better (cleaner) tests
  • Extract (when possible) controller logic to their own functions (to help with unit testing)

The things I learned

  • Express JS
  • The Sequelize ORM
  • How to create roles and manage a postgres installation
  • How to dynamically set environment variables using the infamous package.json file
  • How to merge and clone objects using Object.assign
  • ES6 Destructuring of objects
  • Compare equality of arrays