SafeSend is a secure file transfer backend that lets users upload files and share time-limited download links. Files are stored in AWS S3 and shared via short-lived pre-signed URLs so the backend does not directly stream file data.
- Upload a file and generate a shareable link token
- Download via token with expiration and max-download limits
- Audit logging for download attempts (success/fail + reason)
- Authenticated users can view file metadata and revoke links
- Java, Spring Boot (REST API)
- AWS S3 (object storage, pre-signed upload/download)
- PostgreSQL (metadata + audit logs)
- Docker (local dev)
- Swagger / OpenAPI (API docs)
- Client requests an upload
- API creates a metadata record and returns a pre-signed S3 upload URL
- Client uploads directly to S3
- Client shares a token-based link
- Download requests validate token rules and return a pre-signed S3 download URL
POST /auth/registerPOST /auth/login
POST /files
Creates a file record and returns a pre-signed upload URL + share token.GET /files/{token}
Validates token rules and returns a pre-signed download URL.GET /files/{id}/metadata
Returns file metadata (owner-only).POST /files/{id}/revoke
Revokes an existing share token (owner-only).
Coming soon.
Coming soon.
- Add rate limiting
- Add background cleanup for expired files
- Add optional malware scan hook / scan status field