The FilmAdvisor is a web-based application designed to help users discover, filter, and manage movies across different streaming platforms. This document provides a high-level introduction to the system architecture, core components, and key features of the FilmAdvisor system.
##System Purpose FilmAdvisor serves as a centralized movie recommendation and management platform that allows users to:
- Browse and filter movies by various criteria (genre, platform, year)
- Discover random movie recommendations
- View detailed movie information
- Track watched movies and save favorites
- For detailed information about the complete system architecture, see System Architecture.
-
Java 21
-
Spring Boot 3.4.3
-
Vaadin Hilla (Vaadin + TypeScript with secure endpoints)
-
AWS DynamoDB – NoSQL database for storing movies, metadata, and availability.
-
PostgreSQL – For user authentication and profile persistence (used alongside DynamoDB).
-
Streaming Availability API – To fetch real-time streaming availability.
-
IMDb – For optional rating integration.
- Vaadin: Version 24.6.6 for the UI framework
- Accordion filter components for genres and other preferences.
-
User Profiles: Users can define their preferred streaming platforms and filter settings.
-
Random Movie Discovery:
-
Filter by genre, release year, and platform.
-
Choose to display 3, 6, or 9 movies.
-
-
Streaming Availability: View where each movie is available to watch.
-
Interactive Lists:
-
Mark movies as watched or discarded.
-
Give watched movies a like or dislike.
-
-
Temporary Retry ("Try Again") Button: Get a fresh set of suggestions without saving them.
-
Detailed Movie View: Expand to show synopsis, IMDb/Filmaffinity links, and platform links.
-
Direct Search: Search by title, director, actor, or genre.
This project can be used as a starting point to create your own Hilla application with Spring Boot. It contains all the necessary configuration and some placeholder files to get you started.
The project is a standard Maven project. To run it from the command line,
type mvnw (Windows), or ./mvnw (Mac & Linux), then open
http://localhost:8080 in your browser.
You can also import the project to your IDE of choice as you would with any Maven project.
To create a production build, call mvnw clean package -Pproduction (Windows),
or ./mvnw clean package -Pproduction (Mac & Linux).
This will build a JAR file with all the dependencies and front-end resources,
ready to be deployed. The file can be found in the target folder after the build completes.
Once the JAR file is built, you can run it using
java -jar target/myapp-1.0-SNAPSHOT.jar (NOTE, replace
myapp-1.0-SNAPSHOT.jar with the name of your jar).
| Directory | Description |
|---|---|
src/main/frontend/ | Client-side source directory |
index.html | HTML template |
index.ts | Frontend entrypoint, bootstraps a React application |
routes.tsx | React Router routes definition |
MainLayout.tsx | Main layout component, contains the navigation menu, uses App Layout |
views/ | UI view components |
themes/ | Custom CSS styles |
src/main/java/<groupId>/ | Server-side source directory, contains the server-side Java views |
Application.java | Server entry-point |
- Read the documentation at hilla.dev/docs.
- Ask questions on Stack Overflow or join our Forum.
- Report issues, create pull requests in GitHub.