## Summary Add a labeling system for transactions that differs from categories in that labels are ephemeral and created on-the-fly when assigned (no pre-creation required). A transaction can have multiple labels (many-to-many relationship), and labels can be used for filtering in the transaction table and as actions in automation rules. <img width="1372" height="484" alt="image" src="https://github.com/user-attachments/assets/fd342b11-dafb-44ed-b818-578e1ea856e6" /> <img width="1373" height="613" alt="image" src="https://github.com/user-attachments/assets/aa5cfb8b-50b7-4101-a872-54904924f234" /> <img width="1035" height="594" alt="image" src="https://github.com/user-attachments/assets/ffa946b2-b01f-496b-8cb8-ab55ab5b79ed" /> ## Changes ### Backend (Laravel) - Add `labels` table with user_id, name, color, and soft deletes - Add `label_transaction` pivot table for transaction-label many-to-many - Add `automation_rule_labels` pivot table for automation rule-label many-to-many - Create Label model with relationships to User, Transaction, and AutomationRule - Add LabelController for CRUD operations (returns JSON for on-the-fly creation) - Add LabelSyncController for frontend sync - Add LabelPolicy for authorization - Update TransactionController to handle bulk label updates - Update AutomationRuleController to handle label actions - Add validation for label_ids in transactions and automation rules ### Frontend (React/TypeScript) - Add Label type and color utilities - Add labels table to IndexedDB (Dexie version 6) - Create label-sync service with findOrCreate functionality - Create LabelCombobox component with multi-select and create-on-type - Add labels column to transactions table - Add labels filter to transaction filters - Add bulk label assignment in bulk actions bar - Add labels action in create automation rule dialog - Update rule engine to include labels in evaluation results ## Testing - 11 feature tests for label CRUD - 3 tests for label sync - All 241 feature tests pass ## Screenshots N/A - UI changes can be reviewed in browser |
||
|---|---|---|
| .cursor | ||
| .github/workflows | ||
| app | ||
| bootstrap | ||
| config | ||
| database | ||
| docker | ||
| public | ||
| resources | ||
| routes | ||
| src/lib/crypto | ||
| storage | ||
| tests | ||
| traefik | ||
| .editorconfig | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .php-cs-fixer.dist.php | ||
| .prettierignore | ||
| .prettierrc | ||
| Dockerfile | ||
| LICENSE.md | ||
| README.md | ||
| artisan | ||
| boost.json | ||
| bun.lock | ||
| components.json | ||
| compose.yaml | ||
| composer.json | ||
| composer.lock | ||
| eslint.config.js | ||
| package-lock.json | ||
| package.json | ||
| phpunit.xml | ||
| tsconfig.json | ||
| vite.config.ts | ||
README.md
Whisper Money
The most secure way to understand your finances.
Whisper Money is a privacy-first personal finance application that helps you track, categorize, and understand your spending—all while keeping your financial data encrypted and secure.
💬 Join our Community: Whether you're a user looking for help or a developer wanting to contribute, we'd love to have you in our Discord server! Share feedback, ask questions, discuss new features, or just hang out with fellow privacy enthusiasts.
Features
- 🔐 End-to-end encryption — Your financial data stays private
- 🏦 Bank account management — Track multiple accounts in one place
- 📊 Transaction categorization — Automatic and manual categorization
- 🤖 Automation rules — Set up rules to auto-categorize transactions
- 📈 Financial insights — Understand your spending patterns
Tech Stack
- Backend: Laravel 12, PHP 8.4
- Frontend: React 19, Inertia.js v2, TypeScript
- Styling: Tailwind CSS v4
- Database: MySQL
- Cache/Queue: Redis
- Testing: Pest v4
Running Locally
Prerequisites
- Docker & Docker Compose
- Composer
- Node.js / Bun
Setup
- Clone the repository:
git clone https://github.com/whisper-money/whisper-money.git
cd whisper_money
- Copy the environment file:
cp .env.example .env
- Start the Docker services:
docker compose up -d
- Install dependencies and setup the application:
composer setup
- Start the development server:
composer run dev
This will concurrently start:
- PHP development server
- Queue worker
- Log viewer (Pail)
- Vite dev server
The application will be available at https://whispermoney.test.
License
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.