- Node.js
- npm or yarn
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 iTo setup the project locally skip the next section and go directly to Local setup.
Add .env file to frontend catalog which contains:
EXPO_PUBLIC_SEARCH_APP_API_KEY=APIKEYHERE
This project can be run from a container. Follow steps below to do so.
Download and install Docker for your operating system from the official Docker website.
npm run containerNote: The first build will take approximately 15 minutes. Subsequent starts will be much faster.
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 frontendTo run containers in detached mode (background):
docker compose up -dYou can view logs in a separate terminal:
docker compose logs -f frontend
docker compose logs -f spring-service
docker compose logs -f flask-serviceTo stop and remove all containers:
docker compose downIf you need to rebuild after making changes:
docker compose build <service-name>Example:
docker compose build spring-service
docker compose build frontendImportant: Avoid rebuilding the flask-service unnecessarily as it has many dependencies and takes a long time to build.
If you encounter issues:
-
Ensure Docker is running
-
Check service logs for errors
-
Verify all required ports are available
-
Make sure you're running commands from the project root directory
-
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>
Set up virtual env for python libraries
cd backend
python3.10 -m venv .venv
source .venv/bin/activate # On Windows use: .venv\Scripts\activateInstall dependencies:
cd scripts && pip install -r requirements.txtDownload 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.zipLaunch the servers from backend root:
python3 scripts/flask_server.pyIn application.properties uncomment LOCAL DEVELOPMENT and comment DOCKER DEVELOPMENT
Run Spring app from your IDE
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.
Navigate to the frontend directory and install all dependencies:
cd frontend
npm installTo start the development server go to the frontend directory and choose one of those two options:
- This will run a bare development server with clean cache and tunneling (for testing on your own mobile device):
npm run start- Press
ato 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
- 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 webThis section focuses on our common arrangements which we establish during retro meetings.
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.
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.