The problem
Animal rescue in the UAE runs on small teams, and small teams run on WhatsApp. When we met the person behind RescueME, every adoptable dog, cat and rabbit lived in a mix of Instagram posts, a shared spreadsheet and long message threads. An adopter would see a photo, message the group, be sent a PDF form, fill it in by hand, photograph it and send it back. Half the forms arrived incomplete. The people doing the work spent their evenings chasing paperwork instead of placing animals.
The brief was short: make it easy for a family in Dubai, Abu Dhabi or Sharjah to find an animal and apply properly, and make it easy for the team to keep the list current without calling a developer.
What we built
A public site that does the finding. Separate, crawlable listings for dogs, cats and rabbits, each animal with its own page, photos, temperament notes and status. Pages for fostering, sponsoring, events, partners and the group's story, plus a small blog for the stories that bring people back.
A 10-step adoption wizard. The paper form became a guided application built with React Hook Form and Zod: per-step validation, conditional questions (a villa with a garden asks different things from an apartment), and localStorage autosave so an applicant can stop halfway and resume on another day. It captures a typed name and a drawn signature, and optionally a residency visa, passport and tenancy contract or NOC. Those documents go straight into a private Supabase storage bucket that only authenticated staff can read; nothing sensitive ever sits in an inbox.
A CMS the team actually uses. An admin area with email and password login, a dashboard of every animal, add and edit with photo upload, and delete. The team can update availability the moment an animal is placed, which is what keeps adopters trusting the list.
Anti-spam without friction. A honeypot field catches bots without making humans solve puzzles. Row-level security in Postgres means submissions are readable only by signed-in staff, even if the anon key leaks.
Why these choices
Next.js 15 on Vercel. Server-rendered pages with real HTML for every animal. Search engines and AI crawlers see the listings without running JavaScript, which is the difference between being found and not.
Supabase. Postgres, auth, storage and row-level security in one service, with a free tier that fits a charity's budget. The rescue group owns the project; we hold no keys they cannot revoke.
No app store. The team asked about a mobile app. We talked them out of it. Adopters arrive from a Google search or an Instagram link once, and a responsive site that loads in under two seconds serves them better than an install they will never make.
Built to be found
"Built to be found" is half of what we promise, and RescueME is where we proved it. Every animal page carries structured data (the organisation is marked up as an AnimalShelter with its address), titles and descriptions are written per page, the sitemap updates as animals are added, and the site is fast on a phone on a 4G connection, which is how most UAE adopters browse. The result is that RescueME ranks organically for the adoption searches that matter in the UAE and shows up in AI search answers, without a marketing budget.
What happened
The site has helped rescue more than 50 animals. Applications arrive complete because the wizard will not let an incomplete form through, so the time that went on chasing paperwork goes on home visits instead. RescueME has been in production since April 2026 with the team running it day to day, and the client left us an unprompted five-star review on Trustpilot.
What we would do differently
Email notifications for new applications were scoped for a second phase; in hindsight they belong in the first release, because the team still opens the dashboard to check. Cloudflare Turnstile is ready to replace the honeypot if spam ever becomes a problem. It has not yet.
Frequently asked questions
How long did RescueME take to build?
The first release shipped with listings, the adoption wizard and the admin CMS. Foster, sponsor, events and the blog followed after launch as the team asked for them. AI handled the scaffolding and boilerplate; engineers reviewed every change before it went live.
Who owns the code?
The rescue group. The repository, the Supabase project and the Vercel deployment are theirs, documented so another developer could pick them up.
Is the adoption data secure?
Applications and uploaded documents live in Supabase with row-level security and a private storage bucket. Only authenticated staff can read them. Nothing is emailed around.
Could you build something similar for our organisation?
Yes. Listings, a guided application and a simple CMS is a pattern that fits rehoming, volunteering, membership and admissions. Book a free 15-minute consult and we will scope it.