// WEB
Stream Log
A movie tracking platform built with Spring Boot microservices, allowing users to browse titles, track watch progress, rate content, and view personal statistics.
Overview
This project is a web application for keeping track of movies and series.
Users can browse available titles, view details, rate movies, and keep track of their watch progress. The idea was to build something similar to a personal watch tracker rather than another streaming service.
The project was developed as part of a university Service-Oriented Architecture project in a team of three. We focused on splitting the application into smaller services instead of building everything as one application.
Services communicate synchronously through REST APIs for user-facing requests, while ActiveMQ is used for asynchronous communication and background tasks such as updating rating statistics.
Main features
Users can:
- Browse and search movies
- View movie details
- Create an account and log in
- Rate movies
- Track their watch progress
- View their personal statistics
- See average ratings and total rating counts
Technical approach
The application is split into several services, with each service responsible for a specific part of the system.
| Service | Responsibility |
|---|---|
| User Profile | Registration, login, and user profiles |
| Catalog | Movie browsing and basic movie information |
| Metadata | Detailed movie information |
| Progress | Watch status and progress |
| Rating | User ratings |
| Analytics | Rating statistics |
| Client | Web interface |
| API Gateway | Routing and authentication |
The services communicate mainly through REST APIs. The Catalog Service also combines information from several other services when loading a movie’s detail page.
For rating updates, ActiveMQ is used to send events to the Analytics Service so rating statistics can be updated in the background.
Each service that stores data has its own PostgreSQL database, keeping the services separated and independent.
Architecture
The application follows a Service-Oriented / Microservices architecture.
The web client communicates with the system through an Nginx API Gateway, which handles routing and authentication before forwarding requests to the appropriate service.
Docker Compose is used to run the application and its services together, making the project easier to set up and test.
Demo
Future improvements
I feel like there’s still a lot of potential in this MVP. There are quite a few things that can be improved, especially the UI, as this project focused more on the architecture and microservice implementation than the visual side of the application.
Features like proper TV show and episode tracking, integrating an external movie API, and adding more personalized statistics and recommendations based on user activity would be great additions.
Lessons learned
This project gave me a much better understanding of how multiple services can work together as one. I also learned that splitting an application into services gives you more flexibility, but it also introduces extra complexity around communication, authentication, databases, and deployment.
Working with Spring Boot, Docker, REST APIs, ActiveMQ, and PostgreSQL also gave me practical experience with technologies commonly used in real-world software systems.