← Joburi

Senior Frontend Developer (Next.js / React) — Booking Form Redesign

Buget: $3000.0 FIXED / ⭐ 5.00 (13) Poland

next.js, react-js, javascript, graphql

We run a SaaS platform for therapists and clinics. One self-contained part of it is a public patient booking form built in Next.js (App Router) + React + TypeScript. It is live in production and used daily by clinics and their patients. We have a fully designed redesign of this form (clickable HTML prototype provided) and we are looking for one developer to implement it end to end against our existing codebase. The integrations (payments, invoicing, slot availability, calendar export) already exist and work — this is primarily a frontend job: changing logic and validation, extending the form, and restyling, while keeping the existing production behavior intact. This is a fixed-price project split into milestones. It is not a "weekend / after-hours" project — see "How we work" below before applying. Budget: $3,000 fixed, split into milestones. For the right person we're open to discussing it based on their approach — but we are not looking for the cheapest bid. We are looking for someone reliable who delivers good, maintainable, working code in a reasonable time. Tech stack (you must be comfortable with all of it) - Next.js 14 (App Router), React 18, TypeScript - React Hook Form + Zod for forms and validation - Apollo Client + GraphQL (typed, codegen) - Zustand and Jotai for state - Tailwind CSS v4 + shadcn/ui (Radix primitives) - next-intl (the form is bilingual: Polish + English) - Playwright for E2E tests You will be working inside an existing, mature codebase — not greenfield. The ability to read and safely modify someone else's well-structured code matters more here than the ability to start from scratch. Scope (high level) The clickable prototype is the source of truth for behavior and layout. At a high level: - Step 1 — visit selection: adjust the existing filtering logic (service / specialist / time slot, online vs in-office tabs), field ordering, pricing hints, empty-week handling, and styling. - Step 2 — patient data: extend the form with a "for myself / for someone else" mode, an additional patient section, refined validation, and restyling. (Note: the backend support for separating patient from payer is handled on our side — you integrate against a mutation we provide.) - Step 3 — confirmation modal: restructure to the new layout from the prototype. Result screens: redesign success, pending-confirmation, and error states (payment failed / slot taken / generic) per the prototype. Exact behavior, copy (PL + EN), and states are defined in the prototype and will be detailed per milestone. How we work — please read before applying - Availability: we need someone working on this focused, during weekday business hours, with overlap on CET. Minimum ~6 hours/day of real work on this project. This is not a project to fit around a full-time job. If you can only work evenings/weekends, this role is not a fit. - Daily visibility: all work from a working day must be pushed to the repository in a Merge Request the same day. We monitor progress through the repo, not status messages. Long silent stretches are not acceptable. - Code review: every MR goes through automated code review (CodeRabbit) plus a human reviewer. Every review comment must be addressed — either by applying the change, or by a brief written explanation of why it does not apply. No comment may be left ignored without a reply. - Acceptance gate per milestone: a milestone is "done" only when its MR is green in CI (lint, typecheck, Playwright E2E passing), review comments are resolved, and behavior matches the prototype. "Works on my machine" is not acceptance. E2E coverage for the new behavior is part of each milestone, not an afterthought. - Milestones have short, fixed deadlines (roughly one week each, the first one shorter). We pay promptly after each milestone is accepted. A small percentage of each milestone is held back and released on final acceptance of the whole project. - Timeline matters to us. Persistent missed deadlines without prior agreement may end the engagement, with payment for accepted milestones only. First milestone = paid trial We start with a small, paid trial milestone on the real codebase (a self-contained, genuinely useful piece — not throwaway work). It lets both sides confirm fit before committing to the full project. Details provided to shortlisted candidates. To apply Please include: A short note on your experience with this exact stack (Next.js App Router + Apollo/GraphQL + React Hook Form/Zod). Generic "React developer" applications will be skipped. One example of work where you modified an existing production codebase (not a from-scratch build), and what was tricky about it. Confirmation that you can meet the weekday availability and daily-push expectations above. Confirmation that the fixed-price + milestone model works for you, and two or three sentences on how you'd approach a job like this (e.g. how you get familiar with an unfamiliar codebase before changing it). We value clear communication, honesty about what you don't know, and steady delivery over flashy promises. We pay fairly and on time, and we expect the same reliability in return.
Deschide pe Upwork