This is an ongoing prototype of a plaintext accounting environment based on Eclipse Theia and including Beancount, VSCode-Beancount, and Fava.
The aspiration of Beancolage is to provide a more 'download and try' experience for plaintext accounting, centered around Beancount and Fava. The hope is to make the plaintext accounting experience accessible beyond just those with deep technical expertise, potentially to assist in group/organization bookkeeping. This said, Beancolage is intended to be a bricolage and not intended to be a fully-integrated accounting tool.
No, this is a missing piece of Beancolage right now, and may be explored later. Generally importers in the plaintext accounting space have been a challenge to collaboratively develop on - for now you might want to check the external contribution guides on importing, such as The Five Minute Ledger Update.
Beancolage is built upon Eclipse Theia, a framework for building cloud and desktop IDEs.
- Eclipse Public License 2.0
- 一 (Secondary) GNU General Public License, version 2 with the GNU Classpath Exception
Beancolage also uses:
- vscode-beancount by Lencerf (MIT License)
- ves-process from VUEngine Studio (Eclipse Public License v2.0)
Future releases of Beancolage plan to include:
This repository, including this readme, is heavily based on Theia-IDE (fka Theia-Blueprint) with various UI extensions.
- Root level configures mono-repo build with lerna
applicationsgroups the different app targets:browsercontains a browser based version of Beancolage that may be packaged as a Docker imageelectroncontains app to package, packaging configuration, and E2E tests for the electron target.
extensions/beancolage-extensions-extgroups the various extensions, withinsrcthere is:navigator-fava- A navigation panel for opening beancount files in Fava, and to see open Fava views (based on open-editors-widget).fava-interface- manages Fava server, notably adding in file arguments.process- copy of ves-process from VUEngine Studio.
extensions/beancolage-product-extis based on theia-blueprint-product and handles application-wide customizations (getting started page, help, default workbench layout, colors, etc.).
At this time, builds only work if you have Beancount and Fava installed such that fava by command line can be called.
- Install [Fava], assuming you already have Python installed this can be done via:
pip install favaTODO
-
Clone this repository.
-
Install nvm.
-
Install npm and node.
nvm install --ltsnvm use --lts`- Install yarn.
npm install -g yarnIf adding or updating any vscode plugins (e.g. vscode-beancount) you may need to do:
yarn theia download:pluginsyarn prepareyarnFor development and casual testing, one can build it in "dev" mode:
# Build "dev" version of Beancolage. Its quicker, uses less resources,
# but the front end app is not "minified"
yarn && yarn build:dev && yarn download:pluginsFor production builds:
# Build production version Beancolage
yarn && yarn build && yarn download:pluginsyarn package:applications
# or
yarn electron packageThe packaged application is located in applications/electron/dist.
NOTE: In practice I have found myself running npx theia rebuild:electron followed by yarn electron package , likely due to electron-rebuild issues that result in Error: Module did not self-register:[...]drivelist.node errors
yarn electron package:previewThe packaged application is located in applications/electron/dist.
The E2E tests basic UI tests of the actual application. This is done based on the preview of the packaged application.
yarn electron package:preview
yarn electron testThe browser app may be started with
# Download Plugins for browser app
yarn browser download:plugins
# Start browser app
yarn browser startand connect to http://localhost:3000/
TODO
Many features in Beancolage are based on Theia and the included extensions/plugins. For bugs in Theia please consider opening an issue in the Theia project on Github.
If something isn't working properly, please open an issue on Github to let us know.
You can create a Docker Image for Beancolage based on the browser app with the following build command:
docker build -t beancolage -f browser.Dockerfile .You may then run this with
docker run -p=3000:3000 --rm beancolageand connect to http://localhost:3000/

