Skip to main content

Project

Create a simple RESTful library application where users can borrow books. Create CRUD actions on resources, like users, books, or authors entities, and retrieve them as JSON responses.

You don't need to stick with the library application. If you have an idea for another simple application, go with it. Like notes, todos, event schedules in a calendar, or weather application.

The focus is on the backend, frontend part can be omitted. RESTful API can be checked using Postman. Protect API with simple jwt authentication. Keep things simple.

Follow agile approach, divide application into tasks and define them in the Node board. Every task should be developed in its feature branch using git-flow.

Example of task list:

  • Initial application setup (installing tools and configure it)
  • Request Validation
  • Users CRUD
  • Authors CRUD
  • Books CRUD
  • API pagination and filtering
  • Authentification
  • Authorization
  • API endpoints documentation (Swagger)
  • Unit/e2e tests
  • Logger
  • Error Handling

During the development of each task, as you progress, make a commit after implementing a reasonably sized task chunk and push it to your repository. This way, somebody can take a look and monitor your progress.

After completing the task, make a Pull Request to the main branch and assign it to your tutor.

Task steps:

  • Set up Express.js boilerplate with Typescript.
  • Create a relational model in the database. Use MySQL or PostgreSQL.
  • Setup and use TypeORM or Sequelize object–relational mapping.
  • Model RESTful API methods according to best practices.
  • Protect your API with basic JWT authentication/authorization.
  • Validate API requests. Check if requests contain required fields.
  • Implement API pagination and filtering.
  • Write API tests with jest and supertest.
  • Configure Docker containers for database, adminer, and node.js (optional)
    • Deploy application in docker container
  • Check your API with Postman or Swagger.
  • Put everything on Bitbucket (Emphasis on git-flow and pull requests).
  • In README.md, write basic instructions on how to start your application.