Overview
Discover what makes YAFFA powerful
YAFFA (Yet Another Free Financial Application) is a self‑hosted, PHP‑based web service built on the Laravel framework. From a developer standpoint it is designed to be lightweight yet feature‑rich, focusing on long‑term financial planning rather than instant bank integrations. The core engine exposes a RESTful API and a set of artisan commands that enable automated currency updates, receipt parsing, and scheduled transaction processing. Because it is written in Laravel, developers can tap into Eloquent ORM, queued jobs, and the powerful Blade templating system to customize the UI or extend functionality.
Language & Framework
Database
External Services
Queue & Scheduler
Overview
YAFFA (Yet Another Free Financial Application) is a self‑hosted, PHP‑based web service built on the Laravel framework. From a developer standpoint it is designed to be lightweight yet feature‑rich, focusing on long‑term financial planning rather than instant bank integrations. The core engine exposes a RESTful API and a set of artisan commands that enable automated currency updates, receipt parsing, and scheduled transaction processing. Because it is written in Laravel, developers can tap into Eloquent ORM, queued jobs, and the powerful Blade templating system to customize the UI or extend functionality.
Architecture & Technical Stack
- Language & Framework: PHP 8.x with Laravel 10, leveraging its service container and middleware pipeline for clean separation of concerns.
- Database: MySQL/MariaDB is the default, but any PDO‑compatible RDBMS (PostgreSQL, SQLite) can be configured via Laravel’s
config/database.php. The schema is modular: accounts, transactions, budgets, investments, and recurring jobs are stored in normalized tables with polymorphic relationships for category assignments. - External Services:
- Frankfurter (free currency rates) – daily cron job fetches JSON and updates a
currenciestable. - AlphaVantage – pulls investment prices; the API key is stored in
.env. - OpenAI – optional receipt OCR; the integration uses Laravel’s HTTP client with streaming responses for large PDFs or image files.
- Frankfurter (free currency rates) – daily cron job fetches JSON and updates a
- Queue & Scheduler: Laravel’s queue system (database, Redis, or SQS) handles recurring transactions and price updates. The scheduler (
php artisan schedule:run) orchestrates daily currency pulls, investment price refreshes, and email receipt ingestion.
Core Capabilities & APIs
YAFFA exposes a versioned API (v1) that follows REST conventions: GET /transactions, POST /accounts, etc. Authentication is handled via Laravel Sanctum, allowing token‑based access for mobile clients or third‑party integrations. The API supports bulk transaction uploads via CSV/QIF parsing, and offers webhook endpoints for external services to notify YAFFA of new deposits or withdrawals. Internally, the service layer encapsulates business rules—such as split‑category validation and budgeting logic—making it straightforward for developers to override or extend.
Deployment & Infrastructure
The application is container‑friendly: a single Dockerfile builds the PHP runtime, and a docker-compose.yml can spin up services (app, MySQL, Redis). For production, the recommended stack includes:
- Nginx or Apache as a reverse proxy with HTTPS termination (Let’s Encrypt).
- Redis for job queues, improving latency of scheduled tasks.
- Optional caching layer (Memcached/Redis) for dashboard queries.
Scaling horizontally is achievable by adding more PHP workers behind a load balancer; the database can be read‑replicated to offload reporting queries.
Integration & Extensibility
YAFFA’s modular design encourages plug‑in development. Developers can create custom packages that register new routes, Eloquent models, or scheduled jobs via Laravel’s service providers. The API is fully documented with OpenAPI/Swagger annotations, and webhook support allows third‑party services (e.g., a custom banking API) to push transaction data in real time. Theme customization is also possible by overriding Blade views and CSS, enabling a tailored look‑and‑feel without touching core logic.
Developer Experience
Configuration is driven by .env files, keeping secrets out of source control. The Laravel community provides extensive tutorials on authentication, queues, and API creation, which YAFFA leverages. Documentation is concise yet thorough, covering installation, environment variables, and API usage. The project’s GitHub repository hosts an active issue tracker and a discussion forum where contributors propose new features such as multi‑user support or image receipt parsing.
Use Cases
- Personal Finance SaaS: A developer can host YAFFA behind a reverse proxy and provide it as a subscription service, using Laravel’s tenancy packages to isolate each user’s data.
- Enterprise Expense Tracking: Organizations can integrate YAFFA with their existing ERP systems via the API, pulling transaction data and pushing budget forecasts.
- Education & Research: Universities can deploy YAFFA in labs to teach students about budgeting, forecasting, and API design without exposing sensitive data.
Advantages
YAFFA offers a balance of performance (Laravel’s optimized query builder), flexibility (extensible via service providers and custom APIs), and privacy (full self‑hosting with no third‑party data storage). Its licensing model—open source under MIT—permits commercial use without royalties, making it an attractive alternative to proprietary budgeting tools that lock data in the cloud.
Open SourceReady to get started?
Join the community and start self-hosting YAFFA today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Flagsmith
Open‑source feature flagging for faster releases
Outline Server
Create and manage your own VPN with ease
GoSƐ
Scalable S3‑based file uploader with chunk deduplication
VoucherVault
Digital voucher and loyalty card manager
theme.park
A theme collection for self‑hosted apps
RSS-Bridge
Generate RSS feeds for sites without one