A microservice to securely transfer documents.
The service is configured using a series of environment variables. The actual variables required will depend on the source and destination types you wish to support.
A sample .env
file has been included to help you get started. Simply
copy this file to .env
and update the values as needed.
Make sure this file is then loaded into your environment before running the service. This can be done automatically through various shell tools (such as Oh My Zsh), or manually by running the following:
source .env
Note: Your .env
file will contain sensitive information. This file is ignored
by git, but it is your responsibility to ensure this file remains safe and
secure.
Follow the documentation below for your preferred method of running the service. Once you have the service running, see Create Auth Key to set up credentials to use the API.
This service is designed to be run in a containerized environment. As such, it includes a Dockerfile and a docker compose file to facilitate running the service.
Using docker compose, the application code will be mounted from your local system to the running container. This will allow you to make changes to the code and see them reflected in the running service without having to rebuild the image. Using docker compose will launch the api, the worker, and a database.
To run the service with docker compose, make sure you have Docker Desktop installed and run the following:
docker compose up -d
The service should now be available at http://localhost:3000
.
When you run docker compse up -d
, the service will be updated to match the
latest state defined in compose file. However, it will not detect changes that
may require a rebuild of the image. In order to force a rebuild, you can pass
the --build
flag to the command:
docker compose up -d --build
You can also update just the api service by specifying the service name:
docker compose up -d --build api
In order to run the service locally, you will need to have Ruby installed. We
recommend using a virtual environment manager such as RVM to manage your Ruby
installations. The required version of Ruby is defined in the
.ruby-version
file.
You will also need a database for the service to store data. Please review the database documentation for more information on how to configure the service to connect to your database before proceeding.
With ruby installed and the database configured, install gem dependencies and set up the database with the following:
bundle install
bundle exec rake db:setup
You should now be able to start the service with:
./script/api
The service should now be available at http://localhost:9292
.
The worker is a separate process that is responsible for processing background jobs. Depending on the parts of the service you're using, you may need to run the worker alongside the API.
To run the worker, see the worker documentation for more information.
When you update the service locally, you will need to install any new dependencies and run any database migrations before you can start the service. You can do this by running the following:
bundle install
bundle exec rake db:migrate
If you need to reset the database to it's initial state, you can use the following:
bundle exec rake db:reset
If you'd like to drop the database entirely, you can do so with:
bundle exec rake db:drop
See the API documentation for information on how to interact with the service.
Necessary documentation to operate, use, maintain, and contribute to the service is included in this repository. The majority of these documents are written in Markdown and can be rendered directly in GitHub or you favorite IDE. However, the documentation as a whole is meant to be converted to a static site using MkDocs.
In order to view the documentation in its intended form locally, you can use the included docker container. Simply run the following:
docker compose --profile docs up -d
The documentation should then be available at http://localhost:8000.