DEV Community

Emil
Emil

Posted on

I Didn’t Build an Expense Tracker.

I Built a Diary That Knows My Money Better Than I Do.

Most expense trackers ask you to trust them.

“Connect your bank account.”
“Grant read access.”
“We promise it’s safe.”

That never sat right with me.

So I built something different.

Not an expense tracker.
A personal diary - written in transactions.

You can access the open source application here - https://github.com/emil-ep/xpense-tracker-ui

A short demo here

Your Bank Statement Is the Truth. Everything Else Is Noise.

I realized something simple:
Your bank statement is already perfect.

It’s:
Accurate
Verifiable
Immutable
Generated by the bank itself

So instead of asking users for credentials, tokens, or permissions…

👉 My app takes your bank statement as input. That’s it.

You download the statement from net banking.
You upload it.
No credentials. No APIs. No “trust us” nonsense.

Security by design, not by disclaimer.

It Reads Your Statement Like a Human Would

Once uploaded, the app:

  • Parses the statement
  • Understands transactions
  • Automatically categorizes expenses

But here’s where it stops being “just finance”.

Every Transaction Tells a Story

A ₹2,350 transaction isn’t just “Medical”.

It might be:

  • A hospital visit
  • A pharmacy run
  • A lab test on a stressful day

So I added context.

Tags that Learn

You tag a transaction once:

“Swiggy – Dinner with friends”

From that point on, every similar transaction is auto-tagged.

The diary learns your language.
Not the other way around.

Attach Memories. Not Just Receipts.

Each expense can have:

  • Documents
  • Reports
  • Bills
  • Notes

A medical expense can carry:

  • The prescription
  • The lab report
  • A note about what actually happened

Suddenly, your expenses aren’t rows in a table.
They’re moments in time.

That’s when it hit me:

This isn’t an expense tracker.
It’s a timeline of my life — backed by money.

Search Your Past Like You’d Search Your Mind

You can search by:

  • Transaction
  • Tag
  • Custom notes

Want to find:

  • Every rent payment?
  • Insurance premiums?
  • Salary credits?
  • Medical expenses for a specific year?

It’s all there.

Which accidentally makes something else very easy…

Taxes Become Boring (In a Good Way)

When salary credits, rent payments, insurance premiums, and medical expenses are already:

  • Categorized
  • Tagged
  • Searchable
  • Documented

Tax calculation stops being painful.

  • No guesswork.
  • No “I think I paid this”.
  • Just facts.

Why I Built This

I didn’t want:

  • Another dashboard
  • Another chart
  • Another app asking for my bank credentials

I wanted:

  • Control
  • Context
  • Clarity

So I built a system where money is data, but life is the story.

It Runs Where You Decide. Even On Your Machine.

One more thing I cared deeply about: ownership.

This app doesn’t need:

  • A SaaS account
  • A cloud subscription
  • Someone else’s server holding your financial history

You can run the entire application on-prem.

One docker-compose up
And the diary lives on your machine.

No bank data transmitted to a SaaS server.
No third-party storage.
No “we’ll take care of it”.

Your bank statement stays exactly where it should — with you.

For some people, this is a deployment option.
For me, it was a non-negotiable design principle.

Why This Matters

Money data is deeply personal.

If a system requires you to upload it to someone else’s infrastructure,
it has already failed the trust test.

This one doesn’t.

If You’re Building Side Projects…

Here’s the lesson I learned:

The most interesting products aren’t about features.
They’re about reframing a boring problem into something human.

This one started as an expense tracker.
It became a diary.

And honestly —
I don’t think I can go back.

Top comments (0)