a file sharing solution for you and your friends.
I was on a trip with friends recently. Not all of them had the same OS on their phone and we didn't want to send the files via messenger. So I had the idea to build this. It is supposed to be file sharing managed into groups. I intend on adding auth in the future. I didn't have time to implement everything as this is MY FIRST PROJECT IN RUST.
- file sharing for groups
- speeeeeed (cuz Rust)
- very nice logging in the backend
- metadata storage
- automatic file-deduplication (no file is stored more than once at the same time)
- UNIX OS? probably even windows
- Bun (or another TS/JS runtime) and Rust installed
paste the following into backend/.env
DATABASE_URL=
UPLOAD_PATH=WHERE_TO_SAFE_FILES
ALLOWED_ORIGINS=http://localhost:3001,http://localhost:3000 # replace with your actual originscd backend
cargo build --release
cd ../web
bun i
bun run buildThe above gives you a binary you can call
You need to setup backend/.env (see backend/README.md)
and do UPLOAD_PATH=/data/uploads
cd backend
docker build --tag spaces-backend .
docker run --env-file .env -p 6570:6570 spaces-backend
# or use in docker-composeI recommend making an extra user with its own home file directory where you can then safe the uploaded files
spaces-backend.service
[Unit]
Description=Spaces Backend
After=network.target
[Service]
Type=simple
User=your-user
WorkingDirectory=/home/your-user/spaces/backend
ExecStart=/home/your-user/spaces/backend/target/release/backend
Restart=on-failure
RestartSec=5
Environment="RUST_LOG=info"
[Install]
WantedBy=multi-user.target:spaces-backend.service
[Unit]
Description=Spaces Web
After=network.target
Require=spaces-backend.service
[Service]
Type=simple
User=your-user
WorkingDirectory=/home/your-user/spaces/web
ExecStart=/home/your-user/.bun/bin/bun run .output/server/index.mjs
Restart=on-failure
RestartSec=5
Environment="NODE_ENV=production"
Environment="PORT=3000"
[Install]
WantedBy=multi-user.target