A Spring Boot service for managing films rates, user reviews, and recommendations.
- Film Management
- CRUD operations, and validation
- Metadata handling (MPA ratings, genres, directors), and cross-validation
- Multi-criteria search
- Filtering based on popularity and common interests
- User Interactions
- User registration and profile management
- Friendship system (add/remove friends, view mutual friends)
- Like/dislike films and reviews
- Personalized film recommendations
- Review System
- Post and manage film reviews
- Like/dislike reviews to affect usefulness score
- View reviews for specific films and all reviews
- Database Support
- PostgreSQL for production
- H2 in-memory database for testing
- Flexible Data Access
- JdbcTemplate for database operations
- In-memory storage classes for testing
- Comprehensive endpoints for all entities
- JSON request/response format
- Proper HTTP status codes, error handling, and validation
- Event feed tracking user activities
- Director management system, and common films between friends
- Film recommendations based on user preferences
- Java 21 or later
- Maven 3.6 or later
- PostgreSQL 17.4 or later (optional, for production)
- Docker 27.4.0 or later (optional, for containerized deployment)
git clone git@github.com:DawydowGerman/java-filmorate.gitcd java-filmoratemvn clean package-
Option 1: With H2 (default)
mvn spring-boot:run
-
Option 2: With PostgreSQL Update application-prod.properties with your PostgreSQL credentials
mvn spring-boot:run -Dspring.profiles.active=prod
-
Option 3: With Docker
docker-compose up --build