https://github.com/theandrew168/dripfile
File transfers made easy
https://github.com/theandrew168/dripfile
file-transfer ftp ftps golang react s3 sftp typescript
Last synced: 5 months ago
JSON representation
File transfers made easy
- Host: GitHub
- URL: https://github.com/theandrew168/dripfile
- Owner: theandrew168
- License: mit
- Created: 2022-01-06T18:26:01.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-12-12T01:23:25.000Z (over 1 year ago)
- Last Synced: 2025-04-10T01:13:29.821Z (about 1 year ago)
- Topics: file-transfer, ftp, ftps, golang, react, s3, sftp, typescript
- Language: Go
- Homepage:
- Size: 2.4 MB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Dripfile
File transfers made easy
## Setup
This project depends on the [Go programming language](https://golang.org/dl/) and [NodeJS JavaScript environment](https://nodejs.org/en).
I like to use a [POSIX-compatible Makefile](https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/make.html) to facilitate the various project operations but traditional [Go commands](https://pkg.go.dev/cmd/go) and [NPM scripts](https://docs.npmjs.com/cli/v9/commands/npm-run-script) will work just as well.
On macOS, these dependencies can be easily installed via [Homebrew](https://brew.sh/):
```
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](https://www.docker.com/) to be a nice tool for this but you can do whatever works best.
- [PostgreSQL](https://www.postgresql.org/) - for persistent storage and task queue
- [MinIO](https://min.io/) - 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)