mihai2000q / Repertoire

Music Application written in Typescript and Go (Gin).
MIT License
0 stars 0 forks source link

Repertoire

Abstract

Repertoire is a Music Application written in Typescript and Go. It is an application intended for beginner musicians to organize their 'repertoire' (songs, albums, etc.). Its features include adding songs, organized in albums and artists. It is also possible to add those songs on playlists. Songs can be measured how rehearsed they have been, whether they have been recorded or not and so on.

Get Started

To get started on the application, you need the server, the storage, the UI and one of the platforms up and running.

IF you have Go and Node installed, you can take the shortest route. Fire the following shell script: startup-web.sh or startup-desktop.sh.

Otherwise, a full setup on each project has to be made (except for Desktop or Web, depending on where you prefer to host the app).

Additionally, if you prefer to run everything in containers and not install GO or Node, you can run the run-container.sh script to run all the docker containers.

Server

This is the HTTP Server of the application, and it does all the business logic and calls to the database.
For a detailed setup on the server of the application, check out the documentation.

Storage

This is the Server that takes care of the storage of the application. It takes care of images, audios and other type of files.
For a detailed setup on the storage of the application, check out the documentation.

UI

This is the UI package of the application, and it renders all the screens, makes all the calls and takes care of the style of the application using React, Mantine, and more.
For a detailed setup on the UI of the application, check out the documentation.

Platform

You are not obliged to set up both of the below platforms, you can only choose one of them, depending on preferences.

Desktop

This is the desktop project that takes care of rendering the UI in a desktop environment using Electron, React, and Vite.
For a detailed setup on the server of the application, check out the documentation.

Web

This is the web project that takes care of rendering the UI in a web environment using React and Vite.
For a detailed setup on the server of the application, check out the documentation.

Git

The application is stored on the well-known cloud-based service and version control GitHub.

Git Issues

Usually, whenever the code has to be modified, an issue will be created on GitHub. The title of the issue will be the developer's choice (for preference, it should resemble the git commits to a higher level overview without, of course, the issue tag), however, the labels attached to it should be significant. The title should also include the project that it's being worked on and the layer, or screen/component.

The expected labels to use are:

Git Branches

Based on the above label, the branch will have similar prefixes:

For example, if your ticket's name is "[Server] Data - New Repository for Menus" and it is a feature issue, then the branch name should look something like this: feature/139-server-data-....

Also, the main development branch is develop, and master is used for releases.

Git Commits

The commits on branches should follow a structure (similar to the issues) (#TAG PROJECT - LAYER/SCREEN: COMPONENT - CHANGES). First, there should be a hashtag followed by the number of the issue (e.g., #3) followed by the project's name that is the target of the commit (e.g., web, server) followed by a dash and the changes done on it (or the component that was modifier, dash, then the changes) (by preference, try to include a meaningful verb like add or update). For example, #3 Server - Data - Add New Repository for Menu or #3 Server - Data: User Repository - Add New method to return by id.

Note: if the target of the commit has nothing to do with any layer or screen, no worries, just try to be as concise as possible. However, if multiple layers or projects are affected, try submitting more smaller commits.

License

The project is licensed under the MIT license.


Repertoire 2024