# once: a one-time file sharing personal service It happens that I want to share a file with someone which is sensitive enough that I don't want to upload on a public free service. I would like to have something like transfer.sh, running as a personal service, with the following features: - it must be serverless (I'm not willing to pay except for the actual file storage, and only for the time strictly required) - it must return a link that I can share to anyone - file must be deleted as soon as it get *successfully downloaded* - it must expose a simple HTTP API, so *curl* should suffice to share a file - it must be protected with some form of authentication With CDK I could create the following resources: - An S3 bucket to host the uploaded files - A Lambda function to implement the 'get-upload-ticket' - A Dynamodb table to store the information about the entries - Another Lambda function to implement a "smart" download handler, to delete the file after the very first successful transfer. I will use API Gateway to expose the lambda functions as an HTTP API. HERE BE DIAGRAM! ## TODO [+] Publish it to a custom domain name: DONE [+] Set logs retention policy [+] Deploy custom domain as a nested stack [+] Mask link preview depending on the user agent [+] Add a robust authentication method - Add progressbar to client - Package application as a click app - Write a proper README with instructions - Record a demo - write tests with pytest - publish the source code - write a blog post - add a link to the blog post in the README