Code Monkey home page Code Monkey logo

volumio2's Introduction

Join the chat at https://gitter.im/volumio/Volumio2

Volumio 2

Volumio 2 System Images

LATEST

PREVIOUS VERSIONS

Volumio 2 Virtual Machines

Useful for fast developing, no need for a Raspberry Pi (also much faster)

VMWARE Image is suggested, as Network configuration is tricky with Virtual Box

System Images built with Volumio Builder

Preliminary Setup

Clone the repo in the directory of your choice (default: /volumio)

git clone https://github.com/volumio/Volumio2.git volumio
cd volumio

Make sure /volumio folder is owned volumio user

sudo chown -R volumio:volumio /volumio

And that /data folder exists and is owned by volumio user

sudo mkdir /data
sudo chown -R volumio:volumio /data

On Debian, you need to install

sudo apt-get install libavahi-compat-libdnssd-dev

For other systems, see node_mdns installation.

All other dependecies are in the package JSON, from the working directory just run (as user volumio)

npm install

You can run all the servers in one single step just running with nodejs

node index.js

Finally, point your browser to http://(ip address):3000 to access the UI.

A DEV Console is available at http://(ip address):3000/dev

To make development more comfortable, a samba server is installed. This way the /volumio folder is accessible (and editable) via Network. Just mount it on your dev workstation and it will be available as local filesystem. Testing on PI is strongly suggested.

Please take a look at the Developer Info and Guidelines

Development tasks and milestones

Current Tasks

  • Templating System

    The idea is to allow the installation of different templates and skins. To allow that a template system needs to be created: as general guidelines we'll provide a set of Java functions to hook with the WebSockets connection. The different templates then will be a folder containing just css js and html.

  • Plugin System

    Every service (input, output, visualization etc) will be treated as a standalone entity. This will allow to add external plugins in the future. The plugins will be composed of a folder, with all the methods, and a "manifest file" which is an executable that sends via nodes js its name, its available methods and other informations. At system startup every manifest in the manifest folder is executed, so the system receives with WS all the available plugins and their capabilities and methods. Then the core knows what is availbable and how to call them.

  • Music Database System

    Every music service available will feature its own LevelDB database, storing its pertaining music file. The Volumio core then needs to query those databases to retrieve available music, so it can route the appropriate request to the right service for a certain song.

Operating System

  • Custom Debian Based Operating System

  • Minimal Jessie Based BSP

  • SystemD migration

  • Volumio APT repo

  • Custom Compiled Core Packages

  • MPD

  • SPOP

  • Upmpdcli

  • Shairport Sync

  • NodeJS

Node Backend

  • Volumio Core

  • Command Router

  • WebUI Endpoints

  • Mixer Controls

  • Volume Controls

  • Communication Interfaces

  • Socket.io Controller

  • API Controller

  • MPD Emulation Interface

  • Audio services Controllers

  • MPD Service and Library

  • SPOP Service and Library

  • Shairport Service and Library

  • UPNP Service and Library

  • (groove?) Service and Library

  • System manager worker

  • Networking

  • CIFS\SAMBA

  • I2S Driver

  • Hardware Layer

  • USB Drives

  • Volumio Service Discovery

Frontend

  • Volumio 2 WebUI (Playback)

  • Boostrap Based Structure

  • Playback Handling

  • Library retrieval

  • Library Sorting

  • Airplay Hooks

  • Volumio 2 WebUI (Configuration)

  • Playback Option Configuration

  • Network Option Configuration

  • Plug-in System Configuration

  • System Configuration

Development Guidelines

  • Forum Threads for internal discussion, remember to subscribe topics.
  • Document your work where possible on the Wiki.
  • This is intended to run on Low Power Devices (r-pi). Let's keep code efficient and lightweight.
  • To allow code mantainability, always comment your code properly and update DOCs if needed.
  • Adhere to MVC Best Practices to maximize project quality.
  • Have fun and enjoy what you're doing!

volumio2's People

Contributors

volumio avatar fanciulli avatar mtieltjes avatar hoochdeveloper avatar jomo avatar jotak avatar jakubro avatar gitter-badger avatar orthographic-pedant avatar

Watchers

Michael Hutchinson avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.