Logo

0x3d.Site

is designed for aggregating information.
Welcome
check repository here

Family Accounting Tool

CI Status

Family Accounting Tool keeps track of every transaction your family makes. Its goal is to:

  • Extract useful statistics from the data
    E.g.: How much is spent on food each month?
  • Calculate internal debt
    E.g.: Alice buys toilet paper for the whole family with her own money. This tool then registers that the family owes Alice the cost of the toilet paper.
  • Provide a way to check if no money is disappearing in unexpected expenses
    E.g.: You will notice when there are hidden banking costs

Screenshot

screenshot

Installation from release

  • Install Java 11 (JDK 11) on your server
  • Download "Binaries (compiled files) with demo configuration" from the latest release
  • Unpack the archive
  • Open conf/application.conf in the unpacked folder:
    • Configure a database. The easiest way is to set up a MariaDB server locally, create an empty database called facto and configure it as follows:
db.default {
  driver = com.mysql.jdbc.Driver
  url = "jdbc:mysql://localhost/facto?user=mysqluser&password=mysqlpassword"
  slick.profile = "slick.jdbc.MySQLProfile$"
}
  • Choose secret values for play.http.secret.key and app.setup.defaultPassword

  • Open a terminal in the unpacked folder

  • Run following commands to get the app running:

    # Create database tables
    bin/server -DdropAndCreateNewDb
    
    # Create admin user
    bin/server -DcreateAdminUser
    
    # Run application
    bin/server
    
  • Browse to http://localhost:9000/app/useradministration (username: "admin", password: "changeme")

Installation with Docker (discouraged)

Warning: The following works fine for launching a demo server to have a look. But if you want to run this as a service with real data and custom configuration, it is recommended to follow the "Installation from release" section instead (see this issue for the reasons why).

The following commands will launch a new server alongside a database in Docker containers:

# Get the docker-compose.yml file
wget https://raw.githubusercontent.com/nymanjens/facto/master/docker-compose.yml

# Choose a unique random string here of sufficient length
export APPLICATION_SECRET="$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)"

# Create an empty database with a single admin user
docker-compose run web sleep 5 # Wait for the database to be ready
docker-compose run web bin/server -DdropAndCreateNewDb
docker-compose run web bin/server -DcreateAdminUser

# Bring up the server
docker-compose up

When done, browse to http://localhost:9000/ (username: "admin", password: "changeme")

Configuration

  • conf/application.conf:
    Setup and configure a database here.
  • Add users:
    A default user is created with the -DcreateAdminUser flag (username: admin, password: changeme). This account can create new users.
  • conf/accounting-config.yml:
    Edit this file to reflect your situation and preferences. Note that userLoginName has to refer to a user that already exists in the database (see previous point)

Usage

To effectively use this tool, you must learn to input the transactions correctly. Therefore, it's important to understand the meaning of categories and accounts.

Categories

These are used to split up your expenses into categories. Every account has some special categories:

  • Accounting category:
    Used for non-real income/expenses. This category will be ignored when analysing the monthly surplus/deficit in terms of expenses. Use this category e.g. when the expense will be paid back by your employer
  • Endowment category:
    Used for money transfer to the common account (see example in the next section)

Accounts

An account can refer to a regular person or the common account.

Example:

A family has two members: Alice and Bob. There will be three accounts:

  • Alice
  • Bob
  • The common account

Alice and Bob will regularly transfer money to the common account which can be used to make common expenses. This transfer to the common account is called an 'endowment'.

Inputting transactions

Special fields:

  • Beneficiary:
    In case of an expense: The one that will benefit from the expense
    In case of an income: The one that was paid
  • Paid with/to:
    In case of an expense: Paid with
    In case of an income: Paid to
  • Flow:
    In case of an expense: Negative number representing the price
    In case of an income: Positive number

Using the Cash Flow overview effectively

The cash flow overview is a powerfull tool to check for unaccounted expenses.

You should:

  • Set the current amount of money you have for every payment method (cash, card, ...). You can do this by using the "set" button.
  • Whenever you perform a transaction, the balance will be updated automatically.
  • You can re-count your cash and see if it matches the calculated value. If it does, you can use the checkbox button to mark this. If it doesn't, you have made an error or lost money.

About this project

This project was created and maintained by me (Jens) in my spare time for my family, and I made it open source in the hope that it might be useful for others.

If you decide to use this, chances are you'll either be using it a lot, or stop using it after some time. If you are in the former category, please send me a message at [email protected] (or consider sending a donation) so I know others are using this. Definitely also let me know if you have any interest in upgrading to newer versions or using the more advanced (hidden) features like exchange rates and inflation correction.

Open Source
Open Source
Open source software is freely available for use, modification, and distribution. It fosters collaboration and innovation, with popular examples like Linux, Git, and Apache. Open source drives much of today’s technology infrastructure.
Unkey
Unkey
GitHub - pingdotgg/zapdos
GitHub - pingdotgg/zapdos
GitHub - noahflk/railtrack: Next.js and Supabase app to track your train journeys in Europe
GitHub - noahflk/railtrack: Next.js and Supabase app to track your train journeys in Europe
GitHub - vanxh/openbio: Open source beautiful link in bio pages.
GitHub - vanxh/openbio: Open source beautiful link in bio pages.
GitHub - keephq/keep: The open-source alert management and AIOps platform
GitHub - keephq/keep: The open-source alert management and AIOps platform
GitHub - RomanHotsiy/commitgpt: Automatically generate commit messages using ChatGPT
GitHub - RomanHotsiy/commitgpt: Automatically generate commit messages using ChatGPT
GitHub - midday-ai/midday: Run your business smarter 🪄
GitHub - midday-ai/midday: Run your business smarter 🪄
GitHub - neondatabase/yc-idea-matcher: Submit your idea and get a list of similar ideas that YCombinator has invested in in the past.
GitHub - neondatabase/yc-idea-matcher: Submit your idea and get a list of similar ideas that YCombinator has invested in in the past.
GitHub - steven-tey/novel: Notion-style WYSIWYG editor with AI-powered autocompletion.
GitHub - steven-tey/novel: Notion-style WYSIWYG editor with AI-powered autocompletion.
GitHub - tldraw/tldraw: SDK for creating whiteboards and canvas experiences on the web.
GitHub - tldraw/tldraw: SDK for creating whiteboards and canvas experiences on the web.
GitHub - implerhq/impler.io: Powerful CSV & Excel Import experience for SaaS 🚀 Save months building data import experience from scratch 💰
GitHub - implerhq/impler.io: Powerful CSV & Excel Import experience for SaaS 🚀 Save months building data import experience from scratch 💰
GitHub - openstatusHQ/openstatus: 🏓  The open-source synthetic monitoring platform  🏓
GitHub - openstatusHQ/openstatus: 🏓 The open-source synthetic monitoring platform 🏓
GitHub - vercel/platforms: A full-stack Next.js app with multi-tenancy and custom domain support. Built with Next.js App Router and the Vercel Domains API.
GitHub - vercel/platforms: A full-stack Next.js app with multi-tenancy and custom domain support. Built with Next.js App Router and the Vercel Domains API.
GitHub - triggerdotdev/trigger.dev: Trigger.dev is the open source background jobs platform for TypeScript.
GitHub - triggerdotdev/trigger.dev: Trigger.dev is the open source background jobs platform for TypeScript.
GitHub - winglang/wing: A programming language for the cloud ☁️ A unified programming model, combining infrastructure and runtime code into one language ⚡
GitHub - winglang/wing: A programming language for the cloud ☁️ A unified programming model, combining infrastructure and runtime code into one language ⚡
GitHub - ghostfolio/ghostfolio: Open Source Wealth Management Software. Angular + NestJS + Prisma + Nx + TypeScript 🤍
GitHub - ghostfolio/ghostfolio: Open Source Wealth Management Software. Angular + NestJS + Prisma + Nx + TypeScript 🤍
GitHub - documenso/documenso: The Open Source DocuSign Alternative.
GitHub - documenso/documenso: The Open Source DocuSign Alternative.
GitHub - NickTikhonov/dun-cli: Zero friction git commits powered by GPT-3.5 ✨
GitHub - NickTikhonov/dun-cli: Zero friction git commits powered by GPT-3.5 ✨
GitHub - mfts/papermark: Papermark is the open-source DocSend alternative with built-in analytics and custom domains.
GitHub - mfts/papermark: Papermark is the open-source DocSend alternative with built-in analytics and custom domains.
GitHub - aptabase/aptabase: ✨ Open Source, Privacy-First and Simple Analytics for Mobile, Desktop and Web Apps
GitHub - aptabase/aptabase: ✨ Open Source, Privacy-First and Simple Analytics for Mobile, Desktop and Web Apps
GitHub - QuivrHQ/quivr: Open-source RAG Framework for building GenAI Second Brains 🧠  Build productivity assistant (RAG) ⚡️🤖 Chat with your docs (PDF, CSV, ...)  & apps using Langchain, GPT 3.5 / 4 turbo, Private, Anthropic, VertexAI, Ollama, LLMs, Groq  that you can share with users !  Efficient retrieval augmented generation framework
GitHub - QuivrHQ/quivr: Open-source RAG Framework for building GenAI Second Brains 🧠 Build productivity assistant (RAG) ⚡️🤖 Chat with your docs (PDF, CSV, ...) & apps using Langchain, GPT 3.5 / 4 turbo, Private, Anthropic, VertexAI, Ollama, LLMs, Groq that you can share with users ! Efficient retrieval augmented generation framework
GitHub - dubinc/dub: Open-source link management infrastructure. Loved by modern marketing teams like Vercel, Raycast, and Perplexity.
GitHub - dubinc/dub: Open-source link management infrastructure. Loved by modern marketing teams like Vercel, Raycast, and Perplexity.
GitHub - AnswerOverflow/AnswerOverflow: Indexing Discord Help Channel Questions into Google
GitHub - AnswerOverflow/AnswerOverflow: Indexing Discord Help Channel Questions into Google
GitHub - elie222/inbox-zero: Open source email app to reach inbox zero fast.
GitHub - elie222/inbox-zero: Open source email app to reach inbox zero fast.
GitHub - octolens/analyzemyrepo: Discover useful insights about your open-source project
GitHub - octolens/analyzemyrepo: Discover useful insights about your open-source project
GitHub - calcom/cal.com: Scheduling infrastructure for absolutely everyone.
GitHub - calcom/cal.com: Scheduling infrastructure for absolutely everyone.
Matomo - The Google Analytics alternative that protects your data
Matomo - The Google Analytics alternative that protects your data
Famedly / Conduit · GitLab
Famedly / Conduit · GitLab
GNU Mailman / Postorius · GitLab
GNU Mailman / Postorius · GitLab
GNU Mailman / HyperKitty · GitLab
GNU Mailman / HyperKitty · GitLab
Open Source
More on Open Source

Programming Tips & Tricks

Code smarter, not harder—insider tips and tricks for developers.

Error Solutions

Turn frustration into progress—fix errors faster than ever.

Shortcuts

The art of speed—shortcuts to supercharge your workflow.
  1. Collections 😎
  2. Frequently Asked Question's 🤯

Tools

available to use.

Made with ❤️

to provide resources in various ares.