AmirSAmirhossein Shakernezhad
Back to the work

Coming soon

EjaRent

An online rental platform for Qom.

eja.rent is a Persian-first rental platform whose first market is Qom. It was a genuinely shared build: Behnam owned the backend, I owned everything the user sees, and a hand-authored OpenAPI contract was the seam between us — an API change and the web change that depends on it land together.

Role
Web app — interface & interaction design, frontend engineering, API integration
Collaboration
Built with Behnam, who designed and built the backend API
Year
2026
Status
Coming soon
Disciplines
Web platforms · Software · 3D · Product presentation
Stack
Next.jsReactTypeScriptOpenAPILeafletGSAPThree.jsRTL / Persian UI

Who built what

Web application
Amirhossein — Next.js, interface, maps, flows
API & data
Behnam — NestJS, PostgreSQL / PostGIS
The seam
A hand-authored OpenAPI 3.1 contract; typed client generated from it

Arriving in the city

The homepage started as three competing visual prototypes, then became a cinematic 3D hero built from real OpenStreetMap geometry of Qom — city outline, roads and neighbourhoods — with the camera diving to a listing.

Then I cut it. A lighter SVG scroll journey — the Qom map drawing itself, the camera diving into a neighbourhood, an apartment façade drawing in with lit windows — told the same story on a GSAP-scrubbed timeline, dropped Three.js from the homepage and kept a clean reduced-motion end state. Knowing when not to use WebGL is part of the job.

What I built

  1. 1Map search

    Viewport-driven pins with a switch to server clustering when results truncate, single-cluster deep links, and a tile-provider fallback chain.

  2. 2Listings

    Query-param search with cursor pagination, neighbourhood slugs from the API, and money handled as rial strings parsed with BigInt — never floats.

  3. 3Owner tools

    A listing wizard with dynamic per-property-type fields from the taxonomy API and a three-step presigned media upload; an owner dashboard to publish, pause, mark rented, edit and delete.

  4. 4Accounts & admin

    OTP sign-in, a tabbed account area (profile, sessions, saved searches) and a role-gated admin panel — on one shared, themed shell.

  5. 5Persian-first

    Designed RTL from the start, with a unified token system across every surface, security headers and honest empty, error and 404 states.

Frames