Senior Node.js + React Developer — Meeting Room Booking Service
Worldwide
Project Overview We need a small meeting-room booking service built end-to-end: Node.js backend + React frontend. The core challenge is not the CRUD itself, but correctly handling booking conflicts, concurrent requests, and edge cases — this requires someone with real experience reasoning about concurrency and data consistency, not just wiring up basic endpoints. Scope of Work Backend (Node.js — Express/Fastify/NestJS, your choice): Rooms with id, name, capacity. Bookings with roomId, title, startTime, endTime, createdBy. Endpoints: GET /rooms GET /rooms/:id/bookings?from=&to= POST /bookings DELETE /bookings/:id Core requirement: overlapping bookings for the same room must never be allowed, even when two creation requests arrive at nearly the same time. Use whatever mechanism you consider best (locking, transactions, DB constraints, optimistic checks) and document the reasoning. Validation: startTime endTime, no bookings in the past, max booking duration of 4 hours. Storage of your choice (in-memory with simulated concurrency, SQLite, or Postgres). Frontend (React): List of rooms. Day view of bookings for a selected room. Booking creation form with client-side validation. Proper handling of conflict errors from the API, including conflicts that only appear after the form looked valid client-side (race condition with another user). Loading/error states using hooks/context only — no Redux/Zustand needed. Edge Cases to Handle Two near-simultaneous booking requests for the same room and time slot. Back-to-back bookings (end of one = start of another) — this is not a conflict. Deleting a booking that's already been deleted or doesn't exist. Invalid time ranges (end before start, negative duration). Deliverables Git repository with full source code. Minimal backend test suite covering the conflict-detection logic. README with setup instructions, an explanation of the concurrency approach, and suggested next steps. Requirements Strong hands-on experience with Node.js and React. Comfortable reasoning about concurrency and data consistency, not just standard CRUD. TypeScript is a plus, not mandatory. Clear written communication in English.
- Less than 30 hrs/weekHourly
- 1-3 monthsDuration
- ExpertExperience Level
$18.00
-
$30.00
Hourly- Remote Job
- Complex projectProject Type
Skills and Expertise
Activity on this job
- Proposals:50+
- Last viewed by client:yesterday
- Interviewing:0
- Invites sent:0
- Unanswered invites:0
About the client
- PolandKraków5:34 AM
- $3.4K total spent21 hires, 0 active
- 156 hours
- Tech & ITSmall company (2-9 people)
Explore similar jobs on Upwork
How it works
Create your free profileHighlight your skills and experience, show your portfolio, and set your ideal pay rate.
Work the way you wantApply for jobs, create easy-to-by projects, or access exclusive opportunities that come to you.
Get paid securelyFrom contract to payment, we help you work safely and get paid securely.
About Upwork
- 4.9/5(Average rating of clients by professionals)
- G2 2021#1 freelance platform
- 49,000+Signed contract every week
- $2.3BFreelancers earned on Upwork in 2020
Find the best freelance jobs
Growing your career is as easy as creating a free profile and finding work like this that fits your skills.
Trusted by