Kadir Terzi
Back to projects

Full-stack web application

RentIt

A full-stack, live platform where people rent items to each other.

React / Next.jsNode.js / ExpressPythonPostgreSQL

Project interface

RentIt home page: search bar, rental headline and category cards

Overview

RentIt is a platform where people can rent out items they do not use to others nearby. The whole rental runs inside the app: listing an item, request and approval, payment from a wallet, handover with a code, return and rating.

I built it as my graduation project between October 2025 and May 2026. It covers every layer, from the interface and the database to the recommendation service and deployment.

What I built

Rental lifecycle

Every rental moves through a 12-step flow: request, approval, payment, handover, in rental, return and completion, with disputes and cancellations built in. If two people try the same action at once, a database lock lets only one of them through.

Wallet and payments

The balance is not a single number but the sum of transaction records, and refunds are new records rather than deletions. Even if a Stripe payment is delivered twice, it is credited to the wallet only once.

Secure handover and return

A one-time code, photo/video proof from both sides and a review window protect each handover; when the window ends the system moves the flow on by itself, and an admin resolves disputes.

Location-based search

With PostGIS, listings are filtered and sorted by distance, combined with category and price filters.

Personalised recommendations

A separate Python service combines content similarity, distance, similar users' behaviour and items rented together to produce recommendations; results are stored in the database so the API reads them fast. New users see popular nearby listings.

Real-time messaging

Renter and owner chat in real time with Socket.io, with a typing indicator and unread counter.

Security and tests

JWT and Google sign-in, rate limiting, input validation and ownership checks on every endpoint. I wrote more than 100 automated tests with Jest and Supertest.

Technologies

Frontend
  • Next.js 15pages, routing and server-side rendering
  • React 19interface components
  • Tailwind CSS 4styling
  • Zustandclient state
  • Leafletmaps
Backend
  • Node.jsruntime
  • ExpressREST API
  • JWTsession and authentication
  • bcryptpassword hashing
  • Passport (Google OAuth)sign in with Google
  • Socket.ioreal-time messaging
  • Helmetsecurity headers
  • Rate limitingrequest limiting
  • express-validatorinput validation
  • Winstonlogging
Database
  • PostgreSQL 15relational data, parametrised SQL without an ORM
  • PostGISgeospatial queries
Machine learning
  • Pythonrecommendation service
  • pandasdata processing
  • scikit-learnrecommendation model
  • SciPynumerical computing
Services
  • Stripe Checkoutpayments
  • Brevoemail
  • Twilio Verifyphone verification
  • Cloudflare R2image storage
Infrastructure and testing
  • RenderAPI
  • Vercelfrontend
  • Supabasedatabase
  • Jestautomated tests
  • SupertestAPI tests

Status

The live demo is public. Payments run in Stripe test mode and phone verification in demo mode; listings and users are sample data.

Live demoSource codeAsk me about this project