Articles
April 2026

How I Built Two Apps Without a Development Team

A plain-English explanation of how Holdie and Shelfie are built, what services power them, and what it would take to grow them further.

Holdie and Shelfie are modern web applications that also work as mobile apps when added to your home screen. They were designed, coded, and iterated entirely through conversation with Claude Code, Anthropic's AI coding assistant, which wrote and edited all the code, managed deployments, and debugged issues in real time. No traditional development agency or team was involved.

Infrastructure and Hosting

The domain danielbridges.me is registered through Namecheap and points to Netlify, a hosting platform that serves all three sites (the personal site, Holdie, and Shelfie) from a single deployment. Every time a change is made, all three sites are built and published simultaneously in under 30 seconds. Netlify also handles routing rules that ensure the apps behave correctly when users navigate directly to a URL or refresh the page.

The Backend: Supabase

Each app has its own dedicated backend powered by Supabase, a cloud platform that provides three key things: a PostgreSQL database to store all the data, a user authentication system handling sign-up, email confirmation, sign-in, and sign-out, and Edge Functions, which are small pieces of server-side code that run securely in the cloud when needed.

Supabase enforces Row Level Security, meaning each user can only ever see and interact with their own data, even though everyone shares the same underlying database. The admin view in Holdie works around this through a special privileged database function that aggregates data without exposing individual users.

External Data Sources

Holdie connects to two external data sources. Stock and cryptocurrency prices are fetched automatically for supported holdings using a financial data API, and New Zealand property value estimates are pulled from Homes.co.nz for property holdings. Currency conversion rates are sourced from ExchangeRate-API, allowing all values to be displayed and compared in NZD regardless of the currency they were entered in.

Shelfie uses the Claude API in two ways: to read a photograph of a cookbook index page and extract all the recipe names and page numbers from it, and to understand a natural-language search query like "what can I make with chicken tonight?" and match it intelligently against the user's indexed recipes.

What It All Costs to Run

All services are currently running on free or very low-cost tiers. Netlify's free tier covers the hosting. Each Supabase project has a free tier that covers a small number of users and modest data volumes. The Claude API is pay-per-use, currently negligible given usage levels. This means both apps can run at essentially zero cost until they reach meaningful user numbers.

What Would Come Next

Transactional email (welcome messages, snapshot reminders, inactivity nudges) would most likely be handled by adding Resend or SendGrid alongside Supabase's existing auth emails. These services integrate cleanly with Supabase Edge Functions, so something like an automated email when a user hasn't logged in for 30 days would be a relatively small addition.

Payments and subscriptions would most likely use Stripe, the industry standard for this kind of app. A typical setup would see Stripe handle the payment UI and billing logic, with a Supabase Edge Function acting as the bridge between Stripe and the app's database, unlocking premium features when a subscription is active and revoking them if it lapses. Stripe also handles trials, annual vs monthly billing plans, and customer portal pages where users manage their own billing, all out of the box.

Push notifications, useful for reminding Holdie users to take a snapshot, would use the Web Push standard, which works on both desktop and mobile for apps installed to the home screen. This can be self-hosted through Supabase or handled by a service like OneSignal.