Skip to content

mdkefir/FilmLibrary

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FilmLibrary

JavaFX Desktop App · Pet Project · Personal Media Collection

Русская версия   English version

Java JavaFX SQLite Jsoup

Desktop application for managing a personal collection of movies, series, cartoons and favorites.




Русская версия

Тестовый проект по разработке десктопного Java-приложения.
Приложение помогает пользователю вести личную фильмотеку, искать фильмы, добавлять их в избранное и делиться списками с друзьями.

Тип проекта Десктопное приложение
Статус Завершенный тестовый проект
Основной стек Java, JavaFX, SQLite, Jsoup
Предметная область Личная медиатека: фильмы, сериалы, мультфильмы, избранное, друзья

Содержание

  1. О проекте
  2. Скриншоты
  3. Возможности
  4. Архитектура
  5. Основные классы
  6. Тестирование
  7. Как запустить
  8. Что можно улучшить

О проекте

FilmLibrary - десктопное приложение для управления личной коллекцией фильмов, сериалов и мультфильмов. Пользователь может просматривать медиаконтент, искать нужные позиции, добавлять фильмы в избранное, управлять аккаунтом и делиться избранными списками с друзьями.

Проект разрабатывался как тестовое JavaFX-приложение с полноценной пользовательской логикой, которая включает в себя регистрацию, авторизацию, хранение данных в SQLite, работу с избранным медиаконтентом, управлением друзьями и загрузкой данных о фильмах через HTML-парсинг.


Скриншоты

Главный экран
Главный экран FilmLibrary
Профиль пользователя Управление друзьями
Профиль пользователя Управление друзьями
Избранное Результаты поиска
Избранные фильмы Результаты поиска

Возможности

Работа с медиатекой

Возможность Описание
Просмотр каталога Отображение фильмов, сериалов и мультфильмов в виде плиток
Поиск Поиск медиаконтента по ключевым словам
Дозагрузка данных Автоматическая подгрузка новых элементов при прокрутке
Карточки фильмов Название, год выпуска, рейтинг и изображение

Пользовательский аккаунт

  • регистрация пользователя;
  • авторизация по логину и паролю;
  • отображение информации об аккаунте;
  • изменение секретного кода;
  • выход из аккаунта.

Избранное и друзья

  • добавление фильма в избранное;
  • удаление фильма из избранного;
  • просмотр собственного списка избранного;
  • добавление друзей по имени и секретному коду;
  • удаление друзей;
  • просмотр избранного друга, если он разрешил доступ;
  • настройка доступа друзей к своему списку избранного.

Архитектура

Приложение построено как 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
Loading
Слой Назначение
JavaFX UI Отображение экранов, форм, списков и карточек фильмов
Controllers Обработка действий пользователя и управление состоянием экранов
Models Представление сущностей пользователя и фильма
SQLite Хранение пользователей, друзей и избранного
Jsoup Парсинг HTML-страниц и получение данных о медиаконтенте

Основные классы

Класс Назначение
Main Запуск JavaFX-приложения и отображение главного окна
MainController Основная логика приложения: загрузка фильмов, поиск, избранное, друзья, переключение экранов
AuthController Регистрация, авторизация, работа со списком друзей
AccountController Управление профилем пользователя и настройками доступа
Movie Модель фильма: название, год, рейтинг, путь к изображению
User Модель пользователя: идентификатор, имя, пароль/секретный код
Database Подключение к SQLite и создание структуры базы данных

Тестирование

В рамках проекта проверялись основные пользовательские сценарии:

Сценарий Ожидаемый результат
Запуск приложения Отображается главный экран с категориями и авторизацией
Регистрация Пользователь добавляется в базу данных
Авторизация Выполняется вход в профиль пользователя
Просмотр фильмов Отображаются карточки с постерами, названием, годом и рейтингом
Поиск Показываются результаты по введенному ключевому слову
Добавление в избранное Фильм сохраняется в списке избранного пользователя
Работа с друзьями Пользователь может добавить или удалить друга
Доступ к избранному Избранное друга отображается только при разрешенном доступе
Прокрутка списка Новые элементы подгружаются автоматически

Как запустить

Команды могут отличаться в зависимости от структуры репозитория. Если проект открывается через IntelliJ IDEA, проще запускать его как JavaFX-приложение из IDE.

  1. Склонируйте репозиторий:
git clone https://github.com/mdkefir/FilmLibrary.git
cd FilmLibrary
  1. Откройте проект в IntelliJ IDEA.

  2. Убедитесь, что подключены зависимости:

  • JavaFX;
  • SQLite JDBC driver;
  • Jsoup.
  1. Запустите класс Main.

Если в проекте используется Maven или Gradle, добавьте сюда актуальную команду запуска:

# Maven
mvn javafx:run

# or Gradle
./gradlew run

Что можно улучшить

  • добавить более точные фильтры по жанру, году и рейтингу;
  • подключить полноценный внешний API с фильмами вместо HTML-парсинга;
  • улучшить обработку ошибок сети и недоступности источника данных;
  • добавить хеширование паролей;
  • разделить слой доступа к данным и бизнес-логику;
  • добавить автоматические unit-тесты;
  • обновить визуальный стиль интерфейса.



English Version

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

Table of Contents

  1. About
  2. Screenshots
  3. Features
  4. Architecture
  5. Core Classes
  6. Testing
  7. How to Run
  8. Roadmap

About

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.


Screenshots

Main screen
FilmLibrary main screen
User account Friends management
User account screen Friends management screen
Favorites Search results
Favorite movies screen Search results screen

Features

Media Library

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 Account

  • user registration;
  • login by username and password;
  • account information screen;
  • secret code update;
  • logout.

Favorites and Friends

  • 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.

Architecture

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
Loading
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

Core Classes

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

Testing

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

How to Run

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.

  1. Clone the repository:
git clone https://github.com/mdkefir/FilmLibrary.git
cd FilmLibrary
  1. Open the project in IntelliJ IDEA.

  2. Make sure the required dependencies are connected:

  • JavaFX;
  • SQLite JDBC driver;
  • Jsoup.
  1. Run the Main class.

If the project uses Maven or Gradle, add the actual run command here:

# Maven
mvn javafx:run

# or Gradle
./gradlew run

Roadmap

  • 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.


Course Project · JavaFX Desktop Application · Personal Portfolio


Русская версия   English version

About

JavaFX desktop app for managing a personal movie library: auth, search, categories, favorites, friends and shared access

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors