Skip to content

hasinduudara/HallyuHub-Microservices

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

25 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 HallyuHub – K-Drama & Movie Tracker (Microservices)

A cloud-native, microservices-based K-Drama and Movie tracking web application built with modern technologies and deployed on Azure Container Apps.

🌐 Live Site: HallyuHub on Azure


πŸ“Œ Overview

HallyuHub allows users to:

  • πŸ“‹ Browse a catalog of popular K-Dramas and movies
  • βž• Add titles to a personal watchlist with a rating
  • ❌ Remove titles from the watchlist
  • πŸ€– Get AI-style recommendations based on genres from the user's watchlist

πŸ—οΈ Architecture

The application follows a microservices architecture with four independent services, each containerized with Docker and deployed to Azure Container Apps.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Frontend (React)               β”‚
β”‚         Vite + TypeScript + Tailwind CSS         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
               β”‚  REST API Calls
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β–Ό            β–Ό                    β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Catalog  β”‚ β”‚  Watchlist   β”‚ β”‚   Recommender     β”‚
β”‚ Service  β”‚ β”‚   Service    β”‚ β”‚     Service       β”‚
β”‚  (Java / β”‚ β”‚ (Node.js /   β”‚ β”‚  (Python / Flask) β”‚
β”‚  Spring) β”‚ β”‚  Express.js) β”‚ β”‚                   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🧩 Services

1. πŸ—‚οΈ Catalog Service β€” Java / Spring Boot

  • Provides a list of K-Dramas and movies with metadata (title, genre, release year, rating)
  • Endpoint: GET /api/catalog
  • Deployed at: https://catalog-app.icyhill-d8a50826.southeastasia.azurecontainerapps.io

2. πŸ“ Watchlist Service β€” Node.js / Express.js / TypeScript

  • Manages a user's watchlist using an in-memory store
  • Endpoints:
    • GET /api/watchlist/:userId – Get user's watchlist
    • POST /api/watchlist – Add a title to the watchlist
    • DELETE /api/watchlist/:userId/:catalogId – Remove a title from the watchlist
  • Deployed at: https://watchlist-app.icyhill-d8a50826.southeastasia.azurecontainerapps.io

3. πŸ€– Recommender Service β€” Python / Flask

  • Fetches the user's watchlist and catalog, then recommends unwatched titles based on matching genres
  • Endpoint: GET /api/recommendations/:userId
  • Deployed at: https://recommender-app.icyhill-d8a50826.southeastasia.azurecontainerapps.io

4. πŸ–₯️ Frontend β€” React / Vite / TypeScript / Tailwind CSS

  • Single-page application (SPA) that consumes all three backend services
  • Deployed at: https://frontend-app.icyhill-d8a50826.southeastasia.azurecontainerapps.io

πŸ› οΈ Tech Stack

πŸ–₯️ Frontend

React Vite TypeScript TailwindCSS

βš™οΈ Backend Services

Spring Boot Java Node.js Express.js Python Flask

🐳 DevOps & Cloud

Docker Docker Hub GitHub Actions Azure


πŸš€ Running Locally

Prerequisites

  • Docker Desktop installed and running

Clone the repository

git clone https://github.com/hasinduudara/HallyuHub-Microservices.git
cd HallyuHub-Microservices

Run each service individually

Catalog Service (Java / Spring Boot)

cd catalog-service
./mvnw spring-boot:run

Watchlist Service (Node.js / TypeScript)

cd watchlist-service
npm install
npm run dev

Recommender Service (Python / Flask)

cd recommender-service
pip install -r requirements.txt
python app.py

Frontend (React / Vite)

cd frontend
npm install
npm run dev

πŸ“ Project Structure

HallyuHub-Microservices/
β”œβ”€β”€ .github/
β”‚   └── workflows/
β”‚       └── docker-publish.yml  # CI/CD – Build & Push to Docker Hub
β”œβ”€β”€ catalog-service/        # Spring Boot – Catalog API
β”œβ”€β”€ watchlist-service/      # Node.js/Express – Watchlist API
β”œβ”€β”€ recommender-service/    # Python/Flask – Recommender API
└── frontend/               # React/Vite – Web UI

βš™οΈ CI/CD Pipeline

This project uses GitHub Actions to automate the build and deployment pipeline.

Workflow: .github/workflows/docker-publish.yml

Trigger: Every push to the main or master branch automatically:

  1. βœ… Checks out the source code
  2. πŸ” Logs in to Docker Hub using GitHub Secrets (DOCKER_USERNAME, DOCKER_PASSWORD)
  3. πŸ—οΈ Builds Docker images for all four services
  4. πŸš€ Pushes images to Docker Hub with the latest tag
Service Docker Hub Image
Catalog Service <DOCKER_USERNAME>/catalog-service:latest
Watchlist Service <DOCKER_USERNAME>/watchlist-service:latest
Recommender Service <DOCKER_USERNAME>/recommender-service:latest
Frontend <DOCKER_USERNAME>/frontend:latest

Required GitHub Secrets

Secret Description
DOCKER_USERNAME Your Docker Hub username
DOCKER_PASSWORD Your Docker Hub access token

πŸ“¬ Contact

Platform Link
πŸ“§ Email hasiduudara@gmail.com
πŸ’Ό LinkedIn linkedin.com/in/hasindu-udara
πŸ™ GitHub github.com/hasinduudara
🌐 Portfolio portfolio

Built with ❀️ by Hasindu Udara

About

A cloud-native, microservices-based K-Drama and Movie tracking web application built with modern technologies and deployed on Azure Container Apps.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors