https://github.com/maxbarsukov/myfilmlist
🍿🎬 MyFilmList is a social networking platform and catalog for movies and TV series, allowing you to share your thoughts and discover new favorites
https://github.com/maxbarsukov/myfilmlist
coursework information-systems itmo maxbarsukov my-film-list pmpknu spring
Last synced: 3 months ago
JSON representation
🍿🎬 MyFilmList is a social networking platform and catalog for movies and TV series, allowing you to share your thoughts and discover new favorites
- Host: GitHub
- URL: https://github.com/maxbarsukov/myfilmlist
- Owner: maxbarsukov
- License: mit
- Created: 2024-10-04T12:30:15.000Z (8 months ago)
- Default Branch: master
- Last Pushed: 2025-01-18T04:32:21.000Z (4 months ago)
- Last Synced: 2025-01-18T05:26:31.895Z (4 months ago)
- Topics: coursework, information-systems, itmo, maxbarsukov, my-film-list, pmpknu, spring
- Language: TypeScript
- Homepage: https://mfl.maxbarsukov.ru/
- Size: 24.7 MB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# MyFilmList
> TL;DR: *Еще одно приложение для отслеживания фильмов*


 \
[](https://github.com/maxbarsukov/MyFilmList/actions/workflows/markdown.yml)## 🍿 Что такое MyFilmList?
**MyFilmList** — это приложение, предназначенное для отслеживания фильмов,
которое позволяет вести собственные списки просмотренного, запланированного к просмотру контента, оценивать фильмы,
оставлять отзывы и делиться рекомендациями, находить новые произведения для просмотра по рекомендациям, жанрам и рейтингам.Система позволяет создавать единое место для взаимодействия пользователей,
любящих кино, и предлагает множество функций для повышения удобства использования платформы.С помощью **MyFilmList** пользователи могут:
- **Создавать и управлять коллекциями фильмов**: Пользователи могут создавать персонализированные списки фильмов, которые они хотят посмотреть, а также отслеживать просмотренные фильмы.
- **Оставлять отзывы и оценки**: Каждому фильму можно оставить отзыв и оценку, что помогает другим пользователям принимать решения о просмотре.
- **Получать рекомендации**: Приложение предлагает персонализированные рекомендации на основе предпочтений пользователя и его истории просмотров.### 🖥️ Приложение
Хотите увидеть **MyFilmList** в действии?
- 🔥 [**Попробуйте!**](https://mfl.maxbarsukov.ru/) 🔥
Не терпится узнать, как использовать API **MyFilmList**?
- 🗂️ [**MyFilmList OpenAPI 3.0**](https://mfl.maxbarsukov.ru/swagger-ui/index.html) 🗂️
---
## 📄 Курсовая работа
**MyFilmList** создан в рамках курсовой работы по предмету [«Информационные системы»](https://se.ifmo.ru/courses/is), целью которой является
получение навыков и знаний, необходимых для создания информационной системы в заданной предметной области> [!WARNING]
> Добрый день. Тема отклонена по причине цензуры. Придумайте что-нибудь менее нарушающее нормы приличия. \
> — Алексей Егошин (отвечая на проект курсовой работы "ИС Репродуктивного центра «SPER»")
> [!TIP]
> Если бы не цензура от лектора - ваш "банк спермы", звучит гораздо лучше как тема курсовой \
> — Алексей Егошин (позже)---
### Команда
- **Группа:** `P3315`
- **Студенты:**
- [@maxbarsukov](https://github.com/maxbarsukov): Барсуков Максим Андреевич `367081`;
- [@pmpknu](https://github.com/pmpknu): Горляков Даниил Петрович `367165`.### Задание
Текст задания на курсовую работу, а также описание всех этапов курсовой работы вы можете найти в [TASK.md](./TASK.md)
### Ход работы
| Этап | Артефакт |
|------|---------------------------------------------------------|
| `1` | **Отчёт:** [part1/report.pdf](./docs/part1/report.pdf) |
| `2` | **Отчёт:** [part2/report.pdf](./docs/part2/report.pdf) |
| `3` | **Отчёт:** [part3/report.pdf](./docs/part3/report.pdf) |
| `4` | **Отчёт:** [part4/report.pdf](./docs/part4/report.pdf) |---
## Оглавление
1. [Обновления](#updates)
2. [Начало работы](#getting-started)
1. [Предварительные требования](#pre-reqs)
2. [Сборка и запуск](#run)
3. [Тестирование](#testing)
4. [Содействие](#contributing)
5. [Нормы поведения](#code-of-conduct)
6. [Свяжитесь с нами!](#get-in-touch)
7. [Безопасность](#security)
8. [Полезные ссылки](#useful-links)
9. [Лицензия](#license)---
🎉 Вышла версия v0.1.0!
🔔 15 января 2025 (v0.1.0)
> - **Реализация рекомендаций**: введена новая конечная точка `/feed`, которая объединяет пользовательский контент, повышая вовлеченность пользователей с помощью персонализированных рекомендаций.
> - **Рекомендации по коллекциям фильмов**: в `FeedQuery` разработана система рекомендаций по коллекциям фильмов, позволяющая пользователям находить подходящий контент на основе их истории просмотров.
> - **Управление ролями пользователей**: реализован комплексный модуль управления ролями пользователей, включая новый `UserRoleService` для облегчения назначения ролей и разрешений.
> - **Объекты комментариев и рецензий**: добавлены объекты «Комментарий» и «Рецензия», дополненные службами для обработки операций CRUD и улучшения взаимодействия пользователя с контентом.
> - **Система сообщений**: введена функция «Пожаловаться» и связанные с ней службы, которые позволяют пользователям сообщать о неприемлемом контенте, обеспечивая более безопасное сообщество.
> - **Функциональность коллекций фильмов**: создан объект «Коллекция фильмов» с полными возможностями CRUD, позволяющий пользователям управлять своим любимым контентом.
> - **Восстановление пароля**: реализована функция восстановления пароля, которая позволяет пользователям безопасно сбрасывать свои пароли по электронной почте.
> - **Подтверждение электронной почты**: добавлена функция проверки электронной почты пользователя для обеспечения подлинности учетной записи и повышения безопасности во время регистрации пользователя.
> - **Улучшенные алгоритмы рекомендаций**: улучшена функция рекомендаций, позволяющая учитывать дополнительные факторы, такие как страна производства и средний рейтинг, предоставляя пользователям более релевантные предложения.### Предварительные требования
Убедитесь, что у вас установлен [`git`](https://git-scm.com/).
Чтобы собрать и запустить это приложение локально, вам понадобится несколько вещей:
- Установите [`Java`](https://www.java.com/ru/download/) *(проверено на `OpenJDK 17.0.12`)*;
- Вам понадобится [`PostgreSQL`](https://www.postgresql.org/download/) *(проверено на `16.2`)*;
- ... а также [`Minio`](https://min.io/download) *(проверено на `RELEASE.2024-12-18T13-15-44Z`)*;
- Проверьте, что [`Node.js`](https://nodejs.org/en) установлен *(проверено на `v20.17.12`)*;
- Установите [`pnpm`](https://pnpm.io/installation) *(проверено на `pnpm 9`)*.***или***
- Установите [Docker](https://docs.docker.com/) и [docker-compose](https://docs.docker.com/compose/install/).
Склонируйте этот репозиторий:
git clone [email protected]:maxbarsukov/MyFilmList.git
cd MyFilmListДля начала скопируйте содержимое [`.env.example`](./.env.example) в файл `.env` и внимательно изучите его содержимое,
после чего отредактируйте его в соответствии с вашим окружением и требованиями (например, поменять адрес клиента).При изменениях `.env` файла запускайте в окне консоли команду:
export $(cat .env | xargs)
> [!WARNING]
> Если архитектура вашей системы отличается от `x86-64`, вам, скорее всего,
> понадобится пересобрать [`vendor/libJMagick.so`](./vendor/libJMagick.so).
> \
> Если вы, как и я, счастливый обладатель `aarch64`, то,
> во имя избежания многочасовых страданий, вчитайтесь в [`jmagick/INSTALL#L112-L121`](https://github.com/techblue/jmagick/blob/master/INSTALL#L112-L121).Для этого следуйте инструкциям по сборке [`JMagick`](https://github.com/techblue/jmagick/blob/master/INSTALL) (или повторите команды из [`jmagick_build.yml`](https://github.com/techblue/jmagick/blob/master/.github/workflows/jmagick_build.yml)).
Полученный `.so` файл переименуйте в `libJMagick.so` и поместите в директорию [`vendor`](./vendor).#### Локально
- Убедитесь, что вы установили, настроили и запустили PostgreSQL и Minio;
- Введите `./gradlew bootRun` и проверьте http://localhost:8080.
- Чтобы запустить фронтенд, перейдите в директорию [`./frontend/`](./frontend/), запустите `pnpm run dev` и проверьте http://localhost:3000.#### Docker
- Запустите `docker compose up` и подождите, пока PostgreSQL и Minio не станут доступны.
- Введите `./gradlew bootRun` и проверьте http://localhost:8080.
- Чтобы запустить фронтенд, перейдите в директорию [`./frontend/`](./frontend/), запустите `pnpm run dev` и проверьте http://localhost:3000.Чтобы запустить тест-раннер, введите:
export $(cat .env | xargs)
./gradlew test---
Нужна помощь? Загляните в [`SUPPORT.md`](./SUPPORT.md)!
Привет! Мы рады, что вы думаете о том, чтобы внести свой вклад в **MyFilmList**! Не стесняйтесь выбирать проблему с пометкой `good first issue` и задавать любые вопросы, которые вам интересны. Некоторые моменты могут быть неясны, и мы готовы вам помочь!
Отчеты об ошибках и запросы на включение приветствуются на GitHub по адресу https://github.com/maxbarsukov/MyFilmList.
Прежде чем создавать свой PR, мы настоятельно рекомендуем вам прочитать соответствующий [`CONTRIBUTING.md`](https://github.com/maxbarsukov/MyFilmList/blob/master/.github/CONTRIBUTING.md) репозитория или раздел «Содействие» в [`README.md`](https://github.com/maxbarsukov/MyFilmList/blob/master/README.md#contributing).
Этот проект призван стать безопасным и гостеприимным пространством для совместной работы, и ожидается, что все, кто взаимодействует с кодовыми базами проекта **MyFilmList**, системами отслеживания проблем, чатами и списками рассылки, будут соблюдать [кодекс поведения](https://github.com/maxbarsukov/MyFilmList/blob/master/.github/CODE_OF_CONDUCT.md).
💌 Хотите внести предложение или оставить отзыв? Вот некоторые каналы, по которым вы можете связаться с нами:
- Нашли ошибку? [Откройте задачу](https://github.com/maxbarsukov/MyFilmList/issues) в репозитории!
- Хотите стать частью нашего сообщества Telegram? Мы приглашаем вас присоединиться к нашему [чату сообщества MyFilmList](https://t.me/MyFilmListApp), где вы можете найти поддержку со стороны нашей команды и сообщества, а также поделиться своими проектами или просто поговорить о случайных вещах с другими участниками сообщества **MyFilmList** 😁!**MyFilmList** серьезно относится к безопасности наших программных продуктов и услуг. Если вы считаете, что обнаружили уязвимость безопасности в каком-либо репозитории, принадлежащем MyFilmList, сообщите нам об этом, как описано в нашей [политике безопасности](https://github.com/maxbarsukov/MyFilmList/security/policy).
---
| Ссылка | Описание |
|----------------------------------------------------------------------------------------------|--------------------------------------------|
| [github.com/maxbarsukov/MyFilmList](https://github.com/maxbarsukov/MyFilmList) | Репозиторий **MyFilmList** |
| [mfl.maxbarsukov.ru](https://mfl.maxbarsukov.ru/) | Веб-приложение **MyFilmList** |
| [mfl.maxbarsukov.ru/swagger-ui/index.html](https://mfl.maxbarsukov.ru/swagger-ui/index.html) | OpenAPI 3.0 документация для открытого API |Проект доступен с открытым исходным кодом на условиях [Лицензии MIT](https://opensource.org/licenses/MIT). \
*Авторские права 2025 Max Barsukov & Daniil Gorlyakov***Поставьте звезду :star:, если вы нашли этот проект полезным.**
---
*
This project is published under [MIT](LICENSE).
*
A [maxbarsukov](https://github.com/maxbarsukov) & [pmpknu](https://github.com/pmpknu) project.
- :tada: -