Anthony Mauclair
← All work

Product · 2026

GrillTask.

A task app where the proof is a photo and the reward is agreed in advance. I designed, built, priced, and support it on my own.

Role
Founder, solo build
Timeline
2026 to now
Built with
React Native, JavaScript, Firebase, Stripe, Vercel
Plans
Free, Plus ($3.97/mo), Pro ($9.97/mo)
Languages
9, including right-to-left Arabic

What it does

Tasks between people who live together, like chores at home or jobs between housemates, usually get forgotten until someone gets annoyed. GrillTask makes the loop explicit.

One person assigns a task. The other person submits a photo once it is done. Approving the photo releases points toward a reward both of them agreed on beforehand. Instead of reminding someone five times, you have proof.

How it is built

There are two apps sharing one Firebase project: a React Native app for phones, and a plain JavaScript web app with every screen. Both read the same database and follow the same security rules. The web app has no build step, so deploying is just a git push.

  • AppsReact Native (Expo) app and a plain JavaScript web app, on one Firebase project.
  • BackendServerless functions on Vercel for payments, email, referrals, usernames, groups, and account deletion.
  • DatabaseFirestore, with hand-written security rules that decide who can read and write what.
  • PaymentsStripe Checkout created on the server, a signed webhook, and a billing portal. No keys in the browser.
  • EmailResend, with three daily scheduled jobs: task reminders, account checks, and removing unverified sign-ups.
  • LanguagesEnglish plus eight translations. Arabic switches the whole layout to right-to-left.

Pricing

There are three plans. Free, Plus at $3.97 a month or $19.97 a year, and Pro at $9.97 a month. Only the monthly plan has a free trial, because a trial on a yearly plan mostly leads to refunds.

Deciding which features go in which plan took longer than building them: how many people you can connect with, group sizes, number of proof photos, how long history is kept, data export, and analytics for teams.

A paid plan can only be switched on by the Stripe webhook, the admin tools, or the referral server. The database rules reject everything else, so nobody can unlock Pro from their own browser.

Invite codes give a new user a few days of Pro and give the person who invited them credits. Support messages from a chat bubble in the app and on the website go straight to my inbox.

Problems I had to solve

The bug that took me longest: in Firestore security rules, reading a field from a document that does not exist does not return false, it throws an error, and Firestore treats that as “access denied”. I spent an afternoon in the dashboard before finding it in my own rules. I now check the document path instead wherever I can.

Smaller details took most of the time. Due dates are set to 23:59 in the receiver’s timezone, not mine. Approving a task and paying out points happen in one atomic write, so tapping twice cannot pay twice. Every file carries a shared version number so a browser never mixes old and new code.

Where it is now

Feature-complete and heading to the App Store. The web version is live at grilltask.com. It is the first product where I handled every part: the idea, the code, the prices, the support inbox, and the App Store paperwork.