All projects

DailyFlow

Personal budgeting in one number: what you can spend today, updated every day.

PWALive

The problem

Your bank balance doesn't tell you what you can spend today. Part of it is already taken: rent, bills, subscriptions, a big expense a few months away.

Classic budgeting apps ask for categories, charts and time, and many people give up. What was missing was a single answer, always up to date: how much can I spend today without overspending?

The solution

DailyFlow shows one big number: what you can spend today. It takes the year's income, subtracts fixed costs and planned expenses, and divides the rest by the days left until 31 December.

You log an expense with an amount and a type: an everyday one comes out of today's share, an extraordinary one is spread over the remaining days. Salary and bills start from an expected amount, and on the day a reminder asks for the real one.

And if a number surprises you, "How it's calculated" shows every item.

My role

  • I built DailyFlow with the help of AI, using skills and workflows I created myself.
  • I defined the product and the calculation rules: what counts, when, and what happens at year end.
  • I built the calculation engine as a standalone module, with amounts in whole cents and automated tests covering all of it.
  • I designed the database and its security rules: each person sees and edits only their own data.
  • I made the app installable on the phone, readable without a connection, with push reminders for confirmations.
  • I designed the mobile interface: light and dark theme, subtle animations, attention to accessibility.

Stack and timeline

It's built with Next.js and React, in TypeScript. Data, sign-in and security rules live on Supabase (a PostgreSQL database).

The interface uses Tailwind CSS, shadcn/ui components and Motion for animations; TanStack Query keeps data available even offline; Serwist handles the PWA side; Web Push sends the reminders. The calculation engine is tested with Vitest and fast-check, the whole app with Playwright on a phone-sized screen.

The work went in phases: first the engine and its tests, then database and security, sign-in and PWA, the main screens, onboarding and recurring items, notifications and year-end closing, and finally polish.

Result

DailyFlow is complete: every feature planned for the first version is in place, from first launch to the year-end summary. Every number on screen comes from the calculation engine, and automated tests check it.

Today's number appears in under a second, and it installs on the phone like a real app.

The screens

Here's DailyFlow on a phone: first the highlights, then the everyday screens and the ones that keep income and expenses in order. The images use made-up sample data. Scroll to see them all, tap an image to enlarge it.

  • DailyFlow image in comic style on a light blue background: the title "Un numero al giorno, e sai dove sei." (One number a day, and you know where you stand), four highlights (how much you can spend today, expenses logged in seconds, salary confirmation, leftovers carried to tomorrow) and two phones with the main screen (€63.25 available today) and the keypad for a €12.50 expense.
  • Four DailyFlow screens from the same day, with the time in a yellow box: at 8:10 today's available amount (€63.25), at 13:05 a €12.50 lunch expense, at 15:30 the salary confirmation, and the next morning a higher available amount (€83.70).
  • DailyFlow image in comic style on a pink background: the title "Spese fisse e previste, già nel conto." (Fixed and planned expenses, already counted), four highlights (fixed income and expenses, big expenses spread to the end of the year, the calculation explained, installable on the phone) and two phones with the fixed items list and the "How it's calculated" panel.
  • Four DailyFlow screens: the fixed items (salary, rent, utilities, gym, streaming), a new planned expense "Regali di Natale" (Christmas presents) of €250, the expense history by day, and the panel to match the balance with the bank's.

Video music: "Almost Bliss" by Kevin MacLeod (incompetech.com), licensed under CC BY 4.0. The track was shortened and faded.

Stack

  • Next.js
  • React
  • TypeScript
  • Supabase
  • Tailwind CSS
  • shadcn/ui
  • Motion
  • TanStack Query
  • Serwist
  • Zod
  • Web Push
  • Vitest
  • fast-check
  • Playwright

Need something similar?

Get in touch