← Selected work

Yash Jobalia / Project case study

Finance Ledger Everyday finances, connected to the bigger picture.

I built Ledger to connect everyday records with the plans they support. Accounts, transactions, budgets, and goals share a private workspace, with deliberate controls for family collaboration.

  • Next.js
  • React
  • TypeScript
  • Supabase
  • PostgreSQL
  • Prisma
  • Zod
  • Recharts

The public site introduces the product. Financial workspaces require an invited account.

Illustrative workspace · sample data in USD
Finance Ledger

Personal workspace / Monthly overview

Income
$4,200
Expenses
$1,850

A connected account history

  • Income recordedChecking account+$4,200
  • Expenses trackedAcross spending categories−$1,850
  • Transfer to savingsLinked outgoing & incoming records$500
Savings goal / Sample progressPlan a family trip

$1,200 of $3,000 saved · 40%

01 / The engineering problem

Keep the records and the plan connected.

A finance workspace needs more than a list of amounts. A transfer affects two accounts, a budget needs transaction context, and a shared goal needs carefully scoped access. I built the application around these relationships so the interface and the underlying records describe the same activity.

02 / The application experience

Track, plan, and coordinate in one place.

One view of everyday activity

Keep accounts, income, expenses, and transfers together. A connected transaction history gives the account view context, so an amount can be understood alongside the activity behind it.

Planning alongside the records

Budgets and goals sit alongside day-to-day transactions. Members can organize their plans and follow progress within the same application instead of maintaining disconnected sheets.

Personal and shared workspaces

Personal records are scoped to their owner. Workspace membership and permissions control access to shared records, while supported family goals give invited collaborators a focused way to participate.

Account access with visibility

Invitation-based access, optional multi-factor authentication, active-session review, and security history help members understand and manage their account access.

03 / A connected workflow

Follow the money through the workspace.

  1. 01

    Choose the context

    Work in a personal workspace or a shared workspace the account is permitted to access.

  2. 02

    Record activity

    Add income or an expense with its account and category, or record a transfer between accounts.

  3. 03

    Review the records

    Inspect transactions alongside the account balances and history they affect.

  4. 04

    Return to the plan

    Use budgets and goals to organize the next steps, with supported collaboration for shared goals.

04 / Architecture

A clear interface over connected records.

React workspaceNext.js route handlersSupabase Auth identifies the member; server checks establish permitted access.
  1. Validated request
  2. Ownership & workspace checks
  3. Prisma / PostgreSQL operation
  4. Updated records & interface
Financial operations combine input validation, permission checks, and database updates. Related transfer records are saved within a transaction.
Frontend
Next.js App Router, React, TypeScript, and Tailwind CSS for the application interface; Recharts for data visualization.
Backend
Next.js route handlers, Zod validation, and reusable services for transfers, balances, and workspace access.
Identity & data
Supabase Auth and platform services, with PostgreSQL accessed through Prisma.
Delivery
Vercel hosting, with TypeScript, lint, security, API, UI, and production-build checks in the project tooling.

05 / Engineering decisions

Consistency and access are part of the product.

Treat a transfer as one operation

The transfer service creates linked outgoing and incoming records within a database transaction. It locks the affected accounts, rechecks workspace ownership and currencies, and updates balances together.

Check the workspace on the server

Shared access is based on current membership. The server checks ownership and workspace roles before allowing record changes, rather than relying on which controls the interface displays.

Make collaboration explicit

Family goal access checks feature entitlements and accepted membership. Family contributors use their own personal accounts, keeping participation in a goal separate from broad access to another person’s finances.

Keep financial changes traceable

Linked transfer records and balance-history updates connect an operation to its account effects. Audit logging records financial mutations and security-sensitive administrative actions for review.

06 / Verification & demonstrated skills

Build confidence around the records.

The project includes dedicated security, API, and UI test commands alongside type checking, linting, and production builds. Its engineering combines relational data modeling, transaction consistency, authenticated APIs, workspace authorization, and a responsive data-focused interface.

About the live application

The public home and security pages were reviewed for this case study. Technical details also reflect the local implementation. Private financial workflows were not exercised, and this presentation does not imply public registration or unrestricted demo access.