Skip to content
Emin Akif Erzurumlu
All work

Web Kütüphane

Book lending and membership management, with authentication written by hand rather than pulled from a package.

Role
Full-stack
Scope
Solo
Year
2025
The problem

A library’s needs look simple: books, members, loan records. The difficulty is preventing the same book from being lent twice and ensuring each user sees only their own records.

Approach
  • REST endpoints on Node.js and Express, with EJS for server-side templates.
  • Data in MongoDB, schemas and relations defined through Mongoose.
  • I built authentication myself with bcrypt and express-session rather than an off-the-shelf identity package: password hashing, session storage and cookie settings all under my control.
My part in this

A solo project; everything from data model to interface is mine.

Outcome

Membership, catalogue, lending and return flows plus session-based authorisation all work.

What I learned

Writing authentication by hand surfaces the decisions a ready-made solution quietly makes for you: what the password hashing cost should be, where sessions live, what HttpOnly and SameSite actually do. In production I would use a library — but now I would use it knowing what it does.

Built with

Node.js · Express · EJS · MongoDB · Mongoose · bcrypt