MusicCollection is my toy project. It doesn’t do much, but I learn a lot from it. My goal is to learn about cross-platform development (Linux & Windows for now), build automation and project management (git, Redmine, CMake, Jenkins, Doxygen …) unit testing (Google Test & Mock) etc.

The source code of the project can be found at:
MusicCollection project on my own GitLab instance.


 This comes from the MusicCollectionNotes in the repository:


This document contains design decisions, notes, To-do items and anything else that should not be forgotten for the MusicCollection project.

The products

It is my intention to create the following products:

  1. A program that scans a set of given directories for music files, collects all the metadata from the files and stores it in a database. The program monitors the directories for changes and keeps the database up-to-date with the music files. The program exposes an interface for other applications to query the information about music files.
  2. A PC application that acts as a GUI to the program from 1. This application allows to show lists and query the database and show the results.
  3. A web site that allows to do about the same as the application from 2.
  4. A mobile (Android) application that does the same as the products from 2. and 3.

The goal of these products is to learn about PC, web and mobile development.


This section is going to contain the requirements for all the projects. Each requirement will get a unique number that is not going to change. When a requirement is deleted, its number will not be reused for a new requirement.

General requirements

Requirements for the development environment

Requirements for the service

Requirements for the PC application

Requirements for the web site

Requirements for the mobile application

Development environment and tools

The MusicCollection development is performed using a number of tools and web sites.

I do my local development both on a Kubuntu 13.10 and two Windows 7 machines. On all machines I installed the following software:

  • git
  • CMake
  • Qt Creator
  • Boost
  • TagLib

On Windows I use:

  • Microsoft Visual Studio 2010 and Visual Studio 2012 next to Qt Creator
  • TortoiseGit

On Kubuntu I use:

  • Occasionally KDevelop and make from the command line

The file INSTALL in the root of the repository contains more details on libraries to use and how to install them.

To-do list

The items on this list are to be evaluated and removed from the list when an action is defined. The Redmine page contains the actions that need to be performed.

Leave a Reply

Your email address will not be published. Required fields are marked *