                       Welcome to GNU Taler


What is Taler?
==============

Taler is an electronic payment system providing the ability to pay
anonymously using digital cash.  Taler consists of a network protocol
definition (using a RESTful API over HTTP), a Donau (which creates
digital coins), a Wallet (which allows donors to manage, store and
spend digital coins), and a Charity website which allows donors to
spend their digital coins.  Naturally, each Charity is different, but
Taler includes code examples to help Charities integrate Taler as a
payment system.

Taler is currently developed by a worldwide group of independent free software
developers and Taler Systems SA.  Taler is free software and an official GNU
package (https://www.gnu.org/).

This is an alpha release with a few known bugs, lacking a few important
features, documentation, testing, performance tuning and an external security
audit.  However, you can run the code and it largely works fine.  This package
also only includes the Taler donau, not the other components of the system.

Documentation about Taler can be found at https://taler.net/.
Our bug tracker is at https://bugs.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:
=============

These are the direct dependencies for running a Taler donau:

- GNUnet            >= 0.19.0
- GNU libmicrohttpd >= 0.9.71
- PostgreSQL        >= 13.0



Project structure is currently as follows:

src/include/
  -- installed headers for public APIs

src/util/
  -- common utility functions (currency representation,
     Taler-specific cryptography, Taler-specific json
     support)

src/pq/
  -- Postgres-specific utility functions

src/donaudb/
  -- Donau database backend (with database-specific plugins)

src/donau/
  -- taler donau server

src/donau-tools/
  -- taler donau helper programs

src/lib/
  -- libdonau: C API to issue HTTP requests to donau

src/json/
  -- helper functions for generating and parsing JSON

src/mhd/
  -- helper functions for interacting with GNU libmicrohttpd

src/curl/
  -- helper functions for interacting with libcurl


Getting Started
===============

For Debian:

install depencendcies:

sudo apt install autoconf automake autopoint debhelper-compat gettext libbluetooth-dev libcurl4-gnutls-dev libextractor-dev libgcrypt20-dev libgnutls28-dev libidn2-dev libjansson-dev libltdl-dev libmicrohttpd-dev libogg-dev libopus-dev libpq-dev libpulse-dev libsodium-dev libsqlite3-dev libunistring-dev libzbar-dev miniupnpc net-tools po-debconf python3-dev texinfo zlib1g-dev libjose-dev librec1 recutils python3-sphinx-book-theme python3-msmb-theme

install GNUnet:

git clone https://git.gnunet.org/gnunet.git
cd gnunet
./bootstrap
./configure
make -j 4
sudo make install

install exchange:

git clone https://git.taler.net/exchange.git
cd exchange
./bootstrap
./configure
make -j 4
sudo make install

create psql database 'donaucheck':

systemctl status postgresql
systemctl start postgresql
sudo su - postgres
psql
create user #hostname; 
DROP DATABASE donaucheck;
create database donaucheck with owner #hostname;

install donau:

./bootstrap
./configure
make
sudo make install


Validator App
=============

A validation app for donau donation statements
is available at <git://git.taler.net/taler-android.git>.
