Piffy is a hackable decentralized cloud media player for Web, Desktop, and Mobile.
# Install bower and npm dependencies
bower install && npm install
Run development web app:
npm run dev
Run development desktop app:
npm run dev-desktop
Create web distribution:
npm run dist
Create desktop distribution for OSX & Windows:
npm run dist-desktop
Node webkit package distribution.
- Fix "Queue" playlist view
- WRITE TESTS AND SWITCH TO REACT + ELECTRON
- Theme support
- Add Babel
- Add ESLint and Style Guide
- Web context menu polyfill/shim
- Deprecate node-webkit for electron
- Integrate player.js
- Integrate video support
- Add video torrent search
- Add URL loader
- Fire TV launcher
- Chromecast launcher
- Chrome sync extension
- Search (
Soundcloud,YouTube, Torrents Plugins, RSS Plugins, XBMC Plugins) - Decentralized
- Sort playlist
- Multiple search tabs
- Desktop support (Node-webkit)
- Mobile support (Cordova)
- Web support
- Local settings
- Sync settings with self-hosted piffy server
- LEET Keyboard bindings
- Multi select songs
- Download view
- Drag drop to playlist
- Fix "Queue" playlist view
- Kill Angular
- Kill Node-Webkit
v0.1.0-alpha
- Public release
This app is using custom legacy dependency injection resolvers in it's packager, the directory structure is pretty straight-forward.
assets/javascripts
├── app
│ ├── config.js
│ ├── controllers
│ │ ├── AppController.js
│ │ ├── BrowseController.js
│ │ ├── DownloadsController.js
│ │ ├── HomeController.js
│ │ ├── LoginController.js
│ │ ├── PlayerController.js
│ │ ├── PlaylistController.js
│ │ ├── PreferencesController.js
│ │ ├── QueueController.js
│ │ ├── SearchBarController.js
│ │ ├── SearchController.js
│ │ ├── SidebarController.js
│ │ └── index.js
│ ├── directives
│ │ ├── index.js
│ │ ├── loader
│ │ │ └── loaderDirective.js
│ │ └── stars
│ │ └── starsDirective.js
│ ├── index.js
│ ├── models
│ │ ├── index.js
│ │ ├── playlist.js
│ │ └── song.js
│ ├── require.js
│ ├── routes.js
│ ├── services
│ │ ├── actions
│ │ │ ├── actions.js
│ │ │ └── playerActions.js
│ │ ├── app
│ │ │ ├── app.js
│ │ │ ├── auth.js
│ │ │ ├── caching.js
│ │ │ ├── index.js
│ │ │ ├── playlists.js
│ │ │ └── util.js
│ │ ├── constants
│ │ │ ├── constants.js
│ │ │ └── playerConstants.js
│ │ ├── downloads
│ │ │ └── downloads.js
│ │ ├── freebase
│ │ │ └── freebase.js
│ │ ├── index.js
│ │ ├── lastfmFeeds
│ │ │ └── lastfmFeeds.js
│ │ ├── player
│ │ │ └── player.js
│ │ ├── soundcloudControl
│ │ │ ├── soundcloudControl.js
│ │ │ └── soundcloudControlDirective.js
│ │ ├── stores
│ │ │ ├── playerStore.js
│ │ │ └── stores.js
│ │ ├── youtubeControl
│ │ │ ├── youtubeControl.js
│ │ │ └── youtubeControlDirective.js
│ │ └── youtubeFeeds
│ │ └── youtubeFeeds.js
│ ├── settings.js
│ └── templates
│ ├── app.html
│ ├── browse.html
│ ├── controversial.html
│ ├── downloads.html
│ ├── home.html
│ ├── index.js
│ ├── loader.html
│ ├── login.html
│ ├── player.html
│ ├── playlist.html
│ ├── preferences.html
│ ├── queue.html
│ ├── search.html
│ ├── searchBar.html
│ ├── sidebar.html
│ └── star-rating.html
├── lib
│ ├── angular-vs-repeat.min.js
│ ├── stub.js
│ └── underscore.js
└── shava
├── Event.js
├── directives
│ ├── autofocus
│ │ └── autofocusDirective.js
│ ├── columns
│ │ ├── columnDirective.js
│ │ ├── columnsController.js
│ │ └── columnsDirective.js
│ ├── dropdown
│ │ └── dropdownDirective.js
│ ├── editable
│ │ └── editableDirective.js
│ ├── fixedScroll
│ │ └── fixedScrollDirective.js
│ ├── focusable
│ │ ├── focusable.js
│ │ ├── focusableController.js
│ │ └── focusableDirective.js
│ ├── include
│ │ └── includeDirective.js
│ ├── index.js
│ ├── key
│ │ └── keyDirective.js
│ ├── nav
│ │ ├── navController.js
│ │ ├── navDirective.js
│ │ └── navValueDirective.js
│ ├── range
│ │ ├── rangeDirective.js
│ │ └── rangeSliderDirective.js
│ ├── rightClick
│ │ └── rightClickDirective.js
│ ├── scrollarea
│ │ ├── scrollareaController.js
│ │ └── scrollareaDirective.js
│ ├── selectables
│ │ ├── selectableDirective.js
│ │ ├── selectables.js
│ │ ├── selectablesController.js
│ │ └── selectablesDirective.js
│ ├── sorter
│ │ ├── sorterController.js
│ │ ├── sorterDirective.js
│ │ └── sorterItemDirective.js
│ └── undoStack
│ ├── undoStack.js
│ └── undoStackDirective.js
├── index.js
├── loader.js
├── nw-gui.js
└── services
├── action
│ ├── action.js
│ └── constants.js
├── contextMenu
│ └── contextMenu.js
├── ctrlTabs
│ └── ctrlTabs.js
├── dispatcher
│ └── dispatcher.js
├── index.js
├── nwSupport
│ ├── nwGui.js
│ └── nwSupport.js
├── sessions
│ ├── localStorageAdapter.js
│ └── sessions.js
├── settings
│ └── settings.js
├── store
│ └── store.js
├── undo
│ └── undo.js
└── util
├── debounce.js
├── deepMerge.js
├── driver.js
├── jquery.js
├── mixin.js
├── util.js
└── watchChange.js
The original author of Piffy is Sam Hunter
This project is currently seeking a lead adopter