-
Notifications
You must be signed in to change notification settings - Fork 9
Project architecture
In this Page, I will explain how the project is structured.
Soul Searching is divided in multiple modules and follows the Clean Architecture pattern.
All the app is in this module (views, UI logic,...).
This module also contains the entry point of the Android and Desktop app.
More detailed information here: app
This module contains reusable UI components (more globally, the design system of the app) and UI/UX utils (loading manager, color theme manager,...).
More detailed information here: core-ui
The main part of the application. It contains the model of the app, its use cases, repositories interface and other utils.
More detailed information here: domain
This folder contains multiple modules. Each of these modules contain logic for a specific subject that needs specific dependencies and/or that are reused throughout the app.
Used for updating the metadata of a music file and managing the file covers of the app.
More detailed information here: filemanager
Handles the fetching of musics on a device. It also contains the logic for handling multiple artists.
More detailed information here: musicmanager
This module contains all the playback logic (player, notification,...).
More detailed information here: playback
Serialization logic for each platform.
More detailed information here: serialization
Local database implementation for Android (DAOs, entities, data source implementation...).
More detailed information here: local-android
Local database implementation for desktop (DAOs, entities, data source implementation...).
More detailed information here: local-desktop
Contains all elements related to remote calls (specific data sources, http client).
More detailed information here: remote
This module holds the implementation of the repositories, and the interface of the data sources
More detailed information here: repository
The module that contains all the dependency injection logic and provides a global DI module for the app to abstract all the other module's DI modules.
More detailed information here: shared-di