Limgro

SeRental

Camera hire with live availability and one discount grid

Industry
Camera and lighting rental
Year
2026
What we did
Storefront design and development
Site languages
UK
serental.com.ua
SeRental
Items in the catalog
153
Equipment categories
13
Business types the platform serves
7

Overview

SeRental rents out cameras, lenses, lighting, sound and stabilizers in Ivano-Frankivsk, from one day. The storefront is a Next.js site with no database of its own: every item, price, category and checkout option comes from the CMS over its API.

One discount grid
  • 1–3 days×1.0
  • 4–7 days×0.9
  • 8–14 days×0.8
  • 15+ days×0.7

Applies to the whole shop, a category or a single item.

From basket to reservation
  1. 01Pick datesbusy days greyed out
  2. 02Checkagainst real bookings
  3. 03Reservationphone and Instagram
  4. 04Manager confirms

01 — Challenge

Hire is not retail. The same lens is free next week and gone tomorrow, the daily rate drops the longer you keep it, and two people can try to book one unit at the same moment. The shop also wanted one discount ladder for 153 items, and a manager who knows who is renting before anything leaves the shelf.

02 — What we built

The basket books the whole kit for one period and checks it against real reservations as soon as dates are picked, greying out days an item is already taken. Discounts are one grid of multipliers — ×1.0, ×0.9, ×0.8, ×0.7 by length of hire — addressed to the whole shop, a category or a single item. In the database, overlapping bookings of one unit and overlapping price bands are both refused by Postgres exclusion constraints rather than by code that can race.

03 — Result

A storefront the owner runs from the admin: items, prices, the discount grid, delivery and payment options change on the site without a deploy, because the admin purges the site’s cache when content changes. Every request arrives as one pending reservation with the renter’s phone and Instagram, ready for the manager to confirm.

Lenses — 32 items, filtered by mount, sensor format and aperture.
01

Catalog and filters

Filters come from the characteristics the operator records in the admin — mount, sensor format, lens type, focal length, aperture, stabilization — alongside brand, price and availability. Brand and spec options show how many items they hold, so it is clear what a click will leave.

  • Brand, price band and “free now” beside the item specs
  • Range sliders for focal length and aperture
  • On a phone, filters and sorting sit in a dock at the bottom
Sony Alpha a7S III — gallery, daily rate and a straight path to the basket.
02

Item page

The page answers three questions: what it is, what a day costs, and what goes out with it. Booking is deliberately not here — the item goes to the basket, where dates, handover and payment are chosen once for the whole kit.

  • Daily rate plus the four-band ladder, in hryvnias
  • Specs from the admin, not from a description
  • “Goes out with it”: lenses, batteries and cards for this body
Rates — the ladder that prices all 153 items.
03

Discount grid

One grid of multipliers prices every item: ×1.0 for 1–3 days, ×0.9 for 4–7, ×0.8 for 8–14 and ×0.7 from 15. It is written once and applied to whatever base rate an item has, from 50 UAH grip gear to full-frame cameras.

  • Addressed to the whole shop, a category or a single item
  • Overlapping bands are refused by the database
  • The basket states the discount in money, not just a percentage
Basket — three items for five days, with a 2,000 UAH discount shown up front.
04

Basket and booking

One period covers the whole kit. Availability is checked against real reservations once dates are chosen, the discount is spelled out in money, and the request becomes a single pending reservation the manager confirms or cancels as a unit.

  • The calendar greys out days an item is already booked
  • Quantity stops at the number of units the shop owns
  • Phone and Instagram required, so the manager knows the renter
SeRental
On a phone, filters and sorting live in a dock at the bottom, within thumb reach.

Key decisions

  • Overlapping bookings of the same unit are refused by a Postgres exclusion constraint over time ranges; pooled stock is counted under a row lock.
  • Price bands in a discount grid cannot overlap either — the same constraint technique, so a price never depends on row order.
  • When dates clash, the site reports which items were wanted and already taken, feeding the owner’s “worth buying a second one” view.
  • Card prepayment is wired end to end — hand-off to the acquirer, status check on return, refund when a paid booking is cancelled — and switches on from the admin.
Next projectPorter BudConstruction plant hire, built around the spec sheetPorter Bud
Have a project in mind?

Let’s build somethingpeople rely on.

Start a projectsales@limgro.comWe reply within 24 hours with a clear plan.