The other day, a client asked me by email: “Daniel, why does your app cost €5,000 when my cousin told me he had one made for €1,000?”. I answered with a breakdown. I showed them exactly what was inside those €5,000, hour by hour, decision by decision. And they told me: “now I understand, thanks”. And they signed the project that same week.
Instead of giving you a table with ranges (which is what everyone does and what helps nobody), I’m going to show you the real breakdown of an app quote I closed 6 months ago. It’s the Westside Wellness app, which is a real and verifiable case (under NDA, so the name is changed). I explain each line, why it costs what it costs, and what would happen if we cut some.
It’s not the shortest post I’m going to write, but it’s the one that will help you the most if you’re evaluating making an app for your business. And at the end you’ll know exactly what to ask when you receive a quote from any developer or agency.
The project: internal management app for an aesthetics clinic
What Sarah (the clinic owner) asked me: an app for her team to manage appointments, see patient history, control revenue in real time, and chat with patients without having to give personal WhatsApp. Nothing public-facing, all internal. Multi-platform (iOS + Android) because they have 2 iPads at reception, 3 iPhones on the team, and 2 Android tablets for the rooms.
Stack we agreed on: React Native + Supabase + TypeScript. Why this and not another: I explain it in the stack comparison post, but summarised, React Native because 90% of the screens are forms and views with data (we don’t need 3D graphics or heavy animations), and Supabase because it already complies with GDPR, has PostgreSQL database, authentication, and realtime for chat and statistics.
Total agreed quote: €5,000, VAT apart, in 6 sprints of 1-2 weeks each. Payment model: 20% on starting each sprint, 80% at the end if Sarah is happy. If not, she doesn’t pay that sprint and it’s over.
What I’m going to show you next is the sprint-by-sprint breakdown, with the dedicated hours and what was delivered in each one. Real data, no number rounded to look pretty.
Sprint 1: setup + auth + first screen (€780, 1 week)
What I delivered at the end of the first week:
- React Native base project with Expo configured.
- Connection to Supabase with authentication (email + password, with magic link backup).
- First functional screen: login + empty dashboard with the structure of the rest.
- Repository on GitHub with Sarah’s account as owner, me as collaborator.
- 1 Figma mockup of the 3 main screens (login, dashboard, appointments).
Hours breakdown:
| Task | Hours | Cost (at €60/h) |
|---|---|---|
| Project setup, Expo, TypeScript, ESLint, Prettier | 3 | €180 |
| Supabase connection, Auth configuration | 2 | €120 |
| Login screen + empty dashboard | 4 | €240 |
| Figma mockups of the 3 main screens | 2 | €120 |
| Initial meeting + review with Sarah + adjustments | 2 | €120 |
| Total sprint 1 | 13 h | €780 |
What Sarah paid at the end of week 1: €780 (20% on starting + 80% on being happy with the delivery). Sarah saw the app on her iPhone, saw the mockups, made 3 small comments, and paid.
What this sprint did NOT include (and why): appointment management, chat, statistics, everything that comes next. This is what confuses clients the most: an app is not delivered all at once, it’s delivered sprint by sprint, and each sprint has a specific cost and deliverable. It’s not “I charge you €5,000 and I deliver it in 2 months”. It’s “I charge you €780 this week, €840 the next, €720 the next, etc., and at the end of sprint 6 you have the complete app”.
Sprint 2: appointment management (€840, 1.5 weeks)
What I delivered at the end of the second week + half:
- Appointments screen with visual calendar (day, week, month).
- View by treatment, professional and room.
- Create, edit, cancel appointments from the app.
- Real-time sync with Supabase (if two receptionists modify at the same time, it updates for both).
- Push notification when there’s a new appointment (prepared for sprint 3, activated in sprint 4).
Hours breakdown:
| Task | Hours | Cost |
|---|---|---|
| Appointments database design (Postgres) | 2 | €120 |
| Visual calendar screen with day/week/month navigation | 6 | €360 |
| Create/edit/cancel appointments logic | 3 | €180 |
| Real-time sync with Supabase | 2 | €120 |
| Manual testing + adjustments | 1 | €60 |
| Total sprint 2 | 14 h | €840 |
The most expensive part of this sprint was the calendar screen. A calendar screen with day/week/month, fluid navigation, and real-time update, takes between 6 and 8 hours if you already have the database well done. If the screen is “naked” (without drag, without resizing, without filters), it can be done in 3-4 hours, but Sarah wanted something usable, not something minimal.
Sprint 3: patient file + clinical history (€900, 1.5 weeks)
The most delicate of the whole app, because of the GDPR issue. This is where a low-cost quote starts to fail, because most junior freelance developers don’t know how to do this right.
- Patient file screen with all data (personal, allergies, notes).
- Encrypted clinical history (Postgres with pgcrypto, only accessible for authenticated users).
- GDPR compliance: explicit consent, right of access, right of deletion, right of portability.
- Audit log: every access to a history is recorded (who, when, which patient).
Hours breakdown:
| Task | Hours | Cost |
|---|---|---|
| Patient and history database design | 3 | €180 |
| Patient file screen | 4 | €240 |
| Clinical history screen with encryption | 3 | €180 |
| GDPR implementation (consent, rights, logs) | 3 | €180 |
| Testing + adjustments | 2 | €120 |
| Total sprint 3 | 15 h | €900 |
GDPR is not optional, and most freelancers charging €1,000 for an app don’t implement it. I know because I’ve had to fix 3 “cheap” apps that were in production without GDPR compliance, and the minimum fine for this is €20,000 (which is what can hit Sarah if she doesn’t comply). Implementing GDPR well costs 3-4 extra hours. Not doing it costs €20,000 in fines plus the cost of redoing the app. The decision is easy.
Sprint 4: push notifications + email confirmation (€660, 1 week)
Once appointments work, you have to reduce no-shows. Push notifications are the most effective tool for this.
- Push notification 24 hours before each appointment.
- Push notification 2 hours before each appointment.
- Confirmation email when the appointment is created.
- Cancellation email when it’s cancelled.
- APNs (Apple) and FCM (Google) configuration.
Hours breakdown:
| Task | Hours | Cost |
|---|---|---|
| APNs and FCM configuration | 2 | €120 |
| Push send logic according to remaining time | 3 | €180 |
| Confirmation/cancellation email (Resend) | 2 | €120 |
| Testing on real iOS and Android | 1 | €60 |
| Documentation for Sarah | 1 | €60 |
| Total sprint 4 | 9 h | €660 |
This sprint was the shortest, but the one with the most impact on the business. Sarah told me the following week: “Daniel, no-shows have dropped 35% in 7 days. Push notifications are the best investment I’ve ever made”. At 8 appointments/day, 35% fewer no-shows is 2-3 extra appointments per day. At an €80 average ticket, that’s €160-240/day extra. The sprint paid for itself in 2 days.
Sprint 5: real-time revenue statistics (€780, 1.5 weeks)
What Sarah likes most about the app: seeing the day’s revenue in real time from her iPhone, without waiting for the till to close.
- Dashboard with main KPIs: day’s revenue, week, month, comparison with previous period.
- Evolution graphs (revenue per day, per treatment, per professional).
- Filters by date range, professional, treatment.
- Export to CSV for the accountant.
Hours breakdown:
| Task | Hours | Cost |
|---|---|---|
| Revenue database design | 2 | €120 |
| Real-time KPI dashboard | 5 | €300 |
| Evolution graphs with Victory Native | 3 | €180 |
| Filters and CSV export | 2 | €120 |
| Testing + adjustments | 1 | €60 |
| Total sprint 5 | 13 h | €780 |
The most technically complex sprint to date, because real-time graphs on mobile are complicated if you want to do them well. The library I used (Victory Native) has a powerful API but requires a lot of initial configuration.
Sprint 6: patient chat (€720, 1.5 weeks)
The final sprint. What allows the clinic to talk to patients from the app, without giving personal WhatsApps.
- Chat screen with list of conversations.
- Real-time messaging with Supabase Realtime.
- “Typing…” indicator.
- Push notification when a new message arrives.
- Message encryption (optional, activated by default to comply with GDPR).
Hours breakdown:
| Task | Hours | Cost |
|---|---|---|
| Message database design | 1 | €60 |
| Chat screen with conversation list | 3 | €180 |
| Real-time messaging with WebSocket | 4 | €240 |
| Push notifications for new messages | 1 | €60 |
| Testing on iOS, Android, and with 2 simultaneous devices | 2 | €120 |
| Documentation + final delivery | 1 | €60 |
| Total sprint 6 | 12 h | €720 |
The chat was surprisingly fast to do, because Supabase already has the realtime infrastructure set up. If I had had to set up the backend from scratch with Node.js + Socket.io, this sprint would have cost €1,440 and 3 weeks.
The real total breakdown
| Sprint | Hours | Cost | Delivered |
|---|---|---|---|
| 1: Setup + auth | 13 | €780 | Base app, login, mockups |
| 2: Appointment management | 14 | €840 | Complete visual calendar |
| 3: Patients + GDPR history | 15 | €900 | File + encrypted history |
| 4: Push notifications | 9 | €660 | 24h/2h push, emails |
| 5: Revenue statistics | 13 | €780 | Real-time dashboard |
| 6: Patient chat | 12 | €720 | Encrypted messaging |
| Total | 76 h | €4,680 | Complete app in production |
To this you have to add 2 final hours of review and delivery, which I didn’t charge because it was already within sprint 6. Effective cost: 76 hours at €60/h average = €4,680. I quoted Sarah €5,000, but in the end I didn’t charge her the 2 extra hours of review because it didn’t seem fair to me. I charged her €4,680.
Sarah is happy with the app, uses it every day, and no-shows have dropped 35%. The investment paid for itself in 3 weeks just with the reduced no-shows.
What I would cut if the budget were lower
If Sarah had had €3,000 instead of €5,000, this is what I would have cut, in order of importance:
- I would remove the chat (-€720). It’s the most dispensable feature. The team can keep using WhatsApp Business to talk to patients for a while.
- I would remove the advanced statistics (-€360). With a simple dashboard with the day’s KPIs, it’s enough. Evolution graphs can wait.
- I would remove CSV export (-€120). Sarah can copy the data manually once a month for the accountant.
- I would remove message encryption (-€60). The chat could be done without encryption (less secure, but valid for MVP).
With those cuts, the app came out at €3,420 with: appointment management, patient file, clinical history, push notifications, basic statistics and dashboard. Which is 90% of the value of the complete app for 68% of the price. Sprints 5 and 6 could be done later, when the business generates more cash flow.
What I would NEVER cut
There are 3 things that, for less money, I would not cut in an internal management app:
- GDPR compliance of the clinical history. Not complying can cost €20,000 in fines. Cutting this is giving away money.
- Push notifications 24h before each appointment. It’s the feature that has the most impact on the business. Without it, the app isn’t useful.
- Correct database setup. A poorly designed database at the beginning costs 10x more to redo later. Better to invest 5-8 hours here than 50 hours in future sprints fixing problems.
If you want a quote like this for your app
If you have an app idea and want a quote this detailed, write to me at landinowebs@gmail.com or via WhatsApp. I’ll send you a free first analysis in 24-48h, and if we fit, a quote fixed in writing sprint by sprint. No commitment.
And if you want to see the complete Sarah case with screenshots, here: Westside Wellness — case study (under NDA, screenshots available on request).