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
- 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)
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
- Download filebox.js
- Run
$ npm install -d - Run
$ gulp build
- Copy
./generic.pngto youruploads/directory (default config needs it in../uploads). - Create a
boot/local.jsif you're developing locally. It's not versioned, but you can copy it fromboot/local.sample.js - Look around in
boot/config.jsif 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).
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.
$ npm test for e2e tests
I follow these coding standards/guidelines.
- 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.tagswhenever a file is updated - Make it consistent in the code to have/say
fileinstead ofimage, since it does allow anything to be uploaded.

