← All work

CleanHaus

Rental cleaners see only their jobs in a role-aware turnover calendar app

CleanHaus needed a new mobile app to replace its older Ionic and Vue app. We built one React Native codebase for iOS and Android whose calendar shows owners, managers and cleaners only what their role allows.

Real Estate & HospitalityField operations mobile appModernized a live product

Who uses it
Owners, cleaner managers and cleaners
Platforms
iOS and Android from one codebase
Calendar
Month, week and day views per role
Ships through
The platform's own store accounts

The challenge

The platform's older Ionic and Vue app was hard to maintain, and its most critical screen, the turnover calendar, had to respect strict role rules on phones.

What we did

One Expo and TypeScript app on the platform's existing backend and logins, with phone sign-in, push actions, deep links and role-based month, week and day calendars.

The outcome

The new app shipped through the platform's own store accounts and went live alongside its AI agent.

The starting point

CleanHaus, a live operations platform where property owners, cleaner managers and cleaners coordinate short-term rental bookings and cleanings. It runs on a serverless AWS backend with a web app and an older Ionic and Vue mobile app.

What had to change

The platform wanted one codebase for iOS and Android that it could deploy to test stores and maintain easily. The calendar, where every turnover is planned, had to work for three roles with different rights.

What could not break

  • Owners cannot assign cleaners, and cleaners see only their own jobs
  • The app runs on the existing backend and Cognito logins
  • Dates stay correct across property time zones
  • Development, staging and production builds stay separate

The calls we made

We treated the calendar as the product and the role rules as part of the calendar, not a filter added later.

  1. 01

    Analyze the calendar before building it

    The calendar carries booking bars, cleaning and service blocks, unassigned turnover gaps and urgency cues close to check-in, so it got its own analysis before any code.

    Ruled out

    Porting the old calendar screen as it was.

  2. 02

    Role rules in every view

    Month, week and day views read the user's role, so a cleaner's calendar holds only their own jobs and an owner's has no assign action.

    Ruled out

    One calendar for everyone with actions hidden in the interface.

  3. 03

    One codebase on the existing backend

    Expo and TypeScript give iOS and Android from one codebase, and the app calls the platform's own APIs and Cognito accounts, starting from the user profile.

    Ruled out

    Separate native apps, or a new backend for mobile.

  4. 04

    Builds per environment

    EAS builds for development, staging and later production let the platform test each release in a store build before users see it.

    Ruled out

    A single build pointed at whichever backend was current.

How the system fits together

calendar, jobssign inrole's datapush actionsstore buildsOwners, managers,cleanersPlan and work turnovers onphonesReact Native appExpo, TypeScript,role-based calendarAmazon CognitoPhone code, Google andApple sign-inPlatform backend APIsProfiles, bookings, jobsFirebasePush, analytics, crashreportsExpo EAS andTestFlightBuilds per environment
PeopleBuilt by DaticsClient's existing systemOutside serviceThe new app sits on the platform's existing backend and logins, so role rules stay where they already were.

What we built

01

Role-based turnover calendar

Month, week and day views with booking bars, cleaning and service blocks, unassigned gap indicators, timezone-safe dates and role-based permissions.

02

Sign-in on existing accounts

Cognito phone code login through Amplify, plus Google and Apple sign-in, localization and onboarding.

03

Push, deep links and analytics

Push notifications with interactive actions, deep links into the right screen, analytics and crash reporting.

04

Store builds per environment

EAS builds for each environment and a move to the platform's own company accounts, shipped through TestFlight.

How it works

Sign in

A user signs in with a phone code or a Google or Apple account on their existing login.

Open the calendar

The app loads bookings and jobs that the user's role is allowed to see.

Spot the gaps

Unassigned turnovers and urgency cues close to check-in stand out on the calendar.

Act from a push

A push notification with actions opens the right job through a deep link.

What changed

The platform moved to one React Native app for iOS and Android, shipped under its own store accounts, and the app went live alongside its AI agent.

Under the hood

Datics role
Engineering delivered by Datics
Identity
Amazon Cognito with phone code login through Amplify Gen 2, and Google and Apple sign-in on the same accounts.
Messaging and telemetry
Firebase Cloud Messaging and Expo push with interactive actions, Firebase Analytics and Crashlytics.
Delivery
Expo EAS builds per environment and TestFlight under the platform's own store accounts.

Cloud and infrastructure

AWS AmplifyAmazon Cognito

Also in the stack

React NativeExpoTypeScriptGluestack UIFirebaseExpo EAS

How it shipped

  1. Requirements and proposal

    Requirements from the platform's CTO, a proposal and a revised statement of work for the React Native port.

  2. Five planned sprints

    The base, sign-in, push, deep linking, analytics and the calendar, planned sprint by sprint from a feature breakdown.

  3. Continuous delivery

    Ongoing pull requests into the platform's mobile app repository as the app and its AI agent went live.

In the platform's repository

Every change went into the platform's own mobile app repository through pull requests reviewed by its team.

Planned in sprints

A feature breakdown sheet and a separate calendar analysis set each sprint before it started.

What this unlocked

With one codebase on the existing backend, new features reach iOS and Android together.

Have a product with the same kind of constraints?

Tell us what already exists and what you want it to do. We will tell you what it takes.

Book a 30-minute Product Review