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)