This project heavily consumes public API’s all over the internet. To name a few; OneDrive, SoundCloud, LastFM and tab search engines. The back-end system and the architecture is carefully and beautifully designed.
We implement advanced software engineering techniques such as common design patterns, dependency injection, test driven development and many other paradigms.
Therefore the maintenance of the project or extending the project with new functionality or features is pretty straightforward. In order to deliver the best rock-solid and bug free product, we apply Test Driven Development and perform unit-testing.
Below are some keywords/paradigms giving an idea about our technology stack and the back-end system;
- Primary language: C#
- Guitar Pro viewer engine (vexflow for rendering, alphatab for
- JS libraries for consuming some of the API's (jQuery, jQuery plug-ins etc.)
Some other paradigms/frameworks used in back end:
- Live SDK for OneDrive sync.
- Various tab search engines.
- C# - XAML
PhoneGuitarTab.Controls project contains specific UI-controls which can be reused independently.
PhoneGuitarTab.Core project contains WP-specific, cross-cutting concern logic, e.g.
- Custom DI container (another “poor man’s”) which supports interception, construction and property dependency injections, etc.
- Primitive types (actually, legacy from WP7 )
- MVVM-specific classes, etc.
PhoneGuitarTab.Search project contains logic for searching and downloading of various domain specific information from specific services:
- UltimateGuitar – primary source of tablatures
- Lastfm – band information and album/artist art source
- SoundCloud - song stream source.
Also we have in plans to support different information sources.
PhoneGuitarTab.Tablatures project contains logic for tablature representation and processing, including:
- Domain model of tablature which is used for processing of various tablature formats in the same way across entire application.
- Json-tab converter. Unfortunately, it seems like UltimateGuitar doesn’t provide free way to download a correct guitar pro file. Instead of this, it’s possible to download Json representation of tab.
- Guitar Pro writer. Converts tablature domain model to guitar pro (gp5) file. Ported from tuxguitar project.
PhoneGuitarTab.UnitTests contains unit tests for all projects. It’s far from the goal – cover at least 80% of logic by unit tests.
How to build
Prerequisites. You have to install the latest Windows Phone SDK, Visual Studio updates before you can built solution.
After installation, you can use Visual Studio to build or run unit tests. Also the project includes
build.cmd which can be used for building application and running unit tests from command line. By default, it builds solution in debug mode. “Release” argument switches mode to “Release”.
Application start flow