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!