Awesome
filebox.js
filebox.js is just a simple and personal file hosting system.
This is not a complex system with auth or permissions. For that I use and recommend SugarSync, Dropbox, or Google Drive.
Currently at version 0.0.1
Screenshots
Current Features
- Supports drag & drop to upload
- Supports 1 file at a time (multiple files on TODO)
- Load more images on scroll
- Mobile first approach
- For design
- For bandwidth/screen-size (each "page" downloads only how many images fit per screen)
- Shows thumbnails instead of the actual images when listing
- All file types supported
- No file size limit (it'll be limited by your server settings)
Pre-requisites
filebox.js requires you to have Node.js, npm, mongodb, redis, and imagemagick installed.
Additionally, some global npm modules are required to build the front-end:
$ npm install -g gulp
Install
- Download filebox.js
- Run
$ npm install -d
- Run
$ gulp build
Configure/Setup
- Copy
./generic.png
to youruploads/
directory (default config needs it in../uploads
). - Create a
boot/local.js
if you're developing locally. It's not versioned, but you can copy it fromboot/local.sample.js
- Look around in
boot/config.js
if you need to change anything (db name, session & cookie prefix, for example). You can do them there or inboot/local.js
Please note boot/local.js
is only loaded if you're in development
mode (no NODE_ENV
, or NODE_ENV === 'development
).
Run
If you're doing this for production, don't forget to put it under http basic auth, as the app itself doesn't have auth
To run it locally, simply do $ node app
.
There's a lot of information and possibilities if you want to run the app in production. I like forever
. You should, however, $ export NODE_ENV=production
before running it.
Test
$ npm test
for e2e tests
Development
I follow these coding standards/guidelines.
License
TODOs
- Make upload show a progress bar instead of just a loading icon
- Support multiple files upload
- Make search work
- Actually fetch tags to show them "prettier" when editing an image
- Update
db.tags
whenever a file is updated - Make it consistent in the code to have/say
file
instead ofimage
, since it does allow anything to be uploaded.