PhotoSesh Photographer Booking
React and Node.js marketplace connecting clients with local photographers — real-time availability, instant booking, and session management.

PhotoSesh needed a seamless two-sided marketplace where clients discover local photographers by specialty and availability, and photographers manage their calendar, pricing, and deliverables from a single dashboard.

js API with real-time slot management.
Multi-role platforms fail when permissions are an afterthought — model actors and actions in week one, not week ten.
Real-time features need explicit fallbacks when websockets drop; users should never stare at a spinner with no recovery path.
Project at a Glance
| Field | Detail | Notes |
|---|---|---|
| Category | Web App | Custom platforms, marketplaces, job boards, and booking systems. |
| Client Type | Photography Marketplace Startup | Engagement model |
| Timeline | 18 weeks | Discovery through go-live |
| Focus Areas | React · Node.js · Booking · Marketplace | Primary capabilities delivered |
Delivered for a photography marketplace startup in 18 weeks — scoped as a fixed-milestone engagement with weekly demos and named owners on both US and Vietnam sides.
Double bookings and slow manual confirmation emails created friction on both sides of the marketplace.
Photographers had no visibility into booking trends, and clients struggled to compare portfolios across different styles and locations.
Workflow complexity hides in exception paths: refunds, disputes, and manual overrides need stories, not only happy-path demos.
Stakeholders often conflate admin power with safety — separate audit visibility from destructive actions.
We built real-time availability calendars with instant booking confirmation, photographer profiles with portfolio galleries and specialization tags, and automated post-session delivery workflows.
Stripe Connect handles split payments with automatic photographer payouts after session completion.
Event-driven updates should be idempotent and traceable; support will reconstruct timelines from logs during client escalations.
Bulk operations belong behind confirmation and progress UI — silent background jobs erode trust when they fail halfway.
We measure success against baselines agreed in discovery — not vanity metrics added after launch. The table below captures headline numbers; narrative outcomes follow for stakeholder reviews.
Key Metrics
| Metric | Result | Context |
|---|---|---|
| Booking confirmation time | Instant | Measured post-launch |
| Double-booking incidents | 0 | Measured post-launch |
| Photographer payout speed | < 24 hrs | Measured post-launch |
Business Outcomes
- Clients filter photographers by location, style, and date availability — and book in under two minutes.
- Photographers receive automated reminders, session briefs, and Stripe payouts without manual processing.
- Admin dashboard tracks session volume, revenue splits, and popular booking time slots.
Adoption metrics beat vanity usage: track tasks completed per session and time-to-first-value for each persona.
Instrument feature flags so client success can pilot with a subset of users before full rollout.
React and Node.js marketplace connecting clients with local photographers
— real-time availability, instant booking, and session management.
Built with web app-appropriate tooling — production-tested across Kan-Tek client squads. Choices favor maintainability and integration fit over novelty.
Core Stack
| Layer | Tools | Rationale |
|---|---|---|
| Application | React · Node.js · PostgreSQL | User-facing and API surfaces |
| Data & Infra | Redis · Stripe Connect · WebSockets | Persistence, cache, and ops |
Full Stack
- React
- Node.js
- PostgreSQL
- Redis
- Stripe Connect
- WebSockets
Prefer horizontal scaling patterns the client ops team can reason about — document which workers and queues own which workloads.
API versioning strategy should assume mobile and partner integrations lag web by months.
Run through this checklist before go-live — assign an owner for each item and block the release window until sign-off. Skipping steps because of deadline pressure is how production incidents start.
Pre-launch gates
- Exercise role-based access across all primary personas.
- Load-test real-time features with concurrent user targets from discovery.
- Confirm audit logs capture sensitive actions with actor and timestamp.
- Validate export and import flows with production-scale file sizes.
- Run cross-browser smoke on Chrome, Safari, and Edge latest.
- Share runbook for on-call with escalation contacts on both shores.



