Vlad Ilie
movelo – un marketplace pentru firmele de închirieri de biciclete, reconstruit în 2026
Prototip · Marketplace · Next.js

movelo – un marketplace pentru firmele de închirieri de biciclete, reconstruit în 2026

movelo.ro ↗
acum 2 săptămâni
•••
6 min de citit

Context

După un an în care am construit închirieri online pentru o singură afacere cu biciclete electrice, m-am întrebat cum ar arăta totul pentru mai multe firme deodată. movelo este răspunsul: un marketplace românesc în care alegi un oraș, o oră de ridicare și o durată și vezi bicicletele tuturor firmelor care închiriază acolo. Prima versiune a fost un prototip, construit în mare parte în 2023. În octombrie 2026 l-am reconstruit aproape de la zero, pe baza a tot ce învățasem între timp din proiectele de închirieri de după el.

Problema

Firmele mici de închirieri au nevoie, fiecare, de aceleași lucruri: rezervări, plăți cu cardul, facturi, e-mailuri și o evidență a bicicletelor. Construirea lor separat pentru fiecare firmă nu se scalează. O platformă comună trebuie însă să rezolve câteva întrebări grele: cum plătește clientul direct firma, nu un intermediar; cine emite factura; și cum te asiguri că aceeași bicicletă nu e închiriată de două ori, când doi clienți plătesc în aceeași secundă.

Ce am construit

Sub capotă

Reconstrucția din 2026 a mutat proiectul pe Next.js 16, cu server actions, React 19 și Prisma 7 pe PostgreSQL. Autentificarea se face cu better-auth, fără parole: magic link pe e-mail, cu Google și Facebook opțional. Fiecare scriere trece printr-un singur strat care validează datele, verifică permisiunile pe firma activă și scrie în jurnalul de audit. Statusurile comenzii urmează o mașină de stări declarată o singură dată, așa că o comandă nu poate sări peste pași.

Disponibilitatea se bazează pe intervale de timp în PostgreSQL și pe o constrângere de excludere, cu blocarea rândurilor la rezervare. Timpul se calculează mereu în ora României, iar banii printr-o clasă proprie, cu împărțire exactă la rambursări parțiale. Catalogul public stă în cache și se reîmprospătează la fiecare modificare din panou, deci paginile orașelor sunt statice și doar disponibilitatea se calculează live.

Testele acoperă funcțiile de timp, bani și disponibilitate, procesatorii de plată și facturile, iar testele de integrare rulează pe un PostgreSQL real, inclusiv 20 de rezervări simultane pentru o singură bicicletă, din care trebuie să reușească exact una. Testele Playwright parcurg fluxul complet, de la alegerea orașului la plată, predare, retur și raportul de vânzări, pe desktop și pe mobil.

Stadiu

Un prototip funcțional, în jur de 570 de commit-uri, dintre care aproape 200 în reconstrucția din 2026. Nu a fost lansat cu firme și clienți reali. Multe dintre piesele lui trăiesc mai departe în proiectele de închirieri pe care le-am construit, iar altele s-au întors în el din acele proiecte, cum e integrarea cu Oblio.

Tehnologii

Next.js 16, React 19, TypeScript, PostgreSQL (Supabase), Prisma 7, better-auth, next-intl, Tailwind CSS 4, shadcn/ui, zustand, zod, react-hook-form, React Email, Brevo, EuPlătesc, Stripe, Oblio, Supabase Storage, Umami, Cloudflare Turnstile, Vitest, Playwright, Vercel.

Tehnologii:

  • Next.js
  • PostgreSQL
  • Prisma
  • better-auth
  • EuPlătesc
  • Stripe
  • Oblio

Partajează pe: