Desktop application for managing a personal collection of movies, series, cartoons and favorites.
Тестовый проект по разработке десктопного Java-приложения.
Приложение помогает пользователю вести личную фильмотеку, искать фильмы, добавлять их в избранное и делиться списками с друзьями.
| Тип проекта | Десктопное приложение |
| Статус | Завершенный тестовый проект |
| Основной стек | Java, JavaFX, SQLite, Jsoup |
| Предметная область | Личная медиатека: фильмы, сериалы, мультфильмы, избранное, друзья |
- О проекте
- Скриншоты
- Возможности
- Архитектура
- Основные классы
- Тестирование
- Как запустить
- Что можно улучшить
FilmLibrary - десктопное приложение для управления личной коллекцией фильмов, сериалов и мультфильмов. Пользователь может просматривать медиаконтент, искать нужные позиции, добавлять фильмы в избранное, управлять аккаунтом и делиться избранными списками с друзьями.
Проект разрабатывался как тестовое JavaFX-приложение с полноценной пользовательской логикой, которая включает в себя регистрацию, авторизацию, хранение данных в SQLite, работу с избранным медиаконтентом, управлением друзьями и загрузкой данных о фильмах через HTML-парсинг.
| Главный экран |
|---|
![]() |
| Профиль пользователя | Управление друзьями |
|---|---|
![]() |
![]() |
| Избранное | Результаты поиска |
|---|---|
![]() |
![]() |
| Возможность | Описание |
|---|---|
| Просмотр каталога | Отображение фильмов, сериалов и мультфильмов в виде плиток |
| Поиск | Поиск медиаконтента по ключевым словам |
| Дозагрузка данных | Автоматическая подгрузка новых элементов при прокрутке |
| Карточки фильмов | Название, год выпуска, рейтинг и изображение |
- регистрация пользователя;
- авторизация по логину и паролю;
- отображение информации об аккаунте;
- изменение секретного кода;
- выход из аккаунта.
- добавление фильма в избранное;
- удаление фильма из избранного;
- просмотр собственного списка избранного;
- добавление друзей по имени и секретному коду;
- удаление друзей;
- просмотр избранного друга, если он разрешил доступ;
- настройка доступа друзей к своему списку избранного.
Приложение построено как JavaFX desktop app с локальным хранением данных и отдельными контроллерами для основных экранов.
flowchart TD
User["Пользователь"] --> UI["JavaFX UI"]
UI --> MainController["MainController"]
UI --> AuthController["AuthController"]
UI --> AccountController["AccountController"]
MainController --> Parser["Jsoup parser"]
MainController --> DB["SQLite database"]
AuthController --> DB
AccountController --> DB
| Слой | Назначение |
|---|---|
| JavaFX UI | Отображение экранов, форм, списков и карточек фильмов |
| Controllers | Обработка действий пользователя и управление состоянием экранов |
| Models | Представление сущностей пользователя и фильма |
| SQLite | Хранение пользователей, друзей и избранного |
| Jsoup | Парсинг HTML-страниц и получение данных о медиаконтенте |
| Класс | Назначение |
|---|---|
Main |
Запуск JavaFX-приложения и отображение главного окна |
MainController |
Основная логика приложения: загрузка фильмов, поиск, избранное, друзья, переключение экранов |
AuthController |
Регистрация, авторизация, работа со списком друзей |
AccountController |
Управление профилем пользователя и настройками доступа |
Movie |
Модель фильма: название, год, рейтинг, путь к изображению |
User |
Модель пользователя: идентификатор, имя, пароль/секретный код |
Database |
Подключение к SQLite и создание структуры базы данных |
В рамках проекта проверялись основные пользовательские сценарии:
| Сценарий | Ожидаемый результат |
|---|---|
| Запуск приложения | Отображается главный экран с категориями и авторизацией |
| Регистрация | Пользователь добавляется в базу данных |
| Авторизация | Выполняется вход в профиль пользователя |
| Просмотр фильмов | Отображаются карточки с постерами, названием, годом и рейтингом |
| Поиск | Показываются результаты по введенному ключевому слову |
| Добавление в избранное | Фильм сохраняется в списке избранного пользователя |
| Работа с друзьями | Пользователь может добавить или удалить друга |
| Доступ к избранному | Избранное друга отображается только при разрешенном доступе |
| Прокрутка списка | Новые элементы подгружаются автоматически |
Команды могут отличаться в зависимости от структуры репозитория. Если проект открывается через IntelliJ IDEA, проще запускать его как JavaFX-приложение из IDE.
- Склонируйте репозиторий:
git clone https://github.com/mdkefir/FilmLibrary.git
cd FilmLibrary-
Откройте проект в IntelliJ IDEA.
-
Убедитесь, что подключены зависимости:
- JavaFX;
- SQLite JDBC driver;
- Jsoup.
- Запустите класс
Main.
Если в проекте используется Maven или Gradle, добавьте сюда актуальную команду запуска:
# Maven
mvn javafx:run
# or Gradle
./gradlew run- добавить более точные фильтры по жанру, году и рейтингу;
- подключить полноценный внешний API с фильмами вместо HTML-парсинга;
- улучшить обработку ошибок сети и недоступности источника данных;
- добавить хеширование паролей;
- разделить слой доступа к данным и бизнес-логику;
- добавить автоматические unit-тесты;
- обновить визуальный стиль интерфейса.
Course project: a Java desktop application for managing a personal media library.
The app allows users to browse movies, series and cartoons, add items to favorites, manage friends and share favorite lists.
| Project type | Desktop application |
| Status | Completed course project |
| Main stack | Java, JavaFX, SQLite, Jsoup |
| Domain | Personal media library: movies, series, cartoons, favorites, friends |
FilmLibrary is a desktop application for managing a personal collection of movies, series and cartoons. Users can browse media content, search by keywords, add items to favorites, manage their account and share favorite lists with friends.
The project was built as an educational JavaFX application with real user-facing logic: registration, authentication, local SQLite persistence, favorites management, friend management and media data loading through HTML parsing.
| Main screen |
|---|
![]() |
| User account | Friends management |
|---|---|
![]() |
![]() |
| Favorites | Search results |
|---|---|
![]() |
![]() |
| Feature | Description |
|---|---|
| Catalog browsing | Movies, series and cartoons are displayed as visual tiles |
| Search | Keyword-based search across media content |
| Lazy loading | Additional media items are loaded while scrolling |
| Media cards | Title, release year, rating and poster image |
- user registration;
- login by username and password;
- account information screen;
- secret code update;
- logout.
- add a movie to favorites;
- remove a movie from favorites;
- view personal favorite list;
- add friends by username and secret code;
- remove friends;
- view a friend's favorites if access is allowed;
- configure whether friends can view your favorites.
The application is structured as a JavaFX desktop app with local persistence and separate controllers for the main screens.
flowchart TD
User["User"] --> UI["JavaFX UI"]
UI --> MainController["MainController"]
UI --> AuthController["AuthController"]
UI --> AccountController["AccountController"]
MainController --> Parser["Jsoup parser"]
MainController --> DB["SQLite database"]
AuthController --> DB
AccountController --> DB
| Layer | Responsibility |
|---|---|
| JavaFX UI | Screens, forms, lists and media cards |
| Controllers | User actions and screen state management |
| Models | User and movie domain objects |
| SQLite | Users, friends and favorites persistence |
| Jsoup | HTML parsing and media data extraction |
| Class | Responsibility |
|---|---|
Main |
Starts the JavaFX application and displays the main window |
MainController |
Main app logic: media loading, search, favorites, friends, screen switching |
AuthController |
Registration, authentication and friend list operations |
AccountController |
User profile and access settings management |
Movie |
Movie model: title, year, rating and image path |
User |
User model: id, username, password/secret code |
Database |
SQLite connection and database structure initialization |
The following user scenarios were checked during development:
| Scenario | Expected result |
|---|---|
| Application startup | Main screen with categories and authentication is displayed |
| Registration | User is added to the database |
| Authentication | User profile screen is opened |
| Movie browsing | Cards with posters, titles, years and ratings are displayed |
| Search | Matching media items are displayed |
| Add to favorites | Selected movie is saved to the user's favorites |
| Friends management | User can add and remove friends |
| Favorites access | Friend favorites are visible only when access is allowed |
| Scrolling | Additional media items are loaded automatically |
Commands may differ depending on the actual repository structure. If the project is configured for IntelliJ IDEA, the easiest way is to run it as a JavaFX application from the IDE.
- Clone the repository:
git clone https://github.com/mdkefir/FilmLibrary.git
cd FilmLibrary-
Open the project in IntelliJ IDEA.
-
Make sure the required dependencies are connected:
- JavaFX;
- SQLite JDBC driver;
- Jsoup.
- Run the
Mainclass.
If the project uses Maven or Gradle, add the actual run command here:
# Maven
mvn javafx:run
# or Gradle
./gradlew run- add more precise filters by genre, year and rating;
- use a dedicated movie API instead of HTML parsing;
- improve network error handling;
- add password hashing;
- separate data access from business logic;
- add automated unit tests;
- refresh the UI style.




