Top Related Projects
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:
- Ensure you have a web server with PHP 7.3+ and a MySQL compatible database.
- Download the latest Firefly III release from GitHub.
- Extract the files to your web server directory.
- Create a new database for Firefly III.
- Copy the
.env.example
file to.env
and update the database settings. - Run the following commands:
composer install --no-dev
php artisan migrate --seed
php artisan firefly:upgrade-database
php artisan passport:install
- Set up a cron job to run
php artisan schedule:run
every minute. - 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.
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.
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.
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.
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
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
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
- Features
- Who's it for?
- The Firefly III eco-system
- Getting Started
- Contributing
- Support the development of Firefly III
- License
- Do you need help, or do you want to get in touch?
- Acknowledgements
About Firefly III
"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
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:
- Create recurring transactions to manage your money.
- Rule based transaction handling with the ability to create your own rules.
Then the things that make you go "yeah OK, makes sense".
- A double-entry bookkeeping system.
- Save towards a goal using piggy banks.
- View income and expense reports.
And the things you would hope for but not expect:
- 2 factor authentication for extra security ð.
- Supports any currency you want.
- There is a Docker image.
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?

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
- There is a demo site with an example financial administration already present.
- You can install it on your server.
- You can run it using Docker.
- You can deploy via Kubernetes.
- You can install it using Softaculous.
- You can install it using AMPPS.
- You can install it on Cloudron.
- You can install it on Lando.
- 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!
There is also a security policy.
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:
- GitHub Discussions for questions and support
- Gitter.im for a good chat and a quick answer
- GitHub Issues for bugs and issues
- Mastodon for news and updates
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.
Top Related Projects
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot