Getting started

Note

Currently, Sachet does not have the configs to run under WSGI for production yet. This page only explains how to get Sachet up and running for development purposes.

Installation

Clone the repo:

git clone https://github.com/dogeystamp/sachet-server
cd sachet-server

Create a venv with required dependencies:

python -m venv venv
source venv/bin/activate
python -m pip install -r requirements.txt

Create a configuration file:

cp config.yml.example config.yml

Remember to set up a secret key in config.yml:

SECRET_KEY: "41DJjqp6+Ztk9krJkwbZem1+JijowDU6ifkgdntF2FK3ygi5HM"

Note

You can generate a secret key using the following command on Linux:

cat /dev/urandom | base64 | head -c 50

Warning

Keep this secret key safe! If you leak this key, a malicious attacker could authenticate as any user on your server.

Initialize the database:

flask --debug --app sachet.server db upgrade

Set up an administrator user:

flask --debug --app sachet.server user create --username admin --admin yes --password password123

Warning

Setting the password via the command-line is not safe. In a real environment, you should reset this password immediately (see Password change.)

You can now start Sachet in development mode:

flask --debug --app sachet.server run

Development

Note

This section also requires being in the virtual environment:

source venv/bin/activate

Testing

You can run tests using pytest:

pytest --cov --cov-report term-missing

Linting

Please use the linter before submitting code:

black .

Database maintenance

To clean up the database (remove stale entries):

flask --app sachet.server cleanup

Otherwise, to upgrade the database after a schema change:

flask --app sachet.server db upgrade

Documentation

This documentation is built using Sphinx with the following steps.

First, create a new virtual environment for documentation-related dependencies:

python -m venv .docvenv
source .docvenv/bin/activate
python -m pip install -r docs/requirements.txt

Then, build docs:

make -C docs html

You can now view the documentation with a web browser:

xdg-open docs/_build/html/index.html