{"id":26216138,"url":"https://github.com/maxbarsukov/myfilmlist","last_synced_at":"2025-12-25T10:25:09.379Z","repository":{"id":270877045,"uuid":"867630986","full_name":"maxbarsukov/MyFilmList","owner":"maxbarsukov","description":"🍿🎬 MyFilmList is a social networking platform and catalog for movies and TV series, allowing you to share your thoughts and discover new favorites","archived":false,"fork":false,"pushed_at":"2025-01-18T04:32:21.000Z","size":25925,"stargazers_count":0,"open_issues_count":16,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-18T05:26:31.895Z","etag":null,"topics":["coursework","information-systems","itmo","maxbarsukov","my-film-list","pmpknu","spring"],"latest_commit_sha":null,"homepage":"https://mfl.maxbarsukov.ru/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maxbarsukov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["maxbarsukov","pmpknu"]}},"created_at":"2024-10-04T12:30:15.000Z","updated_at":"2025-01-18T04:32:23.000Z","dependencies_parsed_at":"2025-01-03T18:38:54.639Z","dependency_job_id":"cc160c3e-e17b-4dea-a0b9-4c30779ecb9c","html_url":"https://github.com/maxbarsukov/MyFilmList","commit_stats":null,"previous_names":["maxbarsukov/myfilmlist"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbarsukov%2FMyFilmList","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbarsukov%2FMyFilmList/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbarsukov%2FMyFilmList/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maxbarsukov%2FMyFilmList/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maxbarsukov","download_url":"https://codeload.github.com/maxbarsukov/MyFilmList/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243205444,"owners_count":20253474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["coursework","information-systems","itmo","maxbarsukov","my-film-list","pmpknu","spring"],"created_at":"2025-03-12T11:19:48.961Z","updated_at":"2025-12-25T10:25:09.348Z","avatar_url":"https://github.com/maxbarsukov.png","language":"TypeScript","funding_links":["https://github.com/sponsors/maxbarsukov","https://github.com/sponsors/pmpknu"],"categories":[],"sub_categories":[],"readme":"\u003cimg align=\"right\" src=\"https://raw.githubusercontent.com/maxbarsukov/MyFilmList/refs/heads/master/docs/assets/logo-readme.png\" alt=\"MyFilmList logo\" width=\"260\"\u003e\n\n# MyFilmList\n\n\u003e TL;DR: *Еще одно приложение для отслеживания фильмов*\n\n![GitHub Release](https://img.shields.io/github/v/release/maxbarsukov/MyFilmList)\n![GitHub License](https://img.shields.io/github/license/maxbarsukov/MyFilmList)\n![GitHub repo size](https://img.shields.io/github/repo-size/maxbarsukov/MyFilmList) \\\n[![Markdown](https://github.com/maxbarsukov/MyFilmList/actions/workflows/markdown.yml/badge.svg?branch=master)](https://github.com/maxbarsukov/MyFilmList/actions/workflows/markdown.yml)\n\n## 🍿 Что такое MyFilmList?\n\n**MyFilmList** — это приложение, предназначенное для отслеживания фильмов,\nкоторое позволяет вести собственные списки просмотренного, запланированного к просмотру контента, оценивать фильмы,\nоставлять отзывы и делиться рекомендациями, находить новые произведения для просмотра по рекомендациям, жанрам и рейтингам.\n\nСистема позволяет создавать единое место для взаимодействия пользователей,\nлюбящих кино, и предлагает множество функций для повышения удобства использования платформы.\n\nС помощью **MyFilmList** пользователи могут:\n\n- **Создавать и управлять коллекциями фильмов**: Пользователи могут создавать персонализированные списки фильмов, которые они хотят посмотреть, а также отслеживать просмотренные фильмы.\n- **Оставлять отзывы и оценки**: Каждому фильму можно оставить отзыв и оценку, что помогает другим пользователям принимать решения о просмотре.\n- **Получать рекомендации**: Приложение предлагает персонализированные рекомендации на основе предпочтений пользователя и его истории просмотров.\n\n### 🖥️ Приложение\n\nХотите увидеть **MyFilmList** в действии?\n\n- 🔥 [**Попробуйте!**](https://mfl.maxbarsukov.ru/) 🔥\n\nНе терпится узнать, как использовать API **MyFilmList**?\n\n- 🗂️ [**MyFilmList OpenAPI 3.0**](https://mfl.maxbarsukov.ru/swagger-ui/index.html) 🗂️\n\n---\n\n## 📄 Курсовая работа\n\n**MyFilmList** создан в рамках курсовой работы по предмету [«Информационные системы»](https://se.ifmo.ru/courses/is), целью которой является\nполучение навыков и знаний, необходимых для создания информационной системы в заданной предметной области\n\n\u003e [!WARNING]\n\u003e Добрый день. Тема отклонена по причине цензуры. Придумайте что-нибудь менее нарушающее нормы приличия. \\\n\u003e — Алексей Егошин (отвечая на проект курсовой работы \"ИС Репродуктивного центра «SPER»\")\n\n\u003cimg alt=\"anime\" src=\"./.resources/asuka-evangelion.gif\" height=\"200\"\u003e\n\n\u003e [!TIP]\n\u003e Если бы не цензура от лектора - ваш \"банк спермы\", звучит гораздо лучше как тема курсовой \\\n\u003e — Алексей Егошин (позже)\n\n---\n\n### Команда\n\n- **Группа:** `P3315`\n- **Студенты:**\n  - [@maxbarsukov](https://github.com/maxbarsukov): Барсуков Максим Андреевич `367081`;\n  - [@pmpknu](https://github.com/pmpknu): Горляков Даниил Петрович `367165`.\n\n### Задание\n\nТекст задания на курсовую работу, а также описание всех этапов курсовой работы вы можете найти в [TASK.md](./TASK.md)\n\n### Ход работы\n\n| Этап | Артефакт                                                |\n|------|---------------------------------------------------------|\n| `1`  | **Отчёт:** [part1/report.pdf](./docs/part1/report.pdf)  |\n| `2`  | **Отчёт:** [part2/report.pdf](./docs/part2/report.pdf)  |\n| `3`  | **Отчёт:** [part3/report.pdf](./docs/part3/report.pdf)  |\n| `4`  | **Отчёт:** [part4/report.pdf](./docs/part4/report.pdf)  |\n\n---\n\n## Оглавление\n\n1. [Обновления](#updates)\n2. [Начало работы](#getting-started)\n   1. [Предварительные требования](#pre-reqs)\n   2. [Сборка и запуск](#run)\n3. [Тестирование](#testing)\n4. [Содействие](#contributing)\n5. [Нормы поведения](#code-of-conduct)\n6. [Свяжитесь с нами!](#get-in-touch)\n7. [Безопасность](#security)\n8. [Полезные ссылки](#useful-links)\n9. [Лицензия](#license)\n\n---\n\n## Обновления \u003ca name=\"updates\"\u003e\u003c/a\u003e\n\n\u003cstrong\u003e🎉 Вышла версия \u003ca href=\"https://github.com/maxbarsukov/MyFilmList/blob/master/CHANGELOG.md#v010\"\u003ev0.1.0!\u003c/a\u003e\u003c/strong\u003e\n\u003cdetails open\u003e\n\n  \u003csummary\u003e\u003cb\u003e🔔 15 января 2025 (v0.1.0)\u003c/b\u003e\u003c/summary\u003e\n\n\u003e - **Реализация рекомендаций**: введена новая конечная точка `/feed`, которая объединяет пользовательский контент, повышая вовлеченность пользователей с помощью персонализированных рекомендаций.\n\u003e - **Рекомендации по коллекциям фильмов**: в `FeedQuery` разработана система рекомендаций по коллекциям фильмов, позволяющая пользователям находить подходящий контент на основе их истории просмотров.\n\u003e - **Управление ролями пользователей**: реализован комплексный модуль управления ролями пользователей, включая новый `UserRoleService` для облегчения назначения ролей и разрешений.\n\u003e - **Объекты комментариев и рецензий**: добавлены объекты «Комментарий» и «Рецензия», дополненные службами для обработки операций CRUD и улучшения взаимодействия пользователя с контентом.\n\u003e - **Система сообщений**: введена функция «Пожаловаться» и связанные с ней службы, которые позволяют пользователям сообщать о неприемлемом контенте, обеспечивая более безопасное сообщество.\n\u003e - **Функциональность коллекций фильмов**: создан объект «Коллекция фильмов» с полными возможностями CRUD, позволяющий пользователям управлять своим любимым контентом.\n\u003e - **Восстановление пароля**: реализована функция восстановления пароля, которая позволяет пользователям безопасно сбрасывать свои пароли по электронной почте.\n\u003e - **Подтверждение электронной почты**: добавлена функция проверки электронной почты пользователя для обеспечения подлинности учетной записи и повышения безопасности во время регистрации пользователя.\n\u003e - **Улучшенные алгоритмы рекомендаций**: улучшена функция рекомендаций, позволяющая учитывать дополнительные факторы, такие как страна производства и средний рейтинг, предоставляя пользователям более релевантные предложения.\n\n\u003c/details\u003e\n\n## 🚀 Начало работы \u003ca name=\"getting-started\"\u003e\u003c/a\u003e\n\n### Предварительные требования \u003ca name=\"pre-reqs\"\u003e\u003c/a\u003e\n\nУбедитесь, что у вас установлен [`git`](https://git-scm.com/).\n\nЧтобы собрать и запустить это приложение локально, вам понадобится несколько вещей:\n\n- Установите [`Java`](https://www.java.com/ru/download/) *(проверено на `OpenJDK 17.0.12`)*;\n- Вам понадобится [`PostgreSQL`](https://www.postgresql.org/download/) *(проверено на `16.2`)*;\n- ... а также [`Minio`](https://min.io/download) *(проверено на `RELEASE.2024-12-18T13-15-44Z`)*;\n- Проверьте, что [`Node.js`](https://nodejs.org/en) установлен *(проверено на `v20.17.12`)*;\n- Установите [`pnpm`](https://pnpm.io/installation) *(проверено на `pnpm 9`)*.\n\n***или***\n\n- Установите [Docker](https://docs.docker.com/) и [docker-compose](https://docs.docker.com/compose/install/).\n\nСклонируйте этот репозиторий:\n\n    git clone git@github.com:maxbarsukov/MyFilmList.git\n    cd MyFilmList\n\n### Сборка и запуск \u003ca name=\"run\"\u003e\u003c/a\u003e\n\nДля начала скопируйте содержимое [`.env.example`](./.env.example) в файл `.env` и внимательно изучите его содержимое,\nпосле чего отредактируйте его в соответствии с вашим окружением и требованиями (например, поменять адрес клиента).\n\nПри изменениях `.env` файла запускайте в окне консоли команду:\n\n    export $(cat .env | xargs)\n\n\u003e [!WARNING]\n\u003e Если архитектура вашей системы отличается от `x86-64`, вам, скорее всего,\n\u003e понадобится пересобрать [`vendor/libJMagick.so`](./vendor/libJMagick.so).\n\u003e \\\n\u003e Если вы, как и я, счастливый обладатель `aarch64`, то,\n\u003e во имя избежания многочасовых страданий, вчитайтесь в [`jmagick/INSTALL#L112-L121`](https://github.com/techblue/jmagick/blob/master/INSTALL#L112-L121).\n\nДля этого следуйте инструкциям по сборке [`JMagick`](https://github.com/techblue/jmagick/blob/master/INSTALL) (или повторите команды из [`jmagick_build.yml`](https://github.com/techblue/jmagick/blob/master/.github/workflows/jmagick_build.yml)).\nПолученный `.so` файл переименуйте в `libJMagick.so` и поместите в директорию [`vendor`](./vendor). \n\n#### Локально\n\n- Убедитесь, что вы установили, настроили и запустили PostgreSQL и Minio;\n- Введите `./gradlew bootRun` и проверьте http://localhost:8080.\n- Чтобы запустить фронтенд, перейдите в директорию [`./frontend/`](./frontend/), запустите `pnpm run dev` и проверьте http://localhost:3000.\n\n#### Docker\n\n- Запустите `docker compose up` и подождите, пока PostgreSQL и Minio не станут доступны.\n- Введите `./gradlew bootRun` и проверьте http://localhost:8080.\n- Чтобы запустить фронтенд, перейдите в директорию [`./frontend/`](./frontend/), запустите `pnpm run dev` и проверьте http://localhost:3000.\n\n## ✅\u0026ensp;Тестирование \u003ca name=\"testing\"\u003e\u003c/a\u003e\n\nЧтобы запустить тест-раннер, введите:\n\n    export $(cat .env | xargs)\n    ./gradlew test\n\n---\n\n## 🤝\u0026ensp;Содействие \u003ca name=\"contributing\"\u003e\u003c/a\u003e\n\nНужна помощь? Загляните в [`SUPPORT.md`](./SUPPORT.md)!\n\nПривет! Мы рады, что вы думаете о том, чтобы внести свой вклад в **MyFilmList**! Не стесняйтесь выбирать проблему с пометкой `good first issue` и задавать любые вопросы, которые вам интересны. Некоторые моменты могут быть неясны, и мы готовы вам помочь!\n\nОтчеты об ошибках и запросы на включение приветствуются на GitHub по адресу https://github.com/maxbarsukov/MyFilmList.\n\nПрежде чем создавать свой 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).\n\n## ⚖️\u0026ensp;Нормы поведения \u003ca name=\"code-of-conduct\"\u003e\u003c/a\u003e\n\nЭтот проект призван стать безопасным и гостеприимным пространством для совместной работы, и ожидается, что все, кто взаимодействует с кодовыми базами проекта **MyFilmList**, системами отслеживания проблем, чатами и списками рассылки, будут соблюдать [кодекс поведения](https://github.com/maxbarsukov/MyFilmList/blob/master/.github/CODE_OF_CONDUCT.md).\n\n## 📫\u0026ensp;Свяжитесь с нами! \u003ca name=\"get-in-touch\"\u003e\u003c/a\u003e\n\n💌 Хотите внести предложение или оставить отзыв? Вот некоторые каналы, по которым вы можете связаться с нами:\n\n- Нашли ошибку? [Откройте задачу](https://github.com/maxbarsukov/MyFilmList/issues) в репозитории!\n- Хотите стать частью нашего сообщества Telegram? Мы приглашаем вас присоединиться к нашему [чату сообщества MyFilmList](https://t.me/MyFilmListApp), где вы можете найти поддержку со стороны нашей команды и сообщества, а также поделиться своими проектами или просто поговорить о случайных вещах с другими участниками сообщества **MyFilmList** 😁!\n\n## 🛡️\u0026ensp;Безопасность \u003ca name=\"security\"\u003e\u003c/a\u003e\n\n**MyFilmList** серьезно относится к безопасности наших программных продуктов и услуг. Если вы считаете, что обнаружили уязвимость безопасности в каком-либо репозитории, принадлежащем MyFilmList, сообщите нам об этом, как описано в нашей [политике безопасности](https://github.com/maxbarsukov/MyFilmList/security/policy).\n\n---\n\n## 🌐\u0026ensp;Полезные ссылки \u003ca name=\"useful-links\"\u003e\u003c/a\u003e\n\n| Ссылка                                                                                       | Описание                                   |\n|----------------------------------------------------------------------------------------------|--------------------------------------------|\n| [github.com/maxbarsukov/MyFilmList](https://github.com/maxbarsukov/MyFilmList)               | Репозиторий **MyFilmList**                 |\n| [mfl.maxbarsukov.ru](https://mfl.maxbarsukov.ru/)                                            | Веб-приложение **MyFilmList**              |\n| [mfl.maxbarsukov.ru/swagger-ui/index.html](https://mfl.maxbarsukov.ru/swagger-ui/index.html) | OpenAPI 3.0 документация для открытого API |\n\n## 🪪\u0026ensp;Лицензия \u003ca name=\"license\"\u003e\u003c/a\u003e\n\nПроект доступен с открытым исходным кодом на условиях [Лицензии MIT](https://opensource.org/licenses/MIT). \\\n*Авторские права 2025 Max Barsukov \u0026 Daniil Gorlyakov*\n\n**Поставьте звезду :star:, если вы нашли этот проект полезным.**\n\n---\n\n*\u003cp align=\"center\"\u003eThis project is published under [MIT](LICENSE).\u003cbr\u003eA [maxbarsukov](https://github.com/maxbarsukov) \u0026 [pmpknu](https://github.com/pmpknu) project.\u003cbr\u003e- :tada: -\u003c/p\u003e*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxbarsukov%2Fmyfilmlist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaxbarsukov%2Fmyfilmlist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaxbarsukov%2Fmyfilmlist/lists"}