Internals

This page is intended for those who might be interested in hacking on JortJams or are simply curious about the way JortJams works.

The source code is available at https://gitlab.peach-bun.com/jortjams/jortjams. Build instructions are available.

Technologies

JortJams is built using Qt 5 and Qt Quick 2. It is written in C++ and uses C++17 language features. The build system uses CMake.

Music identification uses youtube-dl and, if available, ffprobe. The music player is built on GStreamer. Data storage and access is provided by SQLite.

Parts of JortJams’ network code use Ragel.

Source code tour

├── fetch		Code for the status / URL fetch program.
├── gui			Code for the GUI.
├── guilib		Library code shared between the GUI and GUI experiments.
├── player		The music player.
├── jj			
│   ├── app		[REMOVE]
│   ├── cmake		Custom CMake modules.
│   ├── db		Data models for objects in JortJams' database.
│   ├── feeds		Data structures and tools for handling status feeds.
│   ├── icons		Icons used in the GUI and other tools.
│   ├── ipc		Code to communicate state between the fetch and GUI programs.
│   ├── log		JortJams' logger utilities.
│   ├── models		[REMOVE]
│   ├── network		Network code: the HTTP client, youtube-dl interface, etc.
│   ├── prefs		Data models for storing preferences.
│   ├── prof		Profiling aids.
│   ├── sq3		An SQLite wrapper; mostly adds RAII semantics to SQLite objects.
│   ├── tasks		[REMOVE]
│   ├── util		Shared algorithms and data structures.
│   └── vendor		Vendor code.