HLedger is cross-platform accounting software for both power users and folks new to accounting

Overview

HLedger Plain Text Accounting on Nextcloud

HLedger is cross-platform accounting software for both power users and folks new to accounting. It's good for tracking money, time, investments, cryptocurrencies, inventory and more. The FAQ covers what and why.

Plain Text Accounting means doing accounting with plain text data formats and scriptable software.

Why Plain Text Accounting on Nextcloud?

Rather than storing financial data in a rigid or proprietary database, you can just record all your transactions as text and let the reporting tools do the hard work.

As a file storage system with desktop sync and mobile access, Nextcloud is a natural fit for plain text accounting. It provides a safe, private, easily accessible place to store your financial data. It provides security, online editing, multi-user, collaboration, desktop sync and mobile device access without compromising privacy or forcing you to trust a company as you must do with tools like Quicken, Mint, YNAB, etc...

Features

Screenshots

Income Statement Balance Sheet Files

Demo Site

Want to see it in action without setting up Nextcloud? Create a free account on the demo site.

https://demo.hledger.cloud

Warning: The demo site is only for demonstration. You may not use it for your own accounting. There is no privacy or security on the demo site, either explicit or implied. You can and will lose your files at any time. Do not enter your private financial information on the demo site.

Do try it and provide feedback on Nextcloud and Github!!!

Requirements

This app uses shell_exec and therefore shell_exec must be enabled in your server.

Build & Develop

Install backend dependencies.

$ composer install

Install frontend dependencies.

$ npm install

Build frontend assets for development.

$ npm run-script dev

Watch and build frontend assets as files change.

$ npm run-script watch

Build frontend assets for production.

$ npm run-script build

Contact Us

If you have questions or would like to participate, let's talk!

Comments
  • Navigate from a transaction to edit it

    Navigate from a transaction to edit it

    Like ‘E’ in hledger-ui. Go right to the transaction. Don’t make the user search for it.

    See https://help.nextcloud.com/t/how-to-include-a-text-editor-in-my-nextcloud-app/113843 for how to use the built in text editor.

    enhancement 
    opened by 37Rb 2
  • Host a demo site for anyone to try

    Host a demo site for anyone to try

    Setting up your own NC instance is a barrier to trying the app. Let's set up a demo NC site so people can try it who aren't already running their own NC.

    I'd like to make sure we put a CLEAR warning that any financial info or financial-related files that are posted on the demo site may not be kept private in the event of a site compromise.

    opened by 37Rb 1
  • Return value of HLedger\\HLedger::balanceSheet() must be of the type array

    Return value of HLedger\\HLedger::balanceSheet() must be of the type array

    When opening https://cloud.pondersource.org/index.php/apps/hledger/ for the first time, I see a 500 error, and:

    Return value of HLedger\\HLedger::balanceSheet() must be of the type array, null returned in file '/var/www/html/apps/hledger/vendor/hledger/php-hledger/lib/HLedger.php' line 111
    

    in /var/www/html/data/nextcloud.log

    opened by michielbdejong 0
  • Reasons for not autoloading

    Reasons for not autoloading

    In line 5 of hledger.php you have a TODO comment wondering why autoloading doesn't work for your app.

    I suspect that it is a combination of your app installing into /vendor rather than /apps/hledger/ and your name spacing not conforming with the Nextcloud conventions https://docs.nextcloud.com/server/latest/developer_manual/app_development/bootstrap.html.

    I post this in a spirit of wanting to help, not as a criticism. I am interested in using your app, but as it stands I won't attempt to install it in case it borks my system in someway due to the unusual install location. Please feel free to correct me if I am mistaken about the install location.

    Well done with the work you have done so far, it would be great to be able to install this directly from the Nextcloud app store.

    opened by vascowhite 1
  • Improve support for non-standard Linux platforms

    Improve support for non-standard Linux platforms

    Maybe this belongs in php-hledger but since most of the discussion around this nextcloud app is here, I figured I'd post it here for now.

    The main problem is that Nextcloud is installed on MANY different Linux platforms, including Ubuntu, non-ubuntu, older glibc versions, stripped down Linuxes running inside docker, and also on non-intel architectures such as the raspberry pi. Many of these will fail with the current Nextcloud hledger downloader because the current hledger downloader simply downloads the most recently released version of hledger. The current Linux hledger binary that is posted depends on ncurses version 6 and a recent version of glibc, which is not present on Ubuntu versions even as recent as Bionic Beaver 18.04 (3 years old). Somebody may argue that 3 years old is too old to continue supporting but I would argue that MANY potential users may still be on old platforms and they may get frustrated when this app doesn't work there. Additionally, some of the most interesting target users may be running their Nextcloud from a raspberry pi, since that is much easier to setup than a full fledged server, for less technical users. Raspberry pi support is difficult to add since hledger doesn't even publish any official builds for it (it lists some user contributed builds but those are for older versions of hledger). Anyway, just to get the conversation started, I will list a few potential solutions to these problems:

    1. Figure out how to build hledger to generate static binaries, which do not depend on any dynamic libraries. Somebody posted a blog post explaining how they build a haskell project to produce static binaries here: https://www.tweag.io/blog/2020-09-30-bazel-static-haskell/ I'm not sure if we could replicate that. This would not solve the raspberry PI problem unless we can also get a cross compiler running, in addition to static builds.

    2. Setup an automated cross-compiled build for raspberry pi and contribute that to the hledger project so that it can become an official build. As mentioned in the previous bullet point, there would be bonus points if we could get the ARM build to also be a static build, without any external library dependencies.

    3. Now this one is a bit different than the first two, but it would be super cool if it works and performs well with a moderate-sized ledger file. Figure out how to build hledger for WASM (web assembly). This would allow hledger to be run inside the web browser or inside a node JS install. I have followed the state of haskell --> WASM compilers for a while and they vary in maturity and maintenance. The best-maintained Haskell --> WASM compiler seems to be Asterius (https://asterius.netlify.app/). According to their roadmap (https://asterius.netlify.app/roadmap.html) they have decent support for various Haskell dependencies and they do support Template Haskell (with certain caveats). Not sure if @simonmichael has heard of anybody trying to compile hledger to WASM using Asterius but if so, that would be super cool. Fun fact, hledger is mentioned in a pkgs.txt file in the root of the Asterius source code (https://github.com/tweag/asterius/blob/master/pkgs.txt), but I'm not sure what that means. Does that mean they've already pre-built hledger into WASM using Asterius? I might try pulling down the Asterius docker image and seeing if hledger comes pre-built in there. Maybe if we're lucky, @TerrorJack from the Asterius project could comment on this.

    4. Another potential avenue is compiling Haskell directly to Javascript but this was done with hledger a while back using ghcjs and it did not perform well with large ledger files (understandably). I like the WebAssembly idea above much better, since it is likely to perform the best and produce a smaller distributable file.

    opened by thecount2a 27
Owner
Ryan Boder
Ryan Boder
Fresns core library: Cross-platform general-purpose multiple content forms social network service software

About Fresns Fresns is a free and open source social network service software, a general-purpose community product designed for cross-platform, and su

Fresns 82 Dec 31, 2022
A PocketMine-MP plugin that allows you to comfortably register events using a new piece of PHP 8 power — attributes.

AdvancedEvents This is a PocketMine-MP plugin that allows you to comfortably register events using a new piece of PHP 8 power — attributes. Inspired b

JuraSciix 7 Dec 5, 2022
Silverstripe-sspy - Python based SSPAK export with higher reliability and cross-platform compatibility

SSPY - Python Stand-alone SSPAK solution © Simon Firesphere Erkelens; Moss Mossman Cantwell Usage: sspy [create|load|extract] (db|assets) --file=my.

Simon Erkelens 1 Jun 29, 2021
A high-performance license server system service for creating and managing products, major versions, and software licenses for the purpose of selling installable software products.

A high-performance license server system service for creating and managing products, major versions, and software licenses for the purpose of selling installable software products. Comes with a SDK and command-line tool. Works anywhere that PHP runs.

CubicleSoft 32 Dec 5, 2022
A MCPE server software that backporting new Minecraft: Bedrock Edition to older PocketMine versions with better stability and performance.

CoarseMC is a server software that backports new Minecraft: Bedrock Edition versions to older PocketMine versions with better stability and performance, while retaining as many features from the new PocketMine-MP versions as possible.

null 5 May 21, 2022
An auto software that collects, scans and sends automatic instagram users

Instagram Advanced User Finder V1.0.0 With this PHP script, you can find users on Instagram and message them. Feedback Türkçe Get Key every week, you

Yasin 70 Jan 4, 2023
RMT is a handy tool to help releasing new version of your software

RMT - Release Management Tool RMT is a handy tool to help releasing new versions of your software. You can define the type of version generator you wa

Liip 442 Dec 8, 2022
All the basic features of accounting sotware

Anzarkhan.com Invoice Anzarkhan.com Invoice is an open source accounting and invoicing solution built with PHP. For more information, visit http://www

Anzar Khan 7 Jul 1, 2022
PHP library for Mexican SAT Electronic Accounting 1.3

phpcfdi/ceutils Librería de PHP para trabajar con contabilidad electrónica. ???? The documentation of this project is in spanish as this is the natura

phpCfdi 8 Jul 18, 2022
A WordPress package to nudge users to upgrade their software versions (starting with PHP)

whip A WordPress package to nudge users to upgrade their software versions (starting with PHP) Requirements The following versions of PHP are supporte

Yoast 71 Oct 18, 2022
This plugin allows you to create many-to-many relationships between pages in Kirby and synchronizes them on both sides.

Kirby 3 Many To Many Field This plugin allows you to create many-to-many relationships between pages in Kirby.

Jonas Holfeld 41 Nov 19, 2022
A Sublime Text 3 package for highlighting both Sass and SCSS syntax.

Syntax Highlighting for Sass This is a Sublime Text 3 package which purely forced on highlighting both Sass and SCSS syntax as accuracy as possible. P

Peiwen Lu 291 Jun 26, 2022
KLua is a FFI-based Lua5 library that can be used in both PHP and KPHP

KLua KLua is a FFI-based Lua5 library that can be used in both PHP and KPHP. Installation Since this is a FFI library, it needs a dynamic library avai

Iskander (Alex) Sharipov 7 Nov 4, 2022
Yab copy to new - A Textpattern plugin. Copies the current article content to a new one.

yab_copy_to_new Displays a new button in article write tab to copy the current article to a new one. Version: 0.2 Table of contents Plugin requirement

Tommy Schmucker 2 Dec 15, 2017
Silverstripe-masquerade - SilverStripe module to allow users to "masquerade" as other users

SilverStripe Masquerade Module About This module is designed to allow an Administrator to "login" as another "Member" without changing their password

Daniel Hensby 14 Apr 14, 2022
QuestionApp - a platform where users can ask questions and discuss about the subject they are curious about

QuestionApp About The Project It can be a trend according to the number of likes and comments that members can ask questions. ![Alt Text] Ask your any

Tolga Bayrak 4 Oct 7, 2022
Creating data transfer objects with the power of php objects. No php attributes, no reflection api, and no other under the hook work.

Super Simple DTO Creating data transfer objects with the power of php objects. No php attributes, no reflection api, and no other under the hook work.

Mohammed Manssour 8 Jun 8, 2023
Hprose is a cross-language RPC. This project is Hprose 3.0 for PHP

Hprose 3.0 for PHP Introduction Hprose is a High Performance Remote Object Service Engine. It is a modern, lightweight, cross-language, cross-platform

Hprose 2k Jan 4, 2023
A simple library to increase the power of your environment variables.

Environment A simple library (with all methods covered by php unit tests) to increase the power of your environment variables, contribute with this pr

João Paulo Cercal 56 Feb 8, 2022