
- Project
- Daniela
- Sector
- Own product
- Services
- Personal app, AI assistant, Installable PWA
- Year
- 2026
A personal assistant that brings routine, money, habits and goals into one place, and points to the next step.
The life of someone running several projects ends up scattered: the routine in one app, the money in a spreadsheet, the goals in a notebook, training in another app and studies in their head. Each tool works on its own and none of them can say whether the week went well.
Daniela was built to be the place where those things meet: a single-user app, with no public sign-up, where routine, finances, body, goals and study data live together. And an assistant reads all of it to point to the next step.
The challenge
- Bring together domains that usually live apart (money, routine, habits, goals, travel, studies, body and spiritual life) without turning into an impossible menu.
- Give the assistant enough context for the advice to be useful rather than generic.
- Be quick to open and use on the phone, several times a day, like an installed app.
- Keep personal data isolated: one user, no open sign-up, with row-level isolation in the database.
The solution
The app is organised by areas of life, each with the screens that area actually needs: finances has transactions, budget, debts, goals and reports; routine has calendar, tasks and habits; body has the day's workout, history and meal plan; plus goals, travel, achievements, studies and spiritual life. Numbers become charts where they help you decide, not where they just decorate.
Daniela is the layer that reads that data and talks: she answers in the context of what is recorded, not in a vacuum. It runs as an installable PWA, with single-user authentication and isolation by `user_id` in the database. The app is private by construction, not by configuration.











Result
In daily personal use.
Stack
- Next.js 16
- React 19
- TypeScript
- Tailwind v4
- Supabase
- Claude (Anthropic)
- PWA
Private by construction
Once the account is created, sign-up is disabled in the authentication provider itself: the app accepts one user and no more. Every row in the database carries its owner and the access policies block the rest. It is not a setting you can forget to switch on.




