{"id":16592637,"url":"https://github.com/prikhi/quickbooks-for-communes","last_synced_at":"2025-10-25T16:46:49.446Z","repository":{"id":80049628,"uuid":"169345045","full_name":"prikhi/quickbooks-for-communes","owner":"prikhi","description":"A QuickBooks Web UI For Communard-Friendly Forms \u0026 Reporting","archived":false,"fork":false,"pushed_at":"2020-07-19T22:35:50.000Z","size":6942,"stargazers_count":13,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-02T01:01:51.266Z","etag":null,"topics":["halogen","haskell","purescript","quickbooks","quickbooks-desktop","quickbooks-web-connector","quickbooks-webui","servant"],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prikhi.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-06T02:23:35.000Z","updated_at":"2022-05-17T20:57:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"ec2a5c8a-c2ec-42e1-9440-3a63f0c550d6","html_url":"https://github.com/prikhi/quickbooks-for-communes","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prikhi%2Fquickbooks-for-communes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prikhi%2Fquickbooks-for-communes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prikhi%2Fquickbooks-for-communes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prikhi%2Fquickbooks-for-communes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prikhi","download_url":"https://codeload.github.com/prikhi/quickbooks-for-communes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238803506,"owners_count":19533330,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["halogen","haskell","purescript","quickbooks","quickbooks-desktop","quickbooks-web-connector","quickbooks-webui","servant"],"created_at":"2024-10-11T23:21:39.198Z","updated_at":"2025-10-25T16:46:44.423Z","avatar_url":"https://github.com/prikhi.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"#######################\nQuickBooks for Communes\n#######################\n\n.. image:: https://travis-ci.org/prikhi/quickbooks-for-communes.svg?branch=master\n    :target: https://travis-ci.org/prikhi/quickbooks-for-communes\n    :alt: QuickBooks for Communes Build Status\n\n\nQuickBooks for Communes is a web application built specifically for\nnon-Accountant communards, consisting of a Purescript frontend and a Haskell\nAPI server that communicates with QuickBooks Desktop using the `QuickBooks\nWebConnector`_.\n\nThis is a port of our `Acorn Accounting`_ application and still in the alpha\nstage.\n\nThe frontend will present Communards with transaction logs for relevant\nAccounts as well as forms for entering their Credit Card purchases, Town Trips,\nor Internal Transfers.\n\n.. _QuickBooks WebConnector: https://developer.intuit.com/app/developer/qbdesktop/docs/get-started/get-started-with-quickbooks-web-connector\n.. _Acorn Accounting: https://github.com/prikhi/acornaccounting\n\n\n\nGoals\n#####\n\nEventually we'd like to have support for:\n\n* Forms for communards to account for their Trips, Credit Card Purchases, \u0026\n  Internal Transfers.\n* A workflow for accountants to approve entries before they are pushed to\n  QuickBooks.\n* Public views of approved entries \u0026 their receipts.\n* A Chart of Accounts designed for communards, along with detailed account\n  ledgers.\n* Support for attaching receipts to entries.\n* User accounts for communards, allowing them go back and edit their\n  non-approved entries.\n* Tracking of communards membership dates, used to pay monthly \u0026 yearly\n  stipends.\n\n\nWe don't plan on:\n\n* Supporting multiple languages.\n* Supporting multiple currencies.\n* Managing existing QuickBooks data. We only want to push data *to* QuickBooks.\n\n\n\nBuild\n#####\n\n``manage.hs`` is a management script for the project. You can use it to make\nproduction builds, rebuild the code on file changes, \u0026 clean any build\nartifacts.\n\nYou need `Stack`_ \u0026 `Yarn`_ installed. Then you can simply run ``./manage.hs``\nto start the development servers. ``./manage.hs build`` will make production\nbuilds for the server \u0026 client, while ``./manage.hs clean`` will remove the\nbuilt files.\n\nYou can also do some lower-level building of the frontend \u0026 backend.\n\n.. _Stack: https://docs.haskellstack.org/en/stable/README/\n.. _Yarn: https://yarnpkg.com/\n\n\nClient\n======\n\nWe use `Spago`_ \u0026 `pscid`_ to build the client code \u0026 `Parcel`_ to bundle \u0026\nserve the UI during development.\n\n.. code:: bash\n\n   cd client\n   yarn install\n   yarn run watch\n   yarn run serve\n\nThe ``watch`` command rebuilds the client when the source files change, and\n``serve`` starts a development server that builds the styles, serves the index,\n\u0026 redirects requests to the ``/api/`` path to the backend server.\n\nTo assemble the code, styles, \u0026 HTML for production, run ``yarn run build``.\n\n.. _Spago: https://github.com/spacchetti/spago\n.. _pscid: https://github.com/kRITZCREEK/pscid\n.. _Parcel: https://parceljs.org/\n\n\nServer\n======\n\nWe use `Stack`_ to build the server \u0026 manage it's dependencies, with a\n``Makefile`` for running common commands :\n\n.. code:: bash\n\n   cd server\n   make run\n   make watch\n\n\n\nConfiguration\n#############\n\nServer configuration is done through YAML files. Some sensible defaults are\nloaded from the ``default-settings.yaml`` file, but this does not contain\ninstance-specific settings. Therefore, you will need to create a\n``settings.yaml`` file in the ``server`` directory, with at least the following\nfields:\n\n.. code:: yaml\n\n   account-sync:\n      id: \"\u003csome-uuid\u003e\"\n\nUnless you're running the server on the same system as the WebConnector, you'll\nneed to set the ``hostname`` field as well.\n\nYou can generate UUIDs by running the following commands in ``stack repl``::\n\n   :set -XScopedTypeVariables\n   import Data.UUID\n   import System.Random\n   (randomIO :: IO UUID) \u003e\u003e= print\n\nTODO: Add a script for generating minimum ``settings.yaml`` file with\nrandomized values? Generate on first run if one doesn't exist?\n\n\nTLS Configuration\n=================\n\nThe QuickBooks WebConnector requires TLS when connecting to hosts other than\n``localhost``. You can use ``openssl`` to generate the self-signed certificate\nand key files(if your server is accessible from the internet, you should use a\nnormal TLS certificate instead):\n\n.. code:: bash\n\n   cd server\n   openssl req -x509 -newkey rsa:4096 -sha256 -nodes -days 3650 \\\n      -subj '/C=US/ST=Virginia/L=Mineral/O=Southern Exposure/CN=\u003cqbfc-server-domain\u003e' \\\n      -keyout key.pem -out cert.pem\n\nReplace ``\u003cqbfc-server-domain\u003e`` with the FQDN of your QuickBooks for\nCommunards server(e.g., ``accounting.acorn``). If your server does not have a\ndomain name, you can use any arbitrary domain, provided you add it to the\n``hosts`` file on the computer running QuickBooks. This file usually lives at\n``C:\\Windows\\System32\\Drivers\\etc\\hosts``::\n\n   192.168.1.XXX qbfc-server.local\n\nBy default, QuickBooks will not trust a self-signed certificate. You'll need to\ntell your QuickBooks computer to trust it:\n\n#. Open Internet Explorer\n#. Open the settings menu and select ``Internet Options``\n#. Click the ``Content`` tab and then the ``Certificates`` button\n#. Click the ``Trusted Root Certification Authorities`` tab and then the\n   ``Import`` button\n#. Load your generated ``cert.pem`` file\n#. Test the certificate by visiting ``https://qbfc-server.local:3000/cert/``,\n   you should see a blank page instead of an TLS error or Insecure Webpage\n   warning.\n\n\nDocumentation\n#############\n\nYou can build the client's documentation with ``yarn``::\n\n   cd client\n   yarn run docs\n\nThe documentation will be placed in ``/client/generated-docs/index.html``.\n\n\nYou can build the server's package documentation \u0026 open it in your web\nbrowser::\n\n   cd server\n   make docs\n\n\nSome useful external references:\n\n* `QuickBooks Web Connector Programmer's Guide[PDF]`_\n* `QuickBooks Desktop API Reference`_\n* `QuickBooks SDK Request/Response Reference`_\n* `QBXML v13 Samples`_\n* Example SOAP Requests/Responses: `Authenticate`_, `Send Request`_,\n  `Receive Response`_, `Close Connection`_\n* `ConsoliBYTE's Wiki`_\n\n\n.. _QuickBooks Web Connector Programmer's Guide[PDF]: https://developer-static.intuit.com/qbSDK-current/doc/PDF/QBWC_ProGuide.pdf\n.. _QuickBooks Desktop API Reference: https://developer.intuit.com/app/developer/qbdesktop/docs/api-reference\n.. _QuickBooks SDK Request/Response Reference: https://developer-static.intuit.com/qbsdk-current/common/newosr/\n.. _QBXML v13 Samples: https://github.com/IntuitDeveloper/QBXML_SDK13_Samples/tree/master/xmlfiles\n.. _Authenticate: http://wiki.consolibyte.com/wiki/doku.php/quickbooks_web_connector_soap_authenticate\n.. _Send Request: http://wiki.consolibyte.com/wiki/doku.php/quickbooks_web_connector_soap_sendrequestxml\n.. _Receive Response: http://wiki.consolibyte.com/wiki/doku.php/quickbooks_web_connector_soap_receiveresponsexml\n.. _Close Connection: http://wiki.consolibyte.com/wiki/doku.php/quickbooks_web_connector_soap_closeconnection\n.. _ConsoliBYTE's Wiki: http://wiki.consolibyte.com/wiki/doku.php/quickbooks_web_connector\n\n\nLicense\n#######\n\nGPL-3.0, exceptions possible.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprikhi%2Fquickbooks-for-communes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprikhi%2Fquickbooks-for-communes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprikhi%2Fquickbooks-for-communes/lists"}