{"id":21121543,"url":"https://github.com/lebedevsergeyvach/eltexsocialmedia","last_synced_at":"2025-08-26T16:32:23.626Z","repository":{"id":263655251,"uuid":"891069819","full_name":"LebedevSergeyVach/EltexSocialMedia","owner":"LebedevSergeyVach","description":"An educational project for the development of Android applications in Java and Kotlin from Eltex Academy. The application is a social network that will allow users to create posts and events, indicate their places of work and much more. The project uses a home server for backend deployment.","archived":false,"fork":false,"pushed_at":"2025-04-24T10:51:53.000Z","size":34904,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-04T08:05:23.935Z","etag":null,"topics":["android","androidx-navigation","coroutines","crud","dagger2-hilt","datastore","dependency-injection","fragments","glide","kotlin","material3","mobile-app","mvi","mvvm-architecture","okhttp3","preferences-datastore","retrofit2","single-activity-multi-fragment","social-media-network","unit-tests"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LebedevSergeyVach.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-11-19T17:10:52.000Z","updated_at":"2025-05-20T09:08:23.000Z","dependencies_parsed_at":"2024-12-06T10:19:17.913Z","dependency_job_id":"97ebe90a-51be-4692-be1c-b6ef4bd7b854","html_url":"https://github.com/LebedevSergeyVach/EltexSocialMedia","commit_stats":null,"previous_names":["lebedevsergeyvach/eltexsocialmedia"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/LebedevSergeyVach/EltexSocialMedia","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LebedevSergeyVach%2FEltexSocialMedia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LebedevSergeyVach%2FEltexSocialMedia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LebedevSergeyVach%2FEltexSocialMedia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LebedevSergeyVach%2FEltexSocialMedia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LebedevSergeyVach","download_url":"https://codeload.github.com/LebedevSergeyVach/EltexSocialMedia/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LebedevSergeyVach%2FEltexSocialMedia/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272237185,"owners_count":24897564,"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","status":"online","status_checked_at":"2025-08-26T02:00:07.904Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["android","androidx-navigation","coroutines","crud","dagger2-hilt","datastore","dependency-injection","fragments","glide","kotlin","material3","mobile-app","mvi","mvvm-architecture","okhttp3","preferences-datastore","retrofit2","single-activity-multi-fragment","social-media-network","unit-tests"],"created_at":"2024-11-20T03:51:29.493Z","updated_at":"2025-08-26T16:32:23.589Z","avatar_url":"https://github.com/LebedevSergeyVach.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Eltex Social Media\n\u003ca name=\"up\"\u003e\u003c/a\u003e\n\n---\n\n🚀 **The project is written in the [Kotlin](https://kotlinlang.org) programming language**\n\nEducational project Development of Android applications in Java and Kotlin from Eltex Academy.\nThis project is based on the **MVVM** architecture **(Model-View-ViewModel)**.\nThe **MVI** (Model-View-Intent) architecture is used to process and download data from the server.\n\nThe project implements working with the server to perform **CRUD** operations (Create, Read, Update, Delete) with posts and events.\nThe [**Retrofit2**](https://github.com/square/retrofit) library is used to interact with the server along with [**Coroutines**](https://github.com/Kotlin/kotlinx.coroutines ), which allows asynchronous requests to be executed without blocking the main thread.\nTo implement the [**DI Dependency Injection**](https://developer.android.com/training/dependency-injection), the [**Dagger2-Hilt**](https://developer.android.com/training/dependency-injection/hilt-android) library and the Singleton antipattern removal **Factory** are used.\n\nTo work with the local database **SQLite**, **[ORM ROOM](https://developer.android.com/training/data-storage/room)** is used together with **[ksp](https://developer.android.com/jetpack/androidx/releases/room)**.\n**[The Prepopulate your Room database](https://developer.android.com/training/data-storage/room/prepopulate)** is used in the project for convenient testing.\nUsing **[Jetpack Preferences DataStore](https://developer.android.com/topic/libraries/architecture/datastore)** to work with local files on the device.\n\nTo work with requests to the server and process the received data in JSON format, the **[Retrofit2](https://github.com/square/retrofit)** and **[OkHttp3](https://github.com/square/okhttp)** libraries from **[Square](https://github.com/square)** + **[RxJava3](https://github.com/ReactiveX/RxJava)** from **[ReactiveX](https://github.com/ReactiveX)** are used to implement reactive programming, instead of accumulating Callbacks. The project has been rewritten from reactive programming on **[Retrofit2](https://github.com/square/retrofit)** + **[RxJava3](https://github.com/ReactiveX/RxJava)** to standard **[Retrofit2](https://github.com/square/retrofit)** + **[Coroutines](https://github.com/Kotlin/kotlinx.coroutines)** (suspend).\n\nThe project uses several types of architecture patterns and paradigms: **DI Dependency Injection**, **Builder**, **Observable**, **Observer**, **Adapter**, **Dependency Injection**, **Single Activity Architecture**, **Modular Architecture**, **Reactive Programming** and **Factory**.\n\nTo animate the loading of a list of posts or events in the **UI**, the [**SkeletonLayout**](https://github.com/Faltenreich/SkeletonLayout) library is used: displaying skeletons during initial loading and loading of the next page.\nThe [**Glide**](https://github.com/bumptech/glide) library is used to manage multimedia and download images from the server for display in the **UI**.\n\nBasic settings for the application's appearance are implemented, such as: language selection (Russian, English, system) and theme selection (dark, light, system). The ability to enable and disable vibration feedback in the application, display the size and clear the application cache has also been added.\n\n---\n\n## 🖥️ Server Infrastructure\n\nThe project uses a [**home server**](https://socialmedianetwork.serphantom.space/) for backend deployment. This solution provides full control over the infrastructure, flexibility in configuration, and cost savings on cloud resources.\n\n### 🛠️ Key Technologies and Tools\n\n- **Docker** and **Docker Compose**: Used for containerization and service management. All system components (backend, database, web server) are deployed in isolated containers, simplifying deployment and scaling.\n- **Debian**: The server's operating system. Chosen for its stability, security, and extensive customization options.\n- **PostgreSQL**: A powerful and reliable relational database used for storing application data.\n- **Spring Boot**: A framework for backend development in **Kotlin**. It ensures high performance, ease of development, and seamless integration with other system components.\n- **Nginx**: A web server and reverse proxy server. Used for request routing, load balancing, and serving static files.\n- **HTTPS**: Ensures secure communication between the client and server using **SSL/TLS** certificates.\n- **ImageKit.io**: A service for image optimization and delivery. Integrated into the project for fast media file loading.\n\n### 📦 Deployment\n\nThe project is deployed on the home server using **`docker-compose`**, which automates the launch of all necessary services. Below is an example configuration:\n\n### 🔒 Security\n\n- All external requests pass through **Nginx**, which provides protection against **DDoS** attacks and filters unwanted traffic.\n- Data encryption is ensured using **HTTPS** with certificates from [**Let's Encrypt**](https://letsencrypt.org/).\n- The **PostgreSQL** database is configured to use **SSL** for encrypted connections.\n\n### 🌐 Integration with [**ImageKit.io**](https://imagekit.io/)\n\nThe project uses [**ImageKit.io**](https://imagekit.io/) for image optimization and delivery. This allows:\n- Reducing server load through caching and **CDN**.\n- Automatically optimizing images for different devices and resolutions.\n- Simplifying media file management through a user-friendly interface.\n\n---\n\n### 📄 Documentation for the project [**documentation**](documentation/documentation.md).\n### 🖼️ View images of the mobile app [**Eltex Social Media**](documentation/README.md).\n\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)\n[![Version](https://img.shields.io/badge/Version-2.2.0-green.svg)](https://github.com/LebedevSergeyVach/EltexSocialMedia/releases/tag/v2.2.0)\n\n\u003cdetails open=\"open\"\u003e\n    \u003csummary\u003e\u003ch2\u003e🚀 The stack of technologies used\u003c/h2\u003e\u003c/summary\u003e\n\n| [\u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/kotlin/kotlin-original.svg\" width=\"45\" height=\"45\" alt=\"Kotlin\" /\u003e](https://kotlinlang.org/) | [\u003cimg src=\"https://uploads-ssl.webflow.com/60996f3af06ca2ff488a7bfb/60a269bf446a85794a4d3b6b_Retrofit.jpg\" width=\"45\" height=\"45\" alt=\"Retrofit\" /\u003e](https://github.com/square/retrofit) | [\u003cimg src=\"https://avatars.githubusercontent.com/u/82592?s=48\u0026v=4\" width=\"45\" height=\"45\" alt=\"OkHttp\" /\u003e](https://github.com/square/okhttp) | [\u003cimg src=\"https://s3.amazonaws.com/playstore/images/60bb08c2fc6d0bddb91e0e3553dcdb48\" width=\"45\" height=\"45\" alt=\"Glide\" /\u003e](https://github.com/bumptech/glide) | [\u003cimg src=\"https://koenig-media.raywenderlich.com/uploads/2020/02/AdvancedDagger2-feature.png\" width=\"45\" height=\"45\" alt=\"Dagger Hilt\" /\u003e](https://developer.android.com/training/dependency-injection/hilt-android) | [\u003cimg src=\"https://oracle-base.com/blog/wp-content/uploads/2016/10/materialdesign_principles_metaphor.png\" width=\"45\" height=\"45\" alt=\"Google Material Design\" /\u003e](https://github.com/material-components/material-components-android) | [\u003cimg src=\"https://services.google.com/fh/files/emails/android_dev_newsletter_feb_image3.png\" width=\"45\" height=\"45\" alt=\"AndroidX Jetpack\" /\u003e](https://developer.android.com/jetpack) | [\u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/gradle/gradle-original.svg\" width=\"45\" height=\"45\" alt=\"Gradle\" /\u003e](https://gradle.org/) | [\u003cimg src=\"https://raw.githubusercontent.com/Faltenreich/SkeletonLayout/refs/heads/develop/images/android.png\" width=\"45\" height=\"45\" alt=\"SkeletonLayout\" /\u003e](https://github.com/Faltenreich/SkeletonLayout) |\n|:----------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|\n|                                                                           Kotlin                                                                           |                                                                                         Retrofit                                                                                         |                                                                    OkHttp                                                                    |                                                                              Glide                                                                               |                                                                                                      Dagger Hilt                                                                                                      |                                                                                                            Material Design                                                                                                             |                                                                                    AndroidX Jetpack                                                                                    |                                                                         Gradle                                                                         |                                                                                                Skeleton Layout                                                                                                |\n\n\u003c/details\u003e\n\n---\n\n\u003e [!IMPORTANT]\n\u003e ## **📱 Project Description**\n\u003e\n\u003e An educational project for the development of Android applications in Java and Kotlin from Eltex Academy.\n\u003e The application is a social network that will allow users to create posts and events, leave comments and share their opinions under posts, indicate their places of work and much more.\n\n\u003e [!NOTE]\n\u003e ## **✨ Features and functionality of the application**\n\u003e\n\u003e ### **📝 Posts**\n\u003e - Create, edit, and delete posts:\n\u003e - - Write a text for a new post.\n\u003e - - Attach an image to a new post.\n\u003e - - Edit or delete an existing post.\n\u003e - Watch the feed of posts from all users.\n\u003e - Please like the post.\n\u003e - Share your opinion in the comments.\n\u003e\n\u003e ### **📅 Events**\n\u003e - Create, edit, and delete events:\n\u003e - - Write a text for a new event.\n\u003e - - Choose the date and time for the event.\n\u003e - - Attach a link or an address for the event.\n\u003e - - Attach an image to a new event.\n\u003e - - Edit or delete existing events.\n\u003e - Watch the feed of events from all users.\n\u003e - Please likes and participate in the event.\n\u003e\n\u003e ### **📱 Detailed viewing**\n\u003e - See the detailed description of the posts and events.\n\u003e - See who liked the event and who is participating in it.\n\u003e - See the comments and share your comments.\n\u003e - Please like and participate yourself.\n\u003e - Download images from a post or event.\n\u003e\n\u003e ### **💭 Comments**\n\u003e - Share your opinion and information with other users of the app under the posts.\n\u003e - - Write a new comment.\n\u003e - - Delete your comments.\n\u003e - Please like other comments.\n\u003e\n\u003e ### **👤 Account**\n\u003e - Registering a new account:\n\u003e - - Specify the username, name, and avatar for your account.\n\u003e - Manage your posts, events, and work/study information.\n\u003e\n\u003e ### **👥 Profile**\n\u003e - View the profile of other users.\n\u003e - View all the posted information from the user.\n\u003e - See the list of all users of the application.\n\u003e\n\u003e ### **🏢 Information about places of work**\n\u003e - Create new information about your place of work/study:\n\u003e - - Please provide information about the company: the name, your position, the reference and the period of employment.\n\u003e - See other users' places of work/study.\n\u003e\n\u003e ### **⚙️ Settings**\n\u003e - Choose an application theme:\n\u003e - - Light.\n\u003e - - Dark .\n\u003e - - System.\n\u003e - Choose the application language:\n\u003e - - English.\n\u003e - - Russian.\n\u003e - - System.\n\u003e - Turn on and off the vibration response in the app.\n\u003e - Keep track of the cache size and also clear it in the application.\n\u003e - Keep an eye on all app updates.\n\u003e\n\u003e ### **🚧 The project is under active development!**\n\u003e\n\u003e Application version 2.2.0\n\u003e At the moment, work is underway to improve the functionality of the application, add new features to the project, as well as solve possible problems and bugs.\n\u003e\n\u003e ### 📅 Further development plans:\n\u003e - Add features to the app for working with voice posts/events and videos.\n\u003e - Improve caching of data downloaded from the server.\n\u003e - Implement a fragment displaying data about a post/event:\n\u003e - - Displaying information about a post/event;- Completed!\n\u003e - - Users who liked/participated;- Completed!\n\u003e - - Comments;- Completed!\n\u003e - - Displaying the location/event on the map;\n\u003e - - Mentioning other users when creating a post/event.\n\u003e\n\u003e ### 🤝 Project development assistance:\n\u003e - If you find a bug or have an idea for improvement, please create [**issue**](https://github.com/LebedevSergeyVach/EltexSocialMedia/issues).\n\u003e - You can also suggest your changes or implement new features/functions via [**pull request**](https://github.com/LebedevSergeyVach/EltexSocialMedia/pulls).\n\n\u003e [!WARNING]\n\u003e ### **🔧 Compilation of the project**\n\u003e\n\u003e In order to build a project, you need to create **`secrets.properties`** in the root of the project:\n\u003e\n\u003e```properties\n\u003e    API_KEY=\"The key to access the server\" Name: Authorization (apiKey) String\n\u003e    URL_SERVER=\"the URL of the connected server\" String\n\u003e```\n\n---\n\n### [Anatoly Spitchenko](https://github.com/Onotole1) - Android developer and Course Teacher\n\n### [Lebedev Sergey Vyacheslav](https://github.com/LebedevSergeyVach) – Student of the course\n\n---\n\n#### [README](README.md) [UP](#up)\n\n---\n\n# Социальная медиа сеть Eltex\n\u003ca name=\"вверх\"\u003e\u003c/a\u003e\n\n---\n\n🚀 **Проект написан на языке программирования [Kotlin](https://kotlinlang.org).**\n\nОбразовательный проект по разработке Android-приложений на Java и Kotlin от Eltex Academy.\nДанный проект основан по архитектуре **MVVM** **(Model-View-ViewModel)**.\nДля обработки и загрузки данных с сервера используется архитектура **MVI** (Model-View-Intent).\n\nВ проекте реализована работа с сервером для выполнения операций **CRUD** (Create, Read, Update, Delete) с постами и событиями.\nДля взаимодействия с сервером используется библиотека [**Retrofit2**](https://github.com/square/retrofit) вместе с [**Coroutines**](https://github.com/Kotlin/kotlinx.coroutines), что позволяет выполнять асинхронные запросы без блокировки основного потока.\nДля реализации [**Внедрение зависимостей DI**](https://developer.android.com/training/dependency-injection) используется библиотека [**Dagger2-Hilt**](https://developer.android.com/training/dependency-injection/hilt-android) и паттерн **Фабрика** для удаления антипаттерн **Singleton**.\n\nДля работы с локальной базой данных **SQLite** используется **[ORM ROOM](https://developer.android.com/training/data-storage/room)** вместе с **[ksp](https://developer.android.com/jetpack/androidx/releases/room)**.\n**[The Prepopulate your Room database](https://developer.android.com/training/data-storage/room/prepopulate)** используется в проекте для удобства тестирования.\nИспользуется **[Jetpack Preferences DataStore](https://developer.android.com/topic/libraries/architecture/datastore)** для работы с локальными файлами на устройстве.\n\nДля работы с запросами на сервер и обработкой полученных данных в формате JSON используется библиотеки **[Retrofit2](https://github.com/square/retrofit)** и **[OkHttp3](https://github.com/square/okhttp)** от **[Square](https://github.com/square)** + **[RxJava3](https://github.com/ReactiveX/RxJava)** от **[ReactiveX](https://github.com/ReactiveX)** для реализации реактивного программировая, вместо накапливающихся Callback - ов. Проект переписан с реактивного программирования на **[Retrofit2](https://github.com/square/retrofit)** + **[RxJava3](https://github.com/ReactiveX/RxJava)** на стандартные **[Retrofit2](https://github.com/square/retrofit)** + **[Coroutines](https://github.com/Kotlin/kotlinx.coroutines)** (suspend).\n\nВ проекте используется несколько типов архитектурных паттернов и парадигм: **DI Внедрение зависимостей**, **Строитель**, **Наблюдаемый**, **Наблюдатель**, **Адаптер**, **Внедрение зависимостей**, **Архитектура с одной активностью**, **Модульная архитектура**, **Реактивное программирование** и **Фабрика**.\n\nДля анимации загрузки в **UI** списка данных постов или событий используется библиотека [**SkeletonLayout**](https://github.com/Faltenreich/SkeletonLayout): отображение скелетонов при начальной загрузке и загрузке следующей страницы.\nДля управления мультимедиа и загрузки изображений с сервера для отображения в **UI** используется библиотека [**Glide**](https://github.com/bumptech/glide).\n\nРеализованы базовые настройки внешнего вида приложения, такие как: выбор языка (Русский, Английский, системный) и выбор темы (темная, светлая, системная). Также добавлена возможность включения и отключения виброотклика в приложении, показ размера и очистка кэша приложения.\n\n---\n\n## 🖥️ Серверная инфраструктура\n\nПроект использует [**домашний сервер**](https://socialmedianetwork.serphantom.space/) для развертывания бэкенда.\nЭто решение обеспечивает полный контроль над инфраструктурой, гибкость в настройке и экономию на облачных ресурсах.\n\n### 🛠️ Основные технологии и инструменты\n\n- **Docker** и **Docker Compose**: Для контейнеризации и управления сервисами. Все компоненты системы (бэкенд, база данных, веб-сервер) развернуты в изолированных контейнерах, что упрощает развертывание и масштабирование.\n- **Debian**: Операционная система сервера. Выбор обусловлен стабильностью, безопасностью и широкими возможностями для настройки.\n- **PostgreSQL**: Мощная и надежная реляционная база данных, используемая для хранения данных приложения.\n- **Spring Boot**: Фреймворк для разработки бэкенда на **Kotlin**. Обеспечивает высокую производительность, простоту разработки и интеграцию с другими компонентами системы.\n- **Nginx**: Веб-сервер и обратный прокси-сервер. Используется для маршрутизации запросов, балансировки нагрузки и обслуживания статических файлов.\n- **HTTPS**: Для обеспечения безопасного соединения между клиентом и сервером используется **SSL/TLS** сертификат.\n- **ImageKit.io**: Сервис для оптимизации и доставки изображений. Интегрирован с проектом для быстрой загрузки медиафайлов.\n\n### 📦 Развертывание\n\nДля развертывания проекта на домашнем сервере используется **`docker-compose`**, который автоматизирует запуск всех необходимых сервисов. Пример конфигурации:\n\n### 🔒 Безопасность\n\n- Все внешние запросы проходят через **Nginx**, который обеспечивает защиту от **DDoS**-атак и фильтрацию нежелательного трафика.\n- Для шифрования данных используется **HTTPS** с сертификатами от [**Let's Encrypt**](https://letsencrypt.org/).\n- База данных **PostgreSQL** настроена на использование **SSL** для шифрования соединений.\n\n### 🌐 Интеграция с [**ImageKit.io**](https://imagekit.io/)\n\nДля оптимизации и доставки изображений используется сервис [**ImageKit.io**](https://imagekit.io/). Это позволяет:\n- Уменьшить нагрузку на сервер за счет кэширования и **CDN**.\n- Автоматически оптимизировать изображения для разных устройств и разрешений.\n- Упростить управление медиафайлами через удобный интерфейс.\n\n---\n\n### 📄 Документация к проеку [**documentation**](documentation/documentation.md).\n### 🖼️ Посмотреть изображения мобильного приложения [**Eltex Social Media**](documentation/README.md).\n\n[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)\n[![Version](https://img.shields.io/badge/Version-2.2.0-green.svg)](https://github.com/LebedevSergeyVach/EltexSocialMedia/releases/tag/v2.2.0)\n\n\u003cdetails open=\"open\"\u003e\n    \u003csummary\u003e\u003ch2\u003e🚀 Стек используемых технологий\u003c/h2\u003e\u003c/summary\u003e\n\n| [\u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/kotlin/kotlin-original.svg\" width=\"45\" height=\"45\" alt=\"Kotlin\" /\u003e](https://kotlinlang.org/) | [\u003cimg src=\"https://uploads-ssl.webflow.com/60996f3af06ca2ff488a7bfb/60a269bf446a85794a4d3b6b_Retrofit.jpg\" width=\"45\" height=\"45\" alt=\"Retrofit\" /\u003e](https://github.com/square/retrofit) | [\u003cimg src=\"https://avatars.githubusercontent.com/u/82592?s=48\u0026v=4\" width=\"45\" height=\"45\" alt=\"OkHttp\" /\u003e](https://github.com/square/okhttp) | [\u003cimg src=\"https://s3.amazonaws.com/playstore/images/60bb08c2fc6d0bddb91e0e3553dcdb48\" width=\"45\" height=\"45\" alt=\"Glide\" /\u003e](https://github.com/bumptech/glide) | [\u003cimg src=\"https://koenig-media.raywenderlich.com/uploads/2020/02/AdvancedDagger2-feature.png\" width=\"45\" height=\"45\" alt=\"Dagger Hilt\" /\u003e](https://developer.android.com/training/dependency-injection/hilt-android) | [\u003cimg src=\"https://oracle-base.com/blog/wp-content/uploads/2016/10/materialdesign_principles_metaphor.png\" width=\"45\" height=\"45\" alt=\"Google Material Design\" /\u003e](https://github.com/material-components/material-components-android) | [\u003cimg src=\"https://services.google.com/fh/files/emails/android_dev_newsletter_feb_image3.png\" width=\"45\" height=\"45\" alt=\"AndroidX Jetpack\" /\u003e](https://developer.android.com/jetpack) | [\u003cimg src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/gradle/gradle-original.svg\" width=\"45\" height=\"45\" alt=\"Gradle\" /\u003e](https://gradle.org/) | [\u003cimg src=\"https://raw.githubusercontent.com/Faltenreich/SkeletonLayout/refs/heads/develop/images/android.png\" width=\"45\" height=\"45\" alt=\"SkeletonLayout\" /\u003e](https://github.com/Faltenreich/SkeletonLayout) |\n|:----------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|\n|                                                                           Kotlin                                                                           |                                                                                         Retrofit                                                                                         |                                                                    OkHttp                                                                    |                                                                              Glide                                                                               |                                                                                                      Dagger Hilt                                                                                                      |                                                                                                            Material Design                                                                                                             |                                                                                    AndroidX Jetpack                                                                                    |                                                                         Gradle                                                                         |                                                                                                Skeleton Layout                                                                                                |\n\n\u003c/details\u003e\n\n---\n\n\u003e [!IMPORTANT]\n\u003e ## **📱 Описание приложения**\n\u003e\n\u003e Образовательный проект по разработке Android-приложений на Java и Kotlin от Eltex Academy.\n\u003e Приложение представляет собой социальную сеть, которая позволит пользователям создавать посты и события, оставлять комменатрии и делиться своим мнением под постами, указывать места своей работы и многое другое.\n\n\u003e [!NOTE]\n\u003e ## **✨ Возможности и функционал приложения**\n\u003e\n\u003e ### **📝 Посты**\n\u003e - Создавайте, редактируйте и удаляйте посты:\n\u003e - - Пишите текст для нового поста.\n\u003e - - Прикрепляйте  изображение к новому посту.\n\u003e - - Редактируйте  или удаляйте существующий пост.\n\u003e - Смотрите ленту постов от всех пользователей.\n\u003e - Ставьте лайк посту.\n\u003e - Делитесь своим мнением в комментариях.\n\u003e\n\u003e ### **📅 События**\n\u003e - Создавайте, редактируйте и удаляйте события:\n\u003e - - Пишите текст для нового события.\n\u003e - - Выбирайте дату и время для проводимого события.\n\u003e - - Прикрепляйте ссылку или адрес для проводимого события.\n\u003e - - Прикрепляйте  изображение к новому событию.\n\u003e - - Редактируйте или удаляйте существующие событие.\n\u003e - Смотрите ленту событий от всех пользователей.\n\u003e - Ставьте лайки и участвуйте в мероприятии.\n\u003e \n\u003e ### **📱 Подробный просмотр**\n\u003e - Смотрите подробное описание постов и событий. \n\u003e - Посмотрите, кому понравилось мероприятие и кто в нем участвует.\n\u003e - Смотрите комментарии и делитесь комментариями.\n\u003e - Ставьте лайки и участвуйте сами.\n\u003e - Скачивайте изображения из поста или мероприятия.\n\u003e \n\u003e ### **💭 Комментарии**\n\u003e - Делитесь мнением и информацией с другими пользователями приложения под постами.\n\u003e - - Пишите новый комментарий.\n\u003e - - Удаляйте свои комментарии.\n\u003e - Ставьте лайки другим комментариям.\n\u003e\n\u003e ### **👤 Аккаунт**\n\u003e - Регистрируете новый аккаунт:\n\u003e - - Указывайте логин, имя и аватар для Вашего аккаунта.\n\u003e - Управляйте своими постами, событиями и информации о работе/учебе.\n\u003e\n\u003e ### **👥 Профиль**\n\u003e - Просматривайте профиль других пользователей.\n\u003e - Просматривайте всю выложенную информацию от пользователя.\n\u003e - Смотрите список всех пользователей приложения.\n\u003e\n\u003e ### **🏢 Информация о местах работы**\n\u003e - Создавайте новую информацию о месте Вашей работы/учебы:\n\u003e - - Указывайте информацию о компании: название, Ваша должность, ссылка и промежуток трудоустройства.\n\u003e - Смотрите места работы/учебы у других пользователей.\n\u003e\n\u003e ### **⚙️ Настройки**\n\u003e - Выбирайте тему приложения:\n\u003e - - Светлая.\n\u003e - - Темная.\n\u003e - - Системная.\n\u003e - Выбирайте язык приложения:\n\u003e - - Русский.\n\u003e - - Английский.\n\u003e - - Системный.\n\u003e - Включайте и отключайте виброотклик в приложении.\n\u003e - Следите за размером кэша, а также очищайте его в приложении.\n\u003e - Смотрите за всеми обновлениями приложения.\n\u003e\n\u003e ### **🚧 Проект находится в стадии активной разработки!**\n\u003e\n\u003e Версия приложения 2.2.0\n\u003e На данный момент идет работа над улучшением функциональности приложения, добавления новых фишек в проект, а также решение возможных проблем и багов.\n\u003e\n\u003e ### 📅 Планы дальнейшего развития:\n\u003e - Добавить функции в приложение по работе с голосовыми постами/события и видео.\n\u003e - Улучшить кэширование данных, загруженных с сервера.\n\u003e - Реализовать фрагмент с отображением данных о посте/событии:\n\u003e - - Отображение информации о посте/событии; - Выполнено!\n\u003e - - Пользователи, поставившие лайк/участие; - Выполнено!\n\u003e - - Комментарии; - Выполнено!\n\u003e - - Отображение места/проведения события на карте;\n\u003e - - Упоминание других пользователей при создании поста/события.\n\u003e\n\u003e ### 🤝 Помощь в развитии проекта:\n\u003e - Если Вы нашли баг или у вас есть идея для улучшения, пожалуйста, создайте [**issue**](https://github.com/LebedevSergeyVach/EltexSocialMedia/issues).\n\u003e - Вы также можете предложить свои изменения или реализацию новых фишек/функций через [**pull request**](https://github.com/LebedevSergeyVach/EltexSocialMedia/pulls).\n\n\u003e [!WARNING]\n\u003e ### **🔧 Компиляция проекта**\n\u003e\n\u003e Для того, чтобы собрать проект, необходимо создать **`secrets.properties`** в корне проекта:\n\u003e\n\u003e```properties\n\u003e    API_KEY=\"Ключ для доступа к серверу\" Name: Authorization (apiKey) String\n\u003e    URL_SERVER=\"URL подключаемого сервера\" String\n\u003e```\n\n---\n\n### [Анатолий Спитченко](https://github.com/Onotole1) - Android-Разработчик и преподаватель курса\n\n### [Лебедев Сергей Вячеславович](https://github.com/LebedevSergeyVach) – Студент курса\n\n---\n\n#### [README](README.md) [ВВЕРХ](#вверх)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flebedevsergeyvach%2Feltexsocialmedia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flebedevsergeyvach%2Feltexsocialmedia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flebedevsergeyvach%2Feltexsocialmedia/lists"}