skip to contenthome
Contact

Book Searcher

Optimized app for searching/organizing books 📘

Book Searcher

Every time I wanted to find a book in my house I have to spend a lot of time to do this. So I decide to digitalize it! Database, forms, some code and it’s live.

Now the administration panel is, what may surprise you, available for everyone, so you too can add your own book, but in a few moments I will block this access so only my closest ones can access it. I want to show all functionalities to as many people as I can before I do this.

I have created role based system - you have to be one of admins 👷 to be able to add or move a book. The whole process is simple, if you register and login for the first time you will don't have access to all functionalities. To gain permission you should send a request to one of super admins 🦸, what you can do directly from your dashboard. After your request has been approved, you should see that all options are available. Enjoy Book Searcher in all its glory!

If you're not an admin you cannot move or add a book
If you're not an admin you cannot move or add a book

Tech stack

As you can see below I built two versions of Book Searcher. First, I tried to use MongoDB, Vuex and more... not quite the right technologies 😁 This project is still on my Github, so you can see the code. When my app was growing up it turned out that I need relations, more control of my state, better validation, so I figured I'd use a different stack.

Basically, the whole app have been written in TypeScript (too obvious?). At the back I used Express.js and PostgreSQL with Prisma for database. On the front end I bet on Vue and I think it paid off 💰

Two versions stack
Two versions stack

Problems

I spent most of my time preparing the view and the logic involved in adding the book. A lot of validation, error messages, relations had to be done at this stage. But I can’t leave out that I learnt a lot doing this.

If I had to name one more thing it would be authorization. Handling user permissions, sending suitable status codes, it sounds so simple, but trust me, in more advanced cases it can be very irritating 🤐

Admin dashboard - add book
Admin dashboard - add book

Lessons learned

It's impossible to count Vue libraries that I got to know while working with this project. Not all working as I expected, but I didn’t give up 😉

It’s worth noting that this was my first application of this size built with Vue 3. I have often looked at the documentation, but it has allowed me to delve more deeply into the subject.

Main books view
Main books view
Bartosz Zagrodzki
Written by Bartosz Zagrodzki

Blogger, software engineer and the main coordinator of this blog, he has lots of ideas and won't hesitate to use them! He lives in Poland.