MCPSERV.CLUB
YAFFA

YAFFA

Self-Hosted

Self-hosted personal finance for long-term planning

Active(93)
61stars
0views
Updated 10 days ago
YAFFA screenshot 1
1 / 4

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 currencies table.
    • 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.
  • 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

Weekly Views

Loading...
Support Us
Most Popular

Infrastructure Supporter

$5/month

Keep our servers running and help us maintain the best directory for developers

Repository Health

Loading health data...

Information

Category
other
License
MIT
Stars
61
Technical Specs
Pricing
Open Source
Docker
None
Supported OS
LinuxDocker
Author
kantorge
kantorge
Last Updated
10 days ago