Ensure the property’s address details are complete and normalized before distribution to channels and for accurate guest discovery, pricing, and compliance. Captures structured address fields (city, street, house/apt number, post code) with confirmed geolocation.
On this step, the fields should be pre-populated based on the information provided in the previous step, so the landlord reviews and confirms the details. One extra required field — House/Apt Number — is added to make the address fully structured.
UX Flow (What the user sees)
A form with required fields: City, Address (Street), House/Apt Number, Post Code (ZIP).
All fields except House/Apt Number are prefilled from the previous step.
A read-only map on the right displays the geolocation for visual confirmation.
On submit, validation enforces all required fields. If valid, the step advances to the Details step.
![[02.png]]
Form behavior details:
Fields: city, street (address), houseNumber, zipcode (state optional).
Map: read-only, centered on current coordinates from property state.
Client-side validation (RHF or equivalent) for required fields; additional validation requires latitude and longitude to be present before allowing submission.
System Flow (How it works)
sequenceDiagram actor Landlord participant Frontend as Web App (Next.js) participant Backend as API (NestJS) participant DB as Database Landlord->>Frontend: Fill City, Address, House/Apt number, Post Code Frontend->>Frontend: RHF validates required fields Landlord->>Frontend: Click "Next" Frontend->>Frontend: Validate form (city, address, zipcode, houseNumber, latitude, longitude) Frontend->>Backend: PATCH /api/properties/{propertyId} { address: { street, city, zipcode, state, latitude, longitude, houseNumber } } Backend->>DB: Update properties.address Backend-->>Frontend: 200 OK Frontend->>Backend: PATCH /api/users/{userId} { onboardingStep: user.onboardingStep + 1 } Backend->>DB: Update users.onboardingStep Backend-->>Frontend: 200 OK Frontend->>Backend: GET /api/properties (refetch) Backend-->>Frontend: 200 OK { properties: [...] } Frontend->>Frontend: Advance to next step (Basics/Details)