About
=====

This is the GNU Taler merchant backend. It provides the logic that should run
at every GNU Taler merchant.  The GNU Taler merchant is a RESTful backend that
can be used to setup orders and process payments.  This component allows
merchants to receive payments without invading the customers' privacy. Of
course, this applies mostly for digital goods, as the merchant does not need
to know the customer's physical address.

A general-purpose merchant back-office single-page (HTML/JavaScript)
application is also included (alas, the source code for it is in another Git
repository).

This merchant backend must be combined with a merchant frontend, such as
an e-commerce application.  You can find a WooCommerce plugin, a snack
machine integration (taler-mdb) and various demonstrator front-ends at
https://git.taler.net/.


Joining GNU
===========

This is a GNU program, developed by the GNU Project and part of the
GNU Operating System. If you are the author of an awesome program and
want to join us in writing Free Software, please consider making it an
official GNU program and become a GNU maintainer.  You can find
instructions on how to do so at http://www.gnu.org/help/evaluation.
We are looking forward to hacking with you!


Dependencies:
=============

Build tools for compiling Taler merchant from source:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- gcc or clang
- autoconf           >= 2.69        (building from git)
- automake           >= 1.11.1      (building from git)
- recutils           >= 1.0         (building from git)
- libtool            >= 2.2
- makeinfo           >= 4.8
- make[*3]
- pkgconf or pkg-config
- sphinx
- sphinx-rtd-theme
- sphinx-multiversion


Direct dependencies
~~~~~~~~~~~~~~~~~~~

These are the direct dependencies for running a Taler exchange:

- GNU Taler exchange >= 0.14.0
- PostgreSQL         >= 15.0
- libqrencode


Project structure
=================

src/backend/
   contains the "backend", a C piece of software which implements crypto routines
   and communication with the 'exchange'

src/backenddb/
   contains the database interactions (for now only PostgreSQL)

src/lib/
   contains a C API to talk to the REST API of merchant backend

src/util/
   common utility functions

src/bank/
   utility functions to talk to the Taler bank revenue API to
   reconcile transactions

src/merchant-tools/
   contains helper programs to setup or manipulate the merchant backend

src/testing/
   contains test cases for the merchant backend

doc/
   contains documentation files, like TeXinfo

contrib/
   contains the single-page-app (Web interface) as a submodule,
   as well as CI/CD logic.
