Project handover

Canopy Guest App

Prepared for The Canopy Treehouses · Handover date 2026-08-08

Section 01

Project overview

The Canopy Guest App is a native mobile app for guests staying at The Canopy Treehouses, delivered on both iOS (App Store) and Android (Google Play). Every screen and every image can be edited by the resort team through a browser-based admin CMS. No developer involvement is required for day-to-day content changes.

What guests can do:

Training videos

Two short screen-recordings walk through the app end to end. Both are narrated by Girish and are the primary reference for using the app and the admin.

Guest app walkthrough — every screen a guest will see, in the order they see it. Useful for training new front-of-house staff.
Link to be provided.

Admin CMS walkthrough — how to log in, edit content, respond to guest submissions, and send a message board update. Useful for anyone on your team who will maintain the app.
Link to be provided.

Section 02

Accounts you own

These are the accounts under your name that keep the app running and let you manage it. Passwords should live in your own password manager. This document only records where each account sits and what it does.

Google Play Console
play.google.com/console
Publisher account for the Android app. One-off $25 USD registration fee, no renewal.

Apple Developer Program
developer.apple.com/account
Publisher account for the iOS app. $99 USD per year, auto-renews on your card. Also used to sign in to App Store Connect at appstoreconnect.apple.com.

Domain
canopytreehouses.com.au
Registered through your existing web host. The app’s privacy policy is served from a page on this domain.

Email inbox
stay@canopytreehouses.com.au
Receives every feedback, message board and maintenance submission from the app. Delivered from the Canopy Guest App via Resend.

Admin CMS
canopy-admin.pages.dev
Web dashboard for editing every screen of the app. Access is gated by Cloudflare Access — sign in with a Google account that has been whitelisted. Currently David Clarke and Girish Rathor are on the whitelist. Adding or removing team members is a small change on my end, just email me.

Section 03

Services running the app

The app is made of several small services stitched together. Some run under your account, some under mine. This section lists each one so you know what is where.

Cloudflare (Aaujar’s account, free plan)
Hosts the API server (Worker), the media library (R2 storage), the database (D1), the admin website (Pages), and the sign-in gate (Access). All in the Oceania region for low latency to Australian guests.
Currently on the free plan, which comfortably covers the expected guest volume.

Google Play Console (your account)
Publishes the Android app. One-time $25 USD registration paid at signup, no renewal.

Apple Developer Program (your account)
Publishes the iOS app. $99 USD per year, auto-renews on your card.

Expo Application Services (Aaujar’s account)
Builds the iOS and Android apps in the cloud whenever a new version is needed. Paid tier while the app is being iterated, downgraded to free tier once the release cadence slows.

Resend (Aaujar’s account)
Sends the email notifications to stay@canopytreehouses.com.au every time a guest submits feedback, a message, or a maintenance request. Free tier covers well beyond current volume.

Push notifications (Android and iOS)
When you post a new update to the message board, guests who opted in receive a push notification. On Android this goes through Firebase Cloud Messaging (Aaujar’s account, free tier). On iPhone this goes through Apple’s push service (APNs) using a key generated under your Apple Developer Program account. Both are free.

Section 04

Source code and assets

Everything that makes up the app lives in a single Git repository, so if you ever need to bring in another developer they can pick up from a single starting point.

Git repository
github.com/girish-rathor/canopy-app
Private repository. Read access can be granted to any GitHub account on request.

What’s inside the repository:

Where images and videos live:

Every photo and video shown in the app is uploaded through the admin CMS and stored on Cloudflare R2 under Aaujar’s account. Nothing is bundled into the app itself, which is why editing content never requires a new app release.

Brand assets:

Logo, hummingbird icon (used as the app icon and favicon), and colour palette are stored in the repository under apps/guest-app/assets/images/. Higher-resolution and working versions of these files are kept in the Aaujar project folder.

Section 05

Data and backups

Every guest submission (feedback, message board post, maintenance request) is stored in a database in Sydney, along with the wildlife entries, activities, restaurants, and everything else that the admin CMS lets you edit.

Where the data lives
Cloudflare D1 database, hosted in the Oceania region (Sydney). Media files (photos and videos) are stored separately in Cloudflare R2, also in Aaujar’s account.

How to back it up
In the admin CMS, the “Backup” page has a “Download backup (.json)” button. This downloads a single JSON file containing every editable record — content cards, wildlife entries, activities, restaurants, maps, message board posts, and guest submissions.

This file is intended as a monthly or quarterly snapshot for your own records. It can be sent to another developer if the app ever needs to be rebuilt from scratch.

Cloudflare’s own backups
Cloudflare maintains its own redundancy across data centres. The download-backup button is a belt-and-braces snapshot on top of that.

What is not in the backup file:

Section 06

Known items and roadmap

A small set of items were deliberately deferred from the first release. They are recorded here so nothing is a surprise, and so that if you ever want to pick them up in a future version there is a clear starting point.

iPad support
The current release is phone-only on iOS. The app can still be installed on iPad in phone-compatibility mode, but it has not been optimised for the larger screen. A future v2 could enable proper iPad support if guest demand justifies it.

Real iPad screenshots
Apple requires an iPad screenshot slot even for phone-only apps. The current App Store listing uses phone screenshots letterboxed onto the iPad canvas as a placeholder. When we do iPad support, real iPad screenshots will replace these.

Image and video optimisation
Media uploaded through the admin CMS is currently stored at whatever size the file is uploaded at. A future improvement is to add automatic client-side compression on upload and a soft size cap on videos, so the app stays responsive on slower guest connections.

Section 07

Contact

For anything at all related to the app, from a quick question to a change request, please get in touch.

Girish Rathor
Aaujar
girish@aaujar.io

If a future developer takes over, this document can be updated to point to their contact instead.