Convert Figma logo to code with AI

firefly-iii logofirefly-iii

Firefly III: a personal finances manager

20,051
1,829
20,051
124

Top Related Projects

Beancount: Double-Entry Accounting from Text Files.

21,601

A local-first personal finance app

27,488

Free and Open Source Enterprise Resource Planning (ERP)

44,816

Odoo. Open Source Apps To Grow Your Business.

3,847

GnuCash Double-Entry Accounting Program.

Quick Overview

Firefly III is a self-hosted personal finance manager. It's a web application that helps you track your income, expenses, and budget. Firefly III aims to give you insight into and control over your finances, with a focus on privacy and data ownership.

Pros

  • Self-hosted, ensuring complete control and privacy of your financial data
  • Comprehensive features including budgeting, bill tracking, and financial reporting
  • Supports multiple currencies and accounts
  • Active development and community support

Cons

  • Requires technical knowledge to set up and maintain
  • May be overwhelming for users looking for a simple expense tracker
  • Limited mobile support compared to some commercial alternatives
  • Learning curve can be steep for users new to personal finance management

Getting Started

To get started with Firefly III, follow these steps:

  1. Ensure you have a web server with PHP 7.3+ and a MySQL compatible database.
  2. Download the latest Firefly III release from GitHub.
  3. Extract the files to your web server directory.
  4. Create a new database for Firefly III.
  5. Copy the .env.example file to .env and update the database settings.
  6. Run the following commands:
composer install --no-dev
php artisan migrate --seed
php artisan firefly:upgrade-database
php artisan passport:install
  1. Set up a cron job to run php artisan schedule:run every minute.
  2. Access Firefly III through your web browser and create your first account.

For more detailed instructions, refer to the official documentation on the Firefly III website.

Competitor Comparisons

Beancount: Double-Entry Accounting from Text Files.

Pros of Beancount

  • Text-based double-entry accounting system, offering flexibility and version control
  • Powerful command-line interface for data manipulation and reporting
  • Extensible through Python plugins and scripts

Cons of Beancount

  • Steeper learning curve, especially for users unfamiliar with command-line tools
  • Lacks a built-in graphical user interface, requiring additional setup for visualization
  • Manual data entry can be time-consuming compared to automated import features

Code Comparison

Beancount (ledger entry):

2023-05-15 * "Grocery Store" "Weekly shopping"
  Expenses:Food:Groceries   50.00 USD
  Assets:Checking          -50.00 USD

Firefly III (transaction API):

$transaction = new Transaction;
$transaction->type = 'withdrawal';
$transaction->amount = -50.00;
$transaction->description = 'Weekly shopping';
$transaction->source_id = $checking_account->id;
$transaction->destination_id = $groceries_category->id;
$transaction->date = new Carbon('2023-05-15');

Beancount uses a simple text-based format for transactions, while Firefly III employs a more structured API approach for creating transactions programmatically. Beancount's format is more concise and human-readable, but Firefly III's method offers more flexibility in handling complex transaction structures within its application framework.

21,601

A local-first personal finance app

Pros of Actual

  • Offers a desktop application for offline use and synchronization
  • Focuses on zero-based budgeting methodology
  • Provides a more modern and intuitive user interface

Cons of Actual

  • Less extensive feature set compared to Firefly III
  • Smaller community and fewer integrations
  • Limited multi-currency support

Code Comparison

Actual (JavaScript):

export function createBudget(name) {
  return {
    type: 'CREATE_BUDGET',
    name
  };
}

Firefly III (PHP):

public function store(BudgetFormRequest $request): RedirectResponse
{
    $data = $request->getBudgetData();
    $budget = $this->repository->store($data);

    Session::flash('success', (string)trans('firefly.stored_new_budget', ['name' => $budget->name]));
    return redirect(route('budgets.index'));
}

Both projects use different programming languages and frameworks, making direct code comparison challenging. Actual is built with JavaScript and React, while Firefly III uses PHP and Laravel. Actual's code tends to be more concise and functional, while Firefly III's code follows object-oriented patterns typical of Laravel applications.

Actual focuses on simplicity and ease of use, which is reflected in its codebase. Firefly III offers more extensive features and customization options, resulting in a more complex but feature-rich application.

27,488

Free and Open Source Enterprise Resource Planning (ERP)

Pros of ERPNext

  • More comprehensive ERP solution with modules for various business functions
  • Supports multi-currency and multi-company setups
  • Offers a wider range of integrations with third-party services

Cons of ERPNext

  • Steeper learning curve due to its complexity
  • Requires more system resources to run efficiently
  • May be overkill for personal finance management or small businesses

Code Comparison

ERPNext (Python):

@frappe.whitelist()
def get_item_details(item_code, warehouse=None, doc=None):
    item = frappe.get_doc("Item", item_code)
    return {
        "item_name": item.item_name,
        "description": item.description,
        "stock_uom": item.stock_uom
    }

Firefly III (PHP):

public function getTransactions(Carbon $start, Carbon $end): Collection
{
    return $this->user->transactions()
        ->whereBetween('date', [$start, $end])
        ->orderBy('date', 'DESC')
        ->get();
}

ERPNext is a full-fledged ERP system suitable for larger businesses, while Firefly III focuses on personal finance management. ERPNext offers more features but is more complex, whereas Firefly III is simpler and easier to use for individuals or small organizations managing their finances.

44,816

Odoo. Open Source Apps To Grow Your Business.

Pros of Odoo

  • Comprehensive ERP system with a wide range of business applications
  • Large community and extensive ecosystem of modules and integrations
  • Scalable for businesses of all sizes, from small startups to large enterprises

Cons of Odoo

  • Steeper learning curve due to its complexity and extensive feature set
  • Higher resource requirements for hosting and maintenance
  • Potentially overkill for simple personal finance management

Code Comparison

Firefly III (PHP):

public function rules(): array
{
    return [
        'name' => ['required', 'min:1', 'max:255'],
        'active' => ['boolean'],
        'order' => ['numeric', 'min:0', 'max:255'],
    ];
}

Odoo (Python):

class ResPartner(models.Model):
    _name = 'res.partner'
    _description = 'Contact'

    name = fields.Char(index=True)
    date = fields.Date()
    active = fields.Boolean(default=True)

Both projects use object-oriented programming, but Firefly III is written in PHP while Odoo uses Python. Firefly III focuses on personal finance management, whereas Odoo is a full-fledged ERP system with a broader scope. Odoo's codebase is significantly larger and more complex due to its extensive feature set.

3,847

GnuCash Double-Entry Accounting Program.

Pros of Gnucash

  • Mature, desktop-based application with a long history and extensive features
  • Supports double-entry bookkeeping for professional accounting needs
  • Offers robust reporting and graphing capabilities

Cons of Gnucash

  • Steeper learning curve due to its comprehensive feature set
  • Less modern user interface compared to web-based alternatives
  • Limited mobile access and synchronization options

Code Comparison

Gnucash (C):

static void
gnc_split_register_load (SplitRegister *reg, gboolean do_scroll)
{
    SRInfo *info = gnc_split_register_get_info (reg);
    Transaction *pending_trans;
    Split *pending_split;

Firefly III (PHP):

public function index(Request $request): JsonResponse
{
    $manager = $this->getManager();
    $pageSize = (int)app('preferences')->get('listPageSize', 50)->data;
    $collection = $manager->getPaginatedTransactions($this->parameters(), $pageSize);

Both projects aim to provide personal finance management solutions, but they differ significantly in their approach. Gnucash is a traditional desktop application with a focus on double-entry bookkeeping, while Firefly III is a modern web-based solution. The code snippets reflect their different architectures, with Gnucash using C for its desktop application and Firefly III using PHP for its web framework.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Packagist License Stargazers Donate


Firefly III

Firefly III

A free and open source personal finance manager
Explore the documentation

View the demo · Report a bug · Request a feature · Ask questions

About Firefly III

Firefly III on iMac

"Firefly III" is a (self-hosted) manager for your personal finances. It can help you keep track of your expenses and income, so you can spend less and save more. Firefly III supports the use of budgets, categories and tags. Using a bunch of external tools, you can import data. It also has many neat financial reports available.

Firefly III should give you insight into and control over your finances. Money should be useful, not scary. You should be able to see where it is going, to feel your expenses and to... wow, I'm going overboard with this aren't I?

But you get the idea: this is your money. These are your expenses. Stop them from controlling you. I built this tool because I started to dislike money. Having money, not having money, paying bills with money, you get the idea. But no more. I want to feel "safe", whatever my balance is. And I hope this tool can help you. I know it helps me.

Purpose

Firefly III on iPad

Personal financial management is pretty difficult, and everybody has their own approach to it. Some people make budgets, other people limit their cashflow by throwing away their credit cards, others try to increase their current cashflow. There are tons of ways to save and earn money. Firefly III works on the principle that if you know where your money is going, you can stop it from going there.

By keeping track of your expenses and your income you can budget accordingly and save money. Stop living from paycheck to paycheck but give yourself the financial wiggle room you need.

You can read more about the purpose of Firefly III in the documentation.

Features

Firefly III is pretty feature packed. Some important stuff first:

  • It is completely self-hosted and isolated, and will never contact external servers until you explicitly tell it to.
  • It features a REST JSON API that covers almost every part of Firefly III.

The most exciting features are:

Then the things that make you go "yeah OK, makes sense".

And the things you would hope for but not expect:

And to organise everything:

  • Clear views that should show you how you're doing.
  • Easy navigation through your records.
  • Lots of charts because we all love them.

Many more features are listed in the documentation.

Who's it for?

Firefly III on iPhone

This application is for people who want to track their finances, keep an eye on their money without having to upload their financial records to the cloud. You're a bit tech-savvy, you like open source software and you don't mind tinkering with (self-hosted) servers.


The Firefly III eco-system

Several users have built pretty awesome stuff around the Firefly III API. Check out these tools in the documentation.

Getting Started

There are many ways to run Firefly III

  1. There is a demo site with an example financial administration already present.
  2. You can install it on your server.
  3. You can run it using Docker.
  4. You can deploy via Kubernetes.
  5. You can install it using Softaculous.
  6. You can install it using AMPPS.
  7. You can install it on Cloudron.
  8. You can install it on Lando.
  9. You can install it on Yunohost.

Contributing

You can contact me at james@firefly-iii.org, you may open an issue in the main repository or contact me through gitter and Mastodon.

Of course, there are some contributing guidelines and a code of conduct, which I invite you to check out.

I can always use your help squashing bugs, thinking about new features or translating Firefly III into other languages.

Sonarcloud scans the code of Firefly III. If you want to help improve Firefly III, check out the latest reports and take your pick!

Quality Gate Status Bugs Code Smells Vulnerabilities

There is also a security policy.

CII Best Practices

Support the development of Firefly III

If you like Firefly III and if it helps you save lots of money, why not send me a dime for every dollar saved! 🥳

OK that was a joke. If you feel Firefly III made your life better, please consider contributing as a sponsor. Please check out my Patreon and GitHub Sponsors page for more information. You can also buy me a ☕️ coffee at ko-fi.com. Thank you for your consideration.

License

This work is licensed under the GNU Affero General Public License v3.

Do you need help, or do you want to get in touch?

Do you want to contact me? You can email me at james@firefly-iii.org or get in touch through one of the following support channels:

Acknowledgements

Over time, many people have contributed to Firefly III. I'm grateful for their support and code contributions.

The Firefly III logo is made by the excellent Cherie Woo.

Featured|HelloGitHub