<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/i-built-tinydebt-a-minimal-debt-tracking-app-no-backend-instant-syncing--85ivzwyde" -->

---
title: I built TinyDebt — a minimal debt-tracking app (no...
description: A developer shares the technical decisions behind building TinyDebt, a minimal debt-tracking mobile app. The app uses React Native with Expo, stores data...
canonical: https://daily.dev/posts/i-built-tinydebt-a-minimal-debt-tracking-app-no-backend-instant-syncing--85ivzwyde
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: I built TinyDebt — a minimal debt-tracking app (no backend, instant syncing) | daily.dev
og:description: A developer shares the technical decisions behind building TinyDebt, a minimal debt-tracking mobile app. The app uses React Native with Expo, stores data...
og:url: https://daily.dev/posts/i-built-tinydebt-a-minimal-debt-tracking-app-no-backend-instant-syncing--85ivzwyde
og:image: https://api.daily.dev/og/posts/85IvzwYDE.png
og:image:alt: I built TinyDebt — a minimal debt-tracking app (no backend, instant syncing)
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# I built TinyDebt — a minimal debt-tracking app (no backend, instant syncing)

**[Vladislav Siumbeli](https://daily.dev/sources/ezh33lu6a37km1sfscwix)** · [@vladsiu](https://daily.dev/vladsiu) · 2 min read · 453 upvotes · 132 comments

## Summary

A developer shares the technical decisions behind building TinyDebt, a minimal debt-tracking mobile app. The app uses React Native with Expo, stores data locally using AsyncStorage with optional Supabase backups, and requires no user accounts or backend. The local-first architecture enables instant actions, offline functionality, and fast performance. The UI prioritizes simplicity with neutral colors and minimal screens, while the data model uses serializable TypeScript types for easy storage and migrations.

## Content

For the last few weeks I’ve been building TinyDebt, a tiny app for tracking debts, loans, and repayments. I wanted to share some of the technical decisions behind it, in case it’s helpful to anyone building small, focused apps.

### 🧩 Why I built it

I kept forgetting small debts between friends, and the existing apps felt heavy: sign-ups, ads everywhere, complex finance features.

I wanted something that:
- opens instantly
- lets you add a debt in 3–5 seconds
- works offline
- stays simple forever

So TinyDebt was born.

### ⚙️ Tech stack

TinyDebt is intentionally lightweight:
- React Native (Expo) for mobile
- Local-first approach with AsyncStorage
- No backend — data lives on the device (only Firebase for backups)
- TypeScript everywhere
- Minimal UI with custom components instead of UI libraries
- App Store and Google Play packaging via EAS build

No user accounts, no analytics, no external dependencies except essentials.

### 🗂️ Data model

Every debt entry looks like:

```
type Debt = {
  id: string;
  name: string;
  amount: number;
  type: "owed" | "borrowed";
  createdAt: number;
  history: Repayment[];
};

type Repayment = {
  amount: number;
  date: number;
};
```

Keeping everything serializable makes storage and migrations effortless.

### 🧠 Local-first UX

TinyDebt doesn’t rely on a server, so:
- actions apply instantly
- there’s no loading or “syncing” states
- the app feels fast even on older phones

For a small personal utility, this fits perfectly.

### 🎨 UI philosophy

I wanted the app to feel “calm”:
- simple neutral colors
- no charts or dashboards
- no clutter — one screen does 90% of the work
- accessible tap targets for quick entry

Small apps don’t need complex visuals to be useful.

### 📦 Publishing
- Live on [App Store](https://t.co/q3M8L1SQ8r)
- Live on [Google Play](https://play.google.com/store/apps/details?id=com.vladislavsiumbeli.tinydebt)

But I want to keep the scope tiny — that’s the whole point.

### 🙌 Feedback welcome
If you build mobile apps or have thoughts on local-first utilities, I’d love to hear feedback. Always improving.

## Community discussion

Top comments from developers on daily.dev.

**@stratisderm** · 7 upvotes

> I installed it. Seems very friendly and straight forward so far. Great work!

**@steve\_walson** · 4 upvotes

> good job; now create a website with PWA.

**@telvinteum** · 2 upvotes

> Love the interface bro keep it up

**@kenobi** · 2 upvotes

> Great work, a very user friendly UI/UX, simple yet effective, just a question will it ever be available on Play Store for Android devices

**@mkubiaki84** · 2 upvotes

> Great approach! Sometimes, the simplier the better.

---

Tags: [#local-first](https://daily.dev/tags/local-first), [#mobile](https://daily.dev/tags/mobile), [#react-native](https://daily.dev/tags/react-native), [#typescript](https://daily.dev/tags/typescript)

[View this post on daily.dev](https://daily.dev/posts/i-built-tinydebt-a-minimal-debt-tracking-app-no-backend-instant-syncing--85ivzwyde)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/i-built-tinydebt-a-minimal-debt-tracking-app-no-backend-instant-syncing--85ivzwyde","headline":"I built TinyDebt — a minimal debt-tracking app (no backend, instant syncing)","text":"A developer shares the technical decisions behind building TinyDebt, a minimal debt-tracking mobile app. The app uses React Native with Expo, stores data locally using AsyncStorage with optional Supabase backups, and requires no user accounts or backend. The local-first architecture enables instant actions, offline functionality, and fast performance. The UI prioritizes simplicity with neutral colors and minimal screens, while the data model uses serializable TypeScript types for easy storage and migrations.","url":"https://daily.dev/posts/i-built-tinydebt-a-minimal-debt-tracking-app-no-backend-instant-syncing--85ivzwyde","datePublished":"2025-11-26T11:31:10.652Z","dateModified":"2026-05-14T02:13:21.758Z","author":{"@type":"Person","name":"Vladislav Siumbeli","url":"https://daily.dev/vladsiu","image":"https://media.daily.dev/image/upload/s--GalxSgjS--/f_auto/v1757768087/avatars/avatar_ezH33Lu6a37KM1SfsCwIx?_a=BAMClqZW0","description":"I build productivity apps ➡️ https://vladsiu.com","worksFor":{"@type":"Organization","name":"Hampr","logo":"https://res.cloudinary.com/daily-now/image/upload/s--_DEoREBB--/f_auto/v1725352678/companies/hampr"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":4690}},"image":"https://media.daily.dev/image/upload/s--p_u7iD12--/f_auto/v1764156673/posts/85IvzwYDE?_a=BAMAK+ZW0","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":453},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":132}],"comment":[{"@type":"Comment","text":"I installed it. Seems very friendly and straight forward so far. Great work!","datePublished":"2025-11-27T17:09:31.917Z","url":"https://daily.dev/posts/85IvzwYDE#c-bWtn4I5KY","author":{"@type":"Person","name":"Stratis Dermanoutsos","url":"https://daily.dev/stratisderm","image":"https://media.daily.dev/image/upload/s--jK4_tSAa--/f_auto/v1763060433/avatars/avatar_hZjp22d684nHP4c9Hislh?_a=BAMAK+ZW0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":7}},{"@type":"Comment","text":"good job; now create a website with PWA.","datePublished":"2025-11-28T16:36:52.802Z","url":"https://daily.dev/posts/85IvzwYDE#c-91b0zKGQ1","author":{"@type":"Person","name":"Steve Walson","url":"https://daily.dev/steve_walson","image":"https://media.daily.dev/image/upload/s--hj7O3oCZ--/f_auto/v1725307752/avatars/avatar_ZpuQcLfXZNiDV8o8bzevk"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":4}},{"@type":"Comment","text":"Love the interface bro keep it up","datePublished":"2025-12-02T21:37:32.363Z","url":"https://daily.dev/posts/85IvzwYDE#c-ODxDezCYx","author":{"@type":"Person","name":"TELVIN TEUM","url":"https://daily.dev/telvinteum","image":"https://media.daily.dev/image/upload/s--Xm3EENwc--/f_auto/v1764264817/avatars/avatar_fHXKQsFKEpHqADEmpsXk2?_a=BAMAK+ZW0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2}},{"@type":"Comment","text":"Great work, a very user friendly UI/UX, simple yet effective, just a question will it ever be available on Play Store for Android devices","datePublished":"2025-12-01T14:32:01.663Z","url":"https://daily.dev/posts/85IvzwYDE#c-Ef2K5hOsG","author":{"@type":"Person","name":"Obi-Wan Kenobi","url":"https://daily.dev/kenobi","image":"https://media.daily.dev/image/upload/s--525bY6F---/f_auto/v1713785608/avatars/avatar_L1IHK1mJfqlqReZJotrsa"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2}},{"@type":"Comment","text":"Great approach! Sometimes, the simplier the better.","datePublished":"2025-12-08T13:18:20.985Z","url":"https://daily.dev/posts/85IvzwYDE#c-sd0im5GFW","author":{"@type":"Person","name":"Marcelo Kubiaki dos Santos","url":"https://daily.dev/mkubiaki84","image":"https://lh3.googleusercontent.com/a/ACg8ocIZl0DHJalJZlQOZ1aqwXrauNTvqMkQQRCVmIC0K7AOPeziePo=s96-c"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2}}],"isPartOf":{"@type":"WebPage","url":"https://daily.dev/sources/ezh33lu6a37km1sfscwix","name":"Vladislav Siumbeli"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Vladislav Siumbeli","item":"https://daily.dev/sources/ezh33lu6a37km1sfscwix"},{"@type":"ListItem","position":3,"name":"I built TinyDebt — a minimal debt-tracking app (no backend, instant syncing)"}]}
```

