Skip to content

theandrew168/dripfile

Repository files navigation

Dripfile

File transfers made easy

Setup

This project depends on the Go programming language and NodeJS JavaScript environment. I like to use a POSIX-compatible Makefile to facilitate the various project operations but traditional Go commands and NPM scripts will work just as well.

On macOS, these dependencies can be easily installed via Homebrew:

brew install go node

Building

To build the application into a standalone binary, run:

make -j

Local Development

Services

This project depends on various services. To develop locally, you'll need to run these services locally somehow or another. I find Docker to be a nice tool for this but you can do whatever works best.

  • PostgreSQL - for persistent storage and task queue
  • MinIO - for integration testing

The following command starts the necessary containers:

docker compose up -d

These containers can be stopped via:

docker compose down

Running

To run (and auto-reload) the backend and frontend simultaneously:

make -j run

Features

  • Schedule-based transfers
  • Polling-based transfers
  • Automatic retries
  • Notify via email, text, etc
  • Works with S3, FTP, FTPS, SFTP, etc
  • Choose from common schedules or build your own

User Stories

  • Guest registers and is logged in
  • Guest logs in
  • User verifies their email address (required to log in?)
  • User updates another User's role (owner or admin)
  • User deletes Account (and all ref'd info)
  • User CRUDs a Location (no delete if affected Transfers)
  • User CRUDs a Transfer (history entries persist but won't link back)
  • User CRUDs a Schedule (no delete if affected Transfers)
  • User links / unlinks a Transfer and Schedule
  • User runs a Transfer adhoc
  • User reruns a completed Transfer adhoc
  • User views Transfer history
  • User cancels an in-progress Transfer
  • User switches account auth method (email, github, google, etc)