DEV Community

Xavier Mignot
Xavier Mignot

Posted on

The Book Lender API - Powered by Low-Code, deployed by code

Overview of My Submission

This project has kept me busy over the last few days, and is probably going to keep me busy for the next few weeks πŸ˜…

The global idea is to help a small group of people to lend books to each other and to track who each book is lent to.
The inspiration behind this comes from my wife who is running an association with four of her friends.

This association aims to help parents in our locality whose children have neurodevelopmental disorders, by creating social link, organizing events to gather the families, help them to get in touch with the right people.

If you understand French and want to know more about the association you can check their FB page here.

So globally the association is ran by 5 persons, and has a few dozen of members. The people running the association have several books that they lend to the other members, and it's getting difficult to track where the books are.

They could have used a spreadsheet for this but my wife asked me if I could build something better 😊

Technically the app is composed of a frontend powered by VueJs 3 and Bootstrap 5, an API built with Azure Logic Apps exposed through Azure API Management and the data is stored in Cosmos Db. As I still have a ton of work to do on the frontend I have decided to scope my submission to the backend side of the project.
I have probably over-estimated my frontend skills for this project, which are closed to zero as I'm a backend developer who is currently working in an infrastructure team. But I have stepped out of my comfort zone and learned a lot over the last few days, and will continue to do so.

Submission Category:

Low-Code Legends

As I've written on the project's readme, I have hesitated a bit before choosing a category, I hope my submission is compliant with this one 🀞

Link to Code on GitHub

GitHub logo xaviermignot / book-lender-app

A Web App to help small groups of people to lend books to each other

Book Lender App

This repository will contain the code of an application designed to help small groups of people to lend books to each other.
The project is in its very early stage of development/design, this file will be updated throughout the process.

The story of this project

There is a story behind each application, this one came from my wife who is running an association with a couple of her friends The purpose of this association is to help parents in our locality whose children have (or might have) neurodevelopmental disorders, by creating social link between the families, helping parents to get in touch with the right professionals, organizing events and many other things.
If you want to know more about the association you can check their Facebook page, just beware it's in French πŸ₯.

The association is run by five people (let's call them 'the board…

Additional Resources / Info

The app's design is centered around the following principles:

  • Optimized for use on a smartphone, with a few use cases: lend a book, list the books, and return a book
  • Use the camera to scan the ISBN bar codes already present on the books (trying to avoid the use of the keyboard at most)
  • From a ISBN code, the information of a book can be retrieved using an external source like Google Books API

This diagram shows the whole architecture of the project:
Architecture diagram

Introducing... Low-Code as Code

As I have mentioned in previous posts I try to deploy the Azure resources of my projects using IaC, mostly Terraform, and for this one the Logic Apps was more challenging than usual.
I have described in the project's readme on how I have overcome theses challenges.

The Logic Apps themselves are not very complicated, here is a screenshot of the designer showing a snippet of the "Get book by ISBN" workflow when the data is either retrieved from Google Books API or from Cosmos Db:

Logic Apps designer

Exposing the Logic Apps using API Management

Importing the Logic Apps in API Management turns a bunch of isolated Logic Apps into a single API definition:
APIM

So that the Logic Apps can be called as an API using tools like Postman or Rest-Client in VS Code:
Rest Client

Using API Management in the consumption tier brings the following features:

  • Protect the API using policies, from CORS to rate limits
  • Manage API keys for apps and other consumers of the API
  • Adding a custom domain with a managed certificate (currently in preview)

A quick view of the frontend

Last but not the least I have uploaded this quick video to share my progress on the frontend side (be gentle):

The scanning UI is brought by this awesome lib. Once the scan is complete, the API is called and the result is quickly displayed in the view.
Of course this will be improved in the upcoming weeks, this project will live beyond the Azure Trial Hackathon, as it's a real world project and people are waiting for me to finish this πŸ€—

Thanks for reading !

Discussion (2)

Collapse
harshhhdev profile image
Harsh Singh

Interesting workflow you have going there, creative way to integrate azure into your project. Best of luck!

Collapse
xaviermignot profile image
Xavier Mignot Author

Thank you sir 😊
I've seen your submission too it looks amazing, best of luck to you too !