← All work
E-commerce, 2021 – 2022

Anubooks — buy and rent books online

Online bookstore where students buy or rent school sets by school and level, academic titles and stationery, from local sellers, with book requests and chat.

Role
Main author of the storefront and admin panel; built the support chatbot
Context
Ottr Technology client
Scale
~90% of storefront commits, ~95% of admin panel commits, 147 commits on the 2021 codebase

Background

Every school year, parents in Kathmandu buy the same set of books from the same few shops, and most of those books are used for a year and then sit on a shelf. Anubooks set out to sell and rent books online: pick a school and a class and get the whole set, or rent it and return it.

I built the customer storefront and the admin panel on a team of six, and the support chatbot on my own.

The problem

Renting is harder than selling. A rental needs a school, a level and a category to find the right set, a seller who has it, and a return. Parents also ask for books that are not listed yet, and they want to ask questions before paying.

Approach

  1. Storefront organised the way parents shop: Academics by school set, level and category, plus Stationery, with separate buy and rent flows sharing the same catalogue.
  2. Store selection on a Mapbox map so a customer picks the seller nearest them before checkout.
  3. Book request flow: if a title is missing, the customer submits book details and contact details and the team sources it.
  4. In-app messaging with a live-chat UI, and an intent-classification chatbot trained on the FAQ to answer common questions over Socket.IO.
  5. Admin panel for categories, sales, users, FAQ and feedback on UmiJS and dva.
  6. Backend (a colleague's) on Express and MongoDB with Casbin role-based access; I integrated against it.

Architecture

clientReact on UmiJS: book detail, school sets, cart, checkout, rent, request, messages.
admin-panelDashboard, categories, sales, users, FAQ, feedback.
chat-botKeras intent model with a Socket.IO endpoint and web widget.
backendExpress, MongoDB, Casbin RBAC, passport-jwt. Colleague-built.

Outcome

  • Shipped storefront, admin and chatbot to production in 2021; maintained into 2022.

Lessons

  • Rental is an inventory problem wearing a checkout costume. Modelling who holds which copy mattered more than the cart.

Stack

ReactUmiJSdvaMapboxLiveChat UIExpressMongoDBCasbinKerasSocket.IO