Share viewable files really quickly over the web.
No sign-up required.
Just upload an html, markdown, plaintext, or pdf document, and get a shareable link that correctly displays the document right in the browser, without being offered a download.
This project is came out of a need of mine where I wanted to quickly share loose html documents rendered correctly as links, in a google-drive like fashion.
Loosie is Open Source software and I highly recommend deploying your own instance and using it in a decentralized way.
I am providing instructions for Heroku (especially because it’s free), but this application works anywhere as long as you can install Racket and PostgreSQL, and set the following environment variables:
DATABASE_URL=<your postgresql database url> APP_URL=<your webapp url (without trailing slash)>
- Create your heroku account and create a new app (let’s say you picked the name
foosie
) - Clone this repository
git clone https://github.com/tfidfwastaken/loosie.git && cd loosie
- Link this repository to your app
heroku git:remote -a foosie
- Set up the Racket buildpack and Postgres addon on Heroku
heroku buildpacks:set https://github.com/lexi-lambda/heroku-buildpack-racket heroku addons:create heroku-postgresql:hobby-dev
- Set the environment variables
heroku config:set RACKET_VERSION=7.7 heroku config:set APP_URL=https://foosie.herokuapp.com
And in five steps you have setup your own personal file sharing instance!
Example of a hosted file on my instance:
https://loosi.herokuapp.com/l/Ru9l6q2SpM9z (html version of this readme)
https://loosi.herokuapp.com/l/kkDRtzcq8Hk5 (markdown version of this readme)
All the passphrase-protected data stored on a loosie instance is encrypted, and as long as you keep your passphrase a secret, even the instance owner cannot access it. So yes, this service is fairly secure. That said, be cautious when uploading sensitive documents to an instance and make sure you trust the instance owner, as a malicious actor can still host a fork that removes the security features provided in this code.