Skip to content

Vemtor/karaoke

Repository files navigation

Project setup

🧱 Prerequisites

You can install Node.js using any package manager. Below is an example setup using fnm and Node.js v22:

# Install fnm (Fast Node Manager)
curl -o- https://fnm.vercel.app/install | bash

# Install Node.js v22
fnm install 22

# Check Node.js version
node -v # Should print something like "v22.14.0"

# Check npm version
npm -v # Should print something like "10.9.2"

From the root directory run:

npm i

To setup the project locally skip the next section and go directly to Local setup.

API Keys:

Add .env file to frontend catalog which contains: EXPO_PUBLIC_SEARCH_APP_API_KEY=APIKEYHERE

Docker Containerization Guide

This project can be run from a container. Follow steps below to do so.

1. Install Docker

Download and install Docker for your operating system from the official Docker website.

2. Build the Java Application and run the Container

npm run container

Note: The first build will take approximately 15 minutes. Subsequent starts will be much faster.

3. Running Specific Services

The application consists of three services:

  • spring-service (Java backend)
  • frontend (Web UI)
  • flask-service (Python service)

Dependencies:

  • frontend → spring-service → flask-service

To run just one service:

docker compose up <service-name>

For example:

docker compose up frontend

4. Run in Background Mode

To run containers in detached mode (background):

docker compose up -d

You can view logs in a separate terminal:

docker compose logs -f frontend
docker compose logs -f spring-service
docker compose logs -f flask-service

5. Stopping the Application

To stop and remove all containers:

docker compose down

6. Rebuilding Services

If you need to rebuild after making changes:

docker compose build <service-name>

Example:

docker compose build spring-service
docker compose build frontend

Important: Avoid rebuilding the flask-service unnecessarily as it has many dependencies and takes a long time to build.

Troubleshooting

If you encounter issues:

  1. Ensure Docker is running

  2. Check service logs for errors

  3. Verify all required ports are available

  4. Make sure you're running commands from the project root directory

  5. It is possible that some cached dependecies are blocking/breaking your build, in that case execute the following command:

    docker compose build --no-cache <service-name>

    then reset services' state:

    docker compose down
    docker compose up <service-name>

Local setup

Backend setup (☕Java + 🐍Python)

Set up virtual env for python libraries

cd backend
python3.10 -m venv .venv
source .venv/bin/activate # On Windows use: .venv\Scripts\activate

Install dependencies:

cd scripts && pip install -r requirements.txt

Download vocal remover and place it in backend/scripts.

In scripts folder

wget https://github.com/tsurumeso/vocal-remover/releases/download/v5.1.1/vocal-remover-v5.1.1.zip -O vocal-remover.zip && \
unzip vocal-remover.zip  && \
rm vocal-remover.zip

Launch the servers from backend root:

python3 scripts/flask_server.py

In application.properties uncomment LOCAL DEVELOPMENT and comment DOCKER DEVELOPMENT

Run Spring app from your IDE

Frontend setup (⚛️Expo)

Figma - Wireframes

NOTICE: The steps below have been verified to work on Expo CLI + Android Phone/Web. Both Windows and WSL enviroment were tested with successful outcome. If you're using a different setup (e.g., iOS or custom workflow), please refer to the official Expo documentation or relevant GitHub threads for help.

This project uses Expo.

If you run into any problems, check the official Expo docs or contact @galakitkkon.


📦 Install Project Dependencies

Navigate to the frontend directory and install all dependencies:

cd frontend
npm install

🧪 Start Development Server

To start the development server go to the frontend directory and choose one of those two options:

  1. This will run a bare development server with clean cache and tunneling (for testing on your own mobile device):
npm run start
  • Press a to open in an Android emulator (e.g. via Android Studio - needs to be configured first!)
  • Or scan the QR code with the Expo Go app on your Android phone (recommended)

📘 For running on iOS or physical devices, follow the official Expo device guide

  1. This will run a development server with clean cache and open the web-compiled instance in your primary browser (good for quick testing):
npm run web

Team conclusions and rules

This section focuses on our common arrangements which we establish during retro meetings.

PR reminding

We have noticed that delays in development are caused by waiting for PR's review. Now, it is the responsibility of the person who requests PR's to remind reviers of them. Preferably every 2 days.

Task dependencies

Some of us prefer last-minute working. On the other hand, some of us perfer finish work earlier. Now on planning meetings we will take this into consideration. The selection of tasks for particular person will also depend on deveoper's preferences.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 7