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

Related tags

nextcloud-hledger
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!

Issues
  • Convert UI to a Vue app

    Convert UI to a Vue app

    It will make for more productive UI development and Nextcloud seems to have standardized on Vue.

    enhancement 
    opened by 37Rb 2
  • 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
  • Add transactions with autocomplete and balancing

    Add transactions with autocomplete and balancing

    Like ‘a’ in hledger-ui. It should try to autocomplete account names as you type and balance transactions.

    enhancement 
    opened by 37Rb 1
  • Can we use Nextcloud’s built in file versioning?

    Can we use Nextcloud’s built in file versioning?

    It would be great if we can. How well will it work? Can we rely on it? Do we need to integrate a separate vcs?

    question 
    opened by 37Rb 1
  • Document that shell_exec must be enabled in the server

    Document that shell_exec must be enabled in the server

    Add to app description so people can see it in the App Store.

    documentation 
    opened by 37Rb 1
  • Navigate from account name to account register

    Navigate from account name to account register

    When I click on an account name I should be taken to the register of transactions for that account. Like in hledger-ui.

    enhancement 
    opened by 37Rb 1
  • 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
  • Easily balance transactions when entering

    Easily balance transactions when entering

    Add a balance button when entering transactions.

    enhancement 
    opened by 37Rb 0
  • 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 20
  • Start using unit tests

    Start using unit tests

    Start using unit tests like a normal Nextcloud app.

    enhancement 
    opened by 37Rb 0
  • Create a Transactions view

    Create a Transactions view

    Create a view that lists all transactions with search and filter capabilities.

    enhancement 
    opened by 37Rb 1
  • Close out an accounting period

    Close out an accounting period

    At the end of an accounting period I should be able to close the books, save the ledger and start a new journal.

    enhancement 
    opened by 37Rb 0
  • Export reports to csv files

    Export reports to csv files

    When I’m viewing a report I should be able to export it as a csv file and save it in my Hledger folder or download it

    enhancement 
    opened by 37Rb 0
  • Enable tree view mode

    Enable tree view mode

    Like ‘t’ in hledger-ui.

    enhancement 
    opened by 37Rb 0
  • Apply to be published in Nextcloud app store

    Apply to be published in Nextcloud app store

    Do all the things required and apply to get in there.

    enhancement 
    opened by 37Rb 0
  • Make reports more flexible

    Make reports more flexible

    Let the user change dates, add filter criteria, etc...

    enhancement 
    opened by 37Rb 2
  • Do a security audit

    Do a security audit

    We’re using shell_exec which exposes us to additional security risk. Do a thorough security audit, fix any issues discovered and document why we believe it’s safe.

    enhancement 
    opened by 37Rb 0
  • Admin setting to set hledger exe path

    Admin setting to set hledger exe path

    We attempt to download and install hledger automatically with composer. But it only works with the 3 released hledger binaries. We need to give the admin a way to install hledger manually in case as an alternative.

    enhancement 
    opened by 37Rb 2
Owner
Ryan Boder
Ryan Boder
Easy to use utility functions for everyday PHP projects. This is a port of the Lodash JS library to PHP

Lodash-PHP Lodash-PHP is a port of the Lodash JS library to PHP. It is a set of easy to use utility functions for everyday PHP projects. Lodash-PHP tr

Lodash PHP 433 Jun 10, 2021
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 1.9k Jun 9, 2021
Shelly Plug Prometheus exporter.

Shelly Plug Prometheus Exporter I am a simple man. I have a Shelly Plug. I don't want to flash a different firmware on it just to get a Prometheus end

Jeff Geerling 11 Jun 11, 2021
The easiest way to match data structures like JSON/PlainText/XML against readable patterns. Sandbox:

PHP Matcher Library created for testing all kinds of JSON/XML/TXT/Scalar values against patterns. API: PHPMatcher::match($value = '{"foo": "bar"}', $p

Coduo 669 Jun 14, 2021
PHP Machine Learning library

PHP-ML - Machine Learning library for PHP Fresh approach to Machine Learning in PHP. Algorithms, Cross Validation, Neural Network, Preprocessing, Feat

Jorge Casas 96 Jun 13, 2021
A redacted PHP port of Underscore.js with additional functions and goodies – Available for Composer and Laravel

Underscore.php The PHP manipulation toolbelt First off : Underscore.php is not a PHP port of Underscore.js (well ok I mean it was at first). It's does

Emma Fabre 1.1k Jun 16, 2021
Command bus package for PHP

#Chief Chief is a powerful standalone command bus package for PHP 5.4+. Contents What is a command bus Installation Usage Class-based command handlers

Adam Nicholson 49 Apr 29, 2021
A set of utilities for working with vk api!

vk-utils Документация на русском языке Installation composer require labile/vk-utils How to use it? Simple example use Astaroth\VkUtils\Client; $api

null 3 Jun 14, 2021
FreshRSS is a self-hosted RSS feed aggregator like Leed or Kriss Feed.

Read this document on github.com/FreshRSS/FreshRSS/ to get the correct links and pictures. Version française FreshRSS FreshRSS is a self-hosted RSS fe

FreshRSS 3.3k Jun 21, 2021
A tool for creating configurable dumps of large MySQL-databases.

slimdump slimdump is a little tool to help you create configurable dumps of large MySQL-databases. It works off one or several configuration files. Fo

webfactory GmbH 161 Jun 8, 2021
Rubix Server is a library for bringing your trained Rubix ML models into production.

Rubix Server is a library for bringing your trained Rubix ML models into production. Inference servers are stand-alone services that run on your private or public network and wrap your trained estimator in an API that can be queried locally or over the network in real-time using standard protocols. In addition, the library provides async-compatible client implementations for making queries to the server from your PHP applications.

Rubix 36 May 23, 2021
A framework agnostic PHP library to build chat bots

BotMan If you want to learn how to create reusable PHP packages yourself, take a look at my upcoming PHP Package Development video course. About BotMa

BotMan 5.4k Jun 18, 2021
Collection pipeline library for PHP

Knapsack Collection pipeline library for PHP Knapsack is a collection library for PHP >= 5.6 that implements most of the sequence operations proposed

Dušan Kasan 523 May 5, 2021
Pagination for PHP.

NB This project is no longer maintained; you may like to use https://github.com/BabDev/Pagerfanta instead. Pagerfanta This project is for PHP 7. If yo

White October 1.6k Jun 13, 2021