How to Use Sprout
The recommended way to use Sprout is with a Docker image. To get started, use the following
docker-compose.yml
snippet:
sprout:
container_name: sprout
image: croudebush/sprout:stable
volumes:
# The database .sqlite file will be stored in /sprout
- /mnt/user/appdata/sprout:/sprout
ports:
- 80:80
restart: unless-stopped
environment:
TZ: America/New_York
sprout_providers_simpleFIN_accessToken: ${SIMPLE_FIN_ACCESS_URL}
sprout_server_jwtExpirationTime: 7d
After launching the container, navigate to http://localhost
in your browser
to begin the setup process.
Available Images
-
croudebush/sprout:stable
: This is the recommended image for most users. It is only updated with tagged, stable releases from the main branch. -
croudebush/sprout:dev
: This image is tied directly to the master branch and updates with every commit. Use this for testing the latest features, but expect potential instability.
Apps
Sprout offers a companion Android application for on-the-go access. The app is currently in a closed testing phase.
To request access to the closed test, please email the developer. You can find contact information on the developer's GitHub profile.
Configuration
The configuration file, sprout.config.yml
, is generated dynamically and
placed next to the executable inside the container. Below are the available options with definitions.
providers:
# How often to perform data queries for data from providers. Default is once a day at 7am.
updateTime: 0 7 * * *
# SimpleFIN configuration: https://www.simplefin.org/
simpleFIN:
# This access token is acquired from SimpleFIN.
# Get one here: https://beta-bridge.simplefin.org/info/developers
accessToken:
# How many days to look back for transactional data.
lookBackDays: 7
# How many API calls we allow per day for this provider.
rateLimit: 24
# Core server config options
server:
# The port to accept backend requests on.
port: 8001
# How long JWT's should stay valid for users
jwtExpirationTime: 30m
# Database specific options
database:
# Configuration for performing database backups automatically
backup:
enabled: true
count: 30
time: 0 4 * * *
directory: /backups/database
# Must be one of: [sqlite]
type: sqlite
sqlite:
database: sprout.sqlite
# Settings specific to transactions
transaction:
# When to check for stuck transactions. This includes things like stuck pending.
stuckTransactionTime: 0 3 * * *
Environment Variables
Environment variables are fully supported. Use the prefix sprout_
followed
by the config path. Here are some common examples:
TZ: America/New_York
sprout_server_port: 9000
sprout_server_jwtExpirationTime: 7d
sprout_providers_simpleFIN_accessToken: MY_ACCESS_TOKEN
Development
Sprout is built with a "mobile first" approach using Flutter for its interfaces and a Node.js backend.
For development, we recommend using VS Code. The repository includes a VS Code workspace file that sets up recommended extensions and debug configurations. You can launch the debuggers directly from VS Code to run and debug both the Flutter frontend and Node.js backend.
Useful Commands
To simplify common development tasks, several npm scripts have been created. These commands are run from the project's root directory.
# Build the Docker image
npm run docker:build
# Fixes code styling issues
npm run prettier:write
Contributions
For feature requests and bug reports, please open an issue on GitHub. We appreciate all reports and contributions!