Open Carnatic Music Database
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 36 commits ahead of ssrihari:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


An open carnatic music database in the making.


Given how much carnatic music revolves around a (more or less) standard list of ragas, compositions, and composers, it is quite surprising that there isn't an authoritative source for this information on this internet today. The information however, is out there in the wild. Needles in the haystack of the internet.

This project exists to mine, categorize and curate that information into a strict database, thereby giving it the power of usability.


There are scrapers (that mine for data from select websites), there is the relationship-maker (that connects data from different sources), and there is the database (adheres to schema, stores information, reports). Most of this codebase is in clojure, but there's no reason the scrapers can't be in another language.


During Development

To run the API server: lein run -m kosha.main The server runs by default on port 3000. To specify a port, pass a port number using the -p option: lein run -m kosha.main -p 8080


To deploy, after changing the configuration in resources/config.edn, run bin/deploy with two enviroment variables LEINPATH and SERVER_PORT passed to it. For example, run the following in a terminal from the project directory:

LEINPATH=/home/deploy/lein SERVER_PORT=8080 bin/deploy

This starts the API server on port 8080 and logs to kosha_server.log.



You should have the following installed on your system:

  1. Clojure (>= 1.7.0)
  2. Leiningen (>= 2.7.0)
  3. Postgres (>= 9.0)

Setup (from database dump)

Clone this repo and from the project directory, run:

> lein deps
> createdb kosha
> pg_restore -d kosha resources/db.dump

You can use a custom database name by configuring it in resources/config.edn.


The config map can be found in resources/config.edn.

  • Database: Configure the database access credentials by setting the values in the :database key of the config map.
  • Front-end: To configure the CORS policy in order to allow the frontend to query the backend, set the URL of your frontend in the :cors key of the config map.
  • Logging Level: Set the logging level to :debug OR :error in the :logging key of the config map.


  1. Describes the schema of scraped data and the domain entities.
  2. Describes the problem of stitching data from 3 different sources in Kosha.
  3. Documents the API endpoints for Kosha.


Copyright © 2015 FIXME

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.