Code Monkey home page Code Monkey logo

openishkur's Introduction

The OpenIshkur Project

OpenIshkur is an open-source, freely editable version of Ishkur's Guide to Electronic Music that attempts to document the connections between music genres as well as provide both introductory information to the genre as well as actual streaming samples of its most exemplary works. Anyone can contribute to the descriptions and samples of each genre, and even add new genres entirely. Much like the original guide, all genres are connected in a vast web.

OpenIshkur's goals are to emulate the original guide, update it for modern times, and provide a means for others to do so in the future. Part of why Ishkur's guide stopped being relevant was because it could only be updated by one person, something that OpenIshkur cannot suffer from (unless people stop using it).

Requirements

Setup

To set this application up, clone this repo and run the following command from its root directory:

$ ./bin/setup

You can now start the server:

$ ./bin/rails server

Architecture

OpenIshkur is primarily designed as graph of genre connections, whether by a genre influencing another (a "descendant") or a genre being influenced by another (an "antecedent"). Additionally, each Genre record embeds a collection of Sample records that wrap an uploaded file handler and some metadata surrounding the sample, as well as an auto-incrementing value used for the button display. Although Users do create Genres and Samples, there is no relation back to the User for creating either of these. The relationship between Genres is represented as an Influence object, which is used to build the lines between nodes on the graph. Apart from this graph, there isn't much else going on right now...though there are plans to implement permissions systems as well as versioned genre updating.

The front-end frameworks used most heavily are Zurb Foundation and jQuery. Foundation forms the basis of the CSS layout, and enables as much of the site to be responsive by default as possible. jQuery is used to provide a consistent interface for cross-browser Ajax and DOM manipulation (OpenIshkur makes use of Rails UJS whenever possible, which also uses jQuery under the hood). But the real meat and potatoes comes from vis.js, our graph visualizer library. It presents the graph of genre connections as a web of networked nodes, with lines connecting the antecedents and descendants. With the exception of the /genres.json endpoint used to serve data to vis asynchronously, all content on the site is generated by the server, dynamically, and served remotely rather than being compiled and generated on the client-side. This is to take advantage of Rails' fragment caching features, which are in use heavily throughout the site. We also make use of HTTP caching in production to ensure all data comes back as fast as possible.

Direct file uploads to S3 occur asynchronously using Refile's built-in JS file uploader. Currently, there are no transcoding options...we just only allow MP3s to be uploaded, but that may change in the future.

Contributing

Contributions of any kind are always welcome to this codebase. However, when making a pull request please ensure your changes are properly tested and the build has not broken.

openishkur's People

Watchers

 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.