~/case/poslic← /work
$cat README.md
/03

Poslic

Serbia's all-in-one service marketplace — a TaskRabbit-style platform connecting users with service providers, with task booking, in-app chat, ratings, and Payspot payments.

year
2025
role
Frontend Developer
duration
6 months
> stack
  react · bootstrap · payspot · rest apis
$cat summary.md

A two-sided marketplace for the Serbian market. Customers post tasks; vetted providers quote, chat, and complete jobs end-to-end. The frontend had to support discovery, booking, real-time messaging, ratings, and a hardened payment flow tied to Payspot (a regional gateway with strict 3DS handling).

$ls features/
  • 01Task discovery with filters and category drill-down
  • 02Booking flow with quotes, accept / decline, and reschedule
  • 03Real-time in-app chat with offline queue + reconcile
  • 04Ratings and reviews on both sides of the deal
  • 05Earnings dashboard for service providers
  • 06Payspot integration with 3DS callbacks and refund handling
$cat challenges.md
#01Payment gateway with 3DS interrupts

Payspot's 3DS step yanks the user out of the SPA mid-payment. State had to survive a full-page redirect and reconcile on return without double-charging or stranded orders.

#02Real-time chat that survives connection drops

Mobile users frequently lose signal mid-conversation. Messages needed to queue locally, send when the socket reopens, and dedupe against the server's own copy.

#03Two-sided product, one codebase

Customers and providers share screens (chat, booking) but have very different goals on each. Composition over duplication.

$cat approach.md
01Typed Payspot gateway

Wrapped the SDK in a single typed module. All entry points return discriminated unions so the call site handles every state — pending, success, 3DS-redirect, decline, network failure — explicitly.

02Optimistic chat with idempotent reconcile

Messages render instantly with a client-side id, queue in IndexedDB if offline, then send. On server ACK we replace by id; on rehydrate we dedupe by hash.

03Role-aware composition

Same components for customer and provider screens, driven by a `role` prop and a small permissions map. No parallel codepaths.

$git log --oneline
  • 8f6b1d4chore: scaffold + auth
  • 2a8d3c7feat: task discovery + filters
  • 4c1e9b3feat: booking + quotes
  • 7b4f8a2feat: in-app chat with offline queue
  • 9d2c5e1feat: Payspot gateway + 3DS
  • 42a3b1ffeat: ratings, reviews, earnings
  • productiondeploy: poslic.rs live
$cat outcomes.md
  • MVP launched in the Serbian market on schedule
  • Smooth task → quote → chat → payment flow
  • Stable Payspot integration with full 3DS support
$ls ../
pritesh@portfolio: ~/case/poslic$
© 2026 Pritesh Mendapara · Frontend Developer · built in surat