Report produced by Claude Code

TracknSave — Technical & Product Report

Report Date: 2026-06-25 · Version 1.0 · Prepared from codebase, migration history, PRD, and change logs

A personal finance management web application designed for everyday users with no accounting background — fast, clean, effortless daily financial tracking.

Laravel 13 + Filament 4Stack
Single admin userDeployment model
fa / enLanguages
8/8 tests passingTest suite
01

Project Overview

TracknSave is a personal finance management web application designed for everyday users who have no accounting background. Its central purpose is to make daily financial tracking fast, clean, and effortless — not to replace professional accounting software.

The application runs as a local/LAN web app with a single administrator user. All data stays on the user's machine; there is no cloud dependency.

02

Purpose and Main Goals

  • Give users a clear picture of where their money is at any moment
  • Allow extremely fast transaction registration (minimum fields, smart defaults)
  • Track debts and loans between people
  • Manage multiple bank accounts, wallets, and cash simultaneously
  • Keep upcoming payments visible through reminders
  • Provide simple reports for monthly income and expense review
  • Allow data export and backup for peace of mind
The application is explicitly not an accounting system, ERP, or payroll tool.
03

Target Audience

  • Individuals managing personal finances
  • Families tracking shared expenses
  • Small-business owners needing simple income/expense records
  • Anyone who currently uses a spreadsheet or notebook to track money

No accounting knowledge is required. The UI uses plain human-friendly language throughout, avoiding all accounting terminology.

04

Technology Stack

LayerTechnologyVersion
Backend languagePHP^8.3
Web frameworkLaravel^13.8
Admin UIFilament4.11
DatabaseMySQL(via XAMPP)
DeploymentLocalhost / LANXAMPP on Windows
Settings storagespatie/laravel-settings^3.8
Persian calendarmorilog/jalali^3.5
Excel exportphpoffice/phpspreadsheet5.7
PDF exportbarryvdh/laravel-dompdf^3.1
TestingPHPUnit^12.5
Note: The PRD specified Filament v3, but the project uses Filament v4 (required by Laravel 13 compatibility). Several v4-specific API patterns are in use throughout the codebase.
05

Application Language and Locale

  • Primary UI language: Persian (Farsi), fully RTL
  • Secondary language: English (switchable in Settings)
  • Calendar support: Jalali (Persian) and Gregorian — user-selectable
  • Currency: Configurable — 14 currencies supported; default IRR (Rial); symbol position (before/after/none) is adjustable
  • Digit display: Persian Eastern Arabic digits (۰–۹) or Western digits, controlled by a JavaScript MutationObserver that converts all rendered numbers on every Livewire DOM update
06

Modules Built

Module 1 — Application Settings

LanguageCalendar typeCurrency & symbol Theme colorFinancial month start dayFont/digit style Week start dayBackup settings

Module 2 — Financial Spaces

Separate financial environments (Personal, Family, Business, etc.); each space has its own accounts, transactions, and records. 3 default spaces seeded; user can add custom spaces.

Module 3 — Accounts & Wallets

  • 6 account types: Cash, Bank Account, Credit Card, Digital Wallet, Savings, Custom
  • Live balance calculation via AccountBalanceService (never hardcoded)
  • Credit cards: credit limit, used amount, available amount, billing cycle dates, due date, minimum payment
  • Bank accounts: overdraft limit, bank name, account number
  • Summary cards at top of Accounts list page; tabbed layout by account type

Module 4 — Banks

Separate bank entity (Persian name, English name, SWIFT code, country, logo); linked to accounts.

Module 5 — Categories

Two-level hierarchy (parent → subcategory); types: Expense / Income / Both; Font Awesome icon support; 18 default expense + 6 income categories seeded; soft delete with protection for used categories.

Module 6 — People / Contacts

Name, mobile, email, relationship type, notes, active/inactive. Person Transactions Report shows all transactions linked to a person with income/expense/transfer/adjustment totals.

Module 7 — Transactions

Types

Expense, Income, Transfer (between accounts), Adjustment/Reconciliation.

Behavior

TransactionService updates balances on create/edit/delete; type locked after creation; optional file attachment, reminder creation, person linkage, transfer fee.

Module 8 — Debts & Loans

Tracks who owes the user and whom the user owes; partial payment history via separate debt_payments table; due dates, settlement status, linked to a Person record.

Module 9 — Reminders

Title, date/time, repeat pattern (none/daily/weekly/monthly/yearly), status, notes; can be linked to Transaction, Person, Account, or Debt. Default date pre-filled to today at 09:00. Upcoming pending reminders shown on dashboard.

Module 10 — Notes

Quick financial notes with optional title, body, pinned state; can be linked to Transaction, Person, Account. Pinned notes appear first; recent notes shown on dashboard.

Module 11 — Dashboard (V2)

  • Account Slider: horizontally scrollable cards (name, type badge, balance, credit usage bar, bank name, account number, financial space)
  • Notes & Reminders section: last 5 pinned/recent notes + upcoming reminders; quick-add modals
  • Category Quick Transaction: two rows (Expense/Income) of category buttons opening a pre-filled modal
  • Latest Transactions: last 10, color-coded by type
  • Theme-aware account slider gradient using Filament CSS custom properties; full RTL layout with Alpine.js; V1 backup accessible at /admin/dashboard-v1

Module 12 — Reports

  • Monthly Report: filterable by year, month, account; income total, expense total, net balance, category breakdown table
  • Person Transactions Report: per-person summary with income/expense/transfer/adjustment totals and full history

Module 13 — PDF & Excel Export

Export transactions to Excel (date range + type filter) via ExportService using PhpSpreadsheet; single transaction PDF receipt (RTL Blade template) using DomPDF, including app name, transaction ID, date, type, account, category, amount, linked person, notes, export timestamp.

Module 14 — Backup & Restore

  • Manual backup: mysqldump to ZIP archive
  • Backup file list with name, date, size; download and delete per file
  • Restore from list (with safety-backup step, progress steps shown live) or upload-and-restore for external ZIP/SQL files
  • Auto-backup scheduling UI: frequency, time, day, trigger mode (on_open / on_logout / scheduled)
  • Windows .bat file download for Task Scheduler integration
  • Configurable storage path with preset selector and path test button; backup retention count setting

Module 15 — Help / Guide

Dynamic sidebar help section backed by Blade HTML pages; Settings guide page in Persian; shared Blade layout and centralized help.css; new help pages added via config/help.php registry.

Module 16 — About Page

Static Persian RTL page with app branding, logo, version, and technology details. Accessible at /admin/about.

07

Smart / Contextual Features

  • Settings-driven date display: all dates across forms, tables, widgets, reports, exports, and PDF receipts switch between Jalali and Gregorian based on a single settings value
  • Live balance calculation: never stored as a simple field that can drift out of sync
  • Transaction type lock: prevents accidental balance corruption once saved
  • Currency symbol auto-sync: selecting a currency instantly auto-fills the correct symbol via a JS-driven hook
  • Theme color from DB: the panel's primary color is read from settings on every request
  • Persian digit conversion: MutationObserver converts rendered numbers on every Livewire DOM update, including morphed text nodes
  • Category-based quick transaction: dashboard buttons pre-select category and suggest the most-recently-used account
  • Soft delete protection: categories and people linked to transactions are soft-deleted, preserving referential integrity
  • Inactive record access in forms: edit form keeps linked records selectable even if deactivated since
08

UI/UX Design Highlights

  • Full RTL layout (Persian is right-to-left); dir="rtl" enforced at HTML root and per-component level
  • All CRUD resources open as modal popups — no full navigation for simple creates/edits
  • Forms split into clear sections: essential fields visible, advanced fields collapsible
  • helperText on fields explains each input in plain Persian for non-accountant users
  • Account list uses summary cards at top + tabbed table below
  • Dashboard V2 uses a horizontally-snapping account slider with full Alpine.js interaction
  • Font Awesome 6.5.0 hosted locally with CDN fallback — works fully offline/LAN
09

Data Model Summary

TableKey FieldsNotes
settingskey/value pairsspatie/laravel-settings
financial_spacesuuid, name, icon, is_defaultSoft delete
banksuuid, name_fa, name_en, swift_codeSoft delete
accountsuuid, name, type, current_balance, credit_limit, bank_id6 types; soft delete
categoriesuuid, name, type, parent_id, icon2-level; soft delete
peopleuuid, name, mobile, email, relationshipSoft delete
transactionsuuid, type, amount, account_id, category_id, person_id, transaction_date, attachment4 types; soft delete
debtsuuid, person_id, amount, type, due_dateSoft delete
debt_paymentsuuid, debt_id, amount, paid_atPayment history
remindersuuid, title, remind_at, repeat, status, polymorphic linksSoft delete
notesuuid, title, body, is_pinned, polymorphic linksSoft delete

All tables use UUID primary keys, created_at, updated_at, and deleted_at (soft deletes).

10

Technical Architecture Summary

The application follows a standard Laravel MVC + Filament Admin Panel architecture:

LayerDescription
app/Models/Eloquent models with $fillable, soft deletes, UUID keys, and relationships
Filament ResourcesAdmin CRUD interfaces for each entity; form schema, table columns, actions
Filament PagesCustom pages for dashboard, reports, settings, backup, help
Filament WidgetsDashboard widgets (account balances, financial summary)
ServicesTransactionService, AccountBalanceService, ExportService, BackupService
Support classesAppSettings, AppDate, AppLocale, TextNormalizer
Settingsspatie/laravel-settings typed classes: GeneralSettings, BackupSettings
MiddlewareSetLocale.php — applies saved language setting on every web request
Translationsresources/lang/en.json, fa.json

There is no separate API layer, no queue-driven processing, and no front-end build step for the admin panel (Filament ships pre-compiled CSS/JS).

11

Limitations and Intentional Exclusions

Excluded by design (v1 scope)

  • No double-entry accounting or ledger system
  • No cloud sync, multi-device, or multi-user support
  • No native mobile app
  • No automatic exchange rates (currencies are manual)
  • No OCR or AI-based receipt scanning
  • No complex role/permission system
  • No ERP, payroll, tax, or inventory features
  • No built-in push/email notifications (reminders are in-app only)
  • No recurring transaction automation
  • No bank import or OFX/CSV import

Known limitations

  • The Family Fund / Rotating Pool module was built and then removed from the application; it does not exist in the current codebase
  • Auto-backup scheduling requires manual Windows Task Scheduler setup; no native daemon or cron within the app itself
  • Reports are limited to monthly and per-person report; no category-drill-down charts, account comparison reports, or trend charts
  • File attachments rely on Filament's default file storage; no dedicated attachment management UI
  • The application has a single admin user; no registration or multi-user access control
12

Completed Features and Pending Items

Completed
  • Settings (language, calendar, currency, theme, digits)
  • Financial Spaces
  • Accounts & Wallets (6 types, live balance, credit cards)
  • Banks
  • Categories (2-level, Font Awesome icons, seeded defaults)
  • People / Contacts
  • Transactions (4 types, balance updates, type lock)
  • Debts & Loans (with partial payment history)
  • Reminders
  • Notes (pinnable, linked to entities)
  • Dashboard V2 (account slider, quick-add, category launch)
  • Monthly Report & Person Transactions Report
  • PDF & Excel Export
  • Backup & Restore (manual + scheduling UI)
  • Help / Guide module & About Page
  • RTL layout and Persian digit conversion
  • Feature test suite (8 tests, all passing)
Not Built / Removed
ItemStatus
Family Fund / Rotating PoolRemoved — not in codebase
Recurring transactionsNot built
App lock / PIN securityNot built
Budget / spending limits per categoryNot planned for v1
Category-level reports (charts, trends)Not built
Account reconciliation as standalone moduleNot built (partially covered)
Smart account suggestion in main formPartially built (dashboard only)
13

Public Marketing Description (Persian)

TracknSave — مدیریت مالی شخصی، ساده و سریع

TracknSave یک نرم‌افزار مدیریت مالی شخصی است که برای افرادی طراحی شده که می‌خواهند امور مالی روزمره خود را بدون پیچیدگی‌های حسابداری دنبال کنند. با TracknSave می‌توانید در چند ثانیه یک تراکنش ثبت کنید، موجودی همه حساب‌هایتان را یکجا ببینید، بدهی‌ها و طلب‌ها را پیگیری کنید و از یادآورهای مالی مهم غافل نشوید.

این برنامه با پشتیبانی کامل از زبان فارسی، تقویم جلالی، و نمایش ارقام فارسی، تجربه‌ای کاملاً بومی برای کاربران ایرانی فراهم می‌کند. TracknSave بر روی سیستم شما اجرا می‌شود؛ بدون نیاز به اینترنت، بدون ذخیره‌سازی اطلاعات در فضای ابری، و با امکان تهیه پشتیبان کامل از داده‌ها در هر زمان.