π The project is written in the Kotlin programming language
Educational project Development of Android applications in Java and Kotlin from Eltex Academy. This project is based on the MVVM architecture (Model-View-ViewModel). The MVI (Model-View-Intent) architecture is used to process and download data from the server.
The project implements working with the server to perform CRUD operations (Create, Read, Update, Delete) with posts and events. The Retrofit2 library is used to interact with the server along with Coroutines, which allows asynchronous requests to be executed without blocking the main thread. To implement the DI Dependency Injection, the Dagger2-Hilt library and the Singleton antipattern removal Factory are used.
To work with the local database SQLite, ORM ROOM is used together with ksp. The Prepopulate your Room database is used in the project for convenient testing. Using Jetpack Preferences DataStore to work with local files on the device.
To work with requests to the server and process the received data in JSON format, the Retrofit2 and OkHttp3 libraries from Square + RxJava3 from ReactiveX are used to implement reactive programming, instead of accumulating Callbacks. The project has been rewritten from reactive programming on Retrofit2 + RxJava3 to standard Retrofit2 + Coroutines (suspend).
The 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.
To animate the loading of a list of posts or events in the UI, the SkeletonLayout library is used: displaying skeletons during initial loading and loading of the next page. The Glide library is used to manage multimedia and download images from the server for display in the UI.
Basic 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.
The project uses a home server for backend deployment. This solution provides full control over the infrastructure, flexibility in configuration, and cost savings on cloud resources.
- 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.
- Debian: The server's operating system. Chosen for its stability, security, and extensive customization options.
- PostgreSQL: A powerful and reliable relational database used for storing application data.
- Spring Boot: A framework for backend development in Kotlin. It ensures high performance, ease of development, and seamless integration with other system components.
- Nginx: A web server and reverse proxy server. Used for request routing, load balancing, and serving static files.
- HTTPS: Ensures secure communication between the client and server using SSL/TLS certificates.
- ImageKit.io: A service for image optimization and delivery. Integrated into the project for fast media file loading.
The project is deployed on the home server using docker-compose
, which automates the launch of all necessary services. Below is an example configuration:
- All external requests pass through Nginx, which provides protection against DDoS attacks and filters unwanted traffic.
- Data encryption is ensured using HTTPS with certificates from Let's Encrypt.
- The PostgreSQL database is configured to use SSL for encrypted connections.
π Integration with ImageKit.io
The project uses ImageKit.io for image optimization and delivery. This allows:
- Reducing server load through caching and CDN.
- Automatically optimizing images for different devices and resolutions.
- Simplifying media file management through a user-friendly interface.
π Documentation for the project documentation.
πΌοΈ View images of the mobile app Eltex Social Media.
Important
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, leave comments and share their opinions under posts, indicate their places of work and much more.
Note
- Create, edit, and delete posts:
-
- Write a text for a new post.
-
- Attach an image to a new post.
-
- Edit or delete an existing post.
- Watch the feed of posts from all users.
- Please like the post.
- Share your opinion in the comments.
- Create, edit, and delete events:
-
- Write a text for a new event.
-
- Choose the date and time for the event.
-
- Attach a link or an address for the event.
-
- Attach an image to a new event.
-
- Edit or delete existing events.
- Watch the feed of events from all users.
- Please likes and participate in the event.
- Share your opinion and information with other users of the app under the posts.
-
- Write a new comment.
-
- Delete your comments.
- Please like other comments.
- Registering a new account:
-
- Specify the username, name, and avatar for your account.
- Manage your posts, events, and work/study information.
- View the profile of other users.
- View all the posted information from the user.
- See the list of all users of the application.
- Create new information about your place of work/study:
-
- Please provide information about the company: the name, your position, the reference and the period of employment.
- See other users' places of work/study.
- Choose an application theme:
-
- Light.
-
- Dark .
-
- System.
- Choose the application language:
-
- English.
-
- Russian.
-
- System.
- Turn on and off the vibration response in the app.
- Keep track of the cache size and also clear it in the application.
- Keep an eye on all app updates.
Application version 2.0.0 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.
- Add features to the app for working with voice posts/events and videos.
- Improve caching of data downloaded from the server.
- Implement a fragment displaying data about a post/event:
-
- Displaying information about a post/event;
-
- Users who liked/participated;
-
- Comments;
-
- Displaying the location/event on the map;
-
- Mentioning other users when creating a post/event.
- If you find a bug or have an idea for improvement, please create issue.
- You can also suggest your changes or implement new features/functions via pull request.
Warning
In order to build a project, you need to create secrets.properties
in the root of the project:
API_KEY="The key to access the server" Name: Authorization (apiKey) String
URL_SERVER="the URL of the connected server" String
Anatoly Spitchenko - Android developer and Course Teacher
Lebedev Sergey Vyacheslav β Student of the course
π ΠΡΠΎΠ΅ΠΊΡ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Kotlin.
ΠΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Android-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java ΠΈ Kotlin ΠΎΡ Eltex Academy. ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ ΠΏΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ MVVM (Model-View-ViewModel). ΠΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° MVI (Model-View-Intent).
Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ CRUD (Create, Read, Update, Delete) Ρ ΠΏΠΎΡΡΠ°ΠΌΠΈ ΠΈ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ. ΠΠ»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Retrofit2 Π²ΠΌΠ΅ΡΡΠ΅ Ρ Coroutines, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°. ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ DI ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Dagger2-Hilt ΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ½ Π€Π°Π±ΡΠΈΠΊΠ° Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π°Π½ΡΠΈΠΏΠ°ΡΡΠ΅ΡΠ½ Singleton.
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ SQLite ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ORM ROOM Π²ΠΌΠ΅ΡΡΠ΅ Ρ ksp. The Prepopulate your Room database ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Jetpack Preferences DataStore Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅.
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Retrofit2 ΠΈ OkHttp3 ΠΎΡ Square + RxJava3 ΠΎΡ ReactiveX Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Ρ, Π²ΠΌΠ΅ΡΡΠΎ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡΡΠΈΡ ΡΡ Callback - ΠΎΠ². ΠΡΠΎΠ΅ΠΊΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½ Ρ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Retrofit2 + RxJava3 Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Retrofit2 + Coroutines (suspend).
Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ² ΠΈ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌ: DI ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π‘ΡΡΠΎΠΈΡΠ΅Π»Ρ, ΠΠ°Π±Π»ΡΠ΄Π°Π΅ΠΌΡΠΉ, ΠΠ°Π±Π»ΡΠ΄Π°ΡΠ΅Π»Ρ, ΠΠ΄Π°ΠΏΡΠ΅Ρ, ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Ρ ΠΎΠ΄Π½ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΡ, ΠΠΎΠ΄ΡΠ»ΡΠ½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, Π Π΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π€Π°Π±ΡΠΈΠΊΠ°.
ΠΠ»Ρ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π² UI ΡΠΏΠΈΡΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΏΠΎΡΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° SkeletonLayout: ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΊΠ΅Π»Π΅ΡΠΎΠ½ΠΎΠ² ΠΏΡΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ° ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² UI ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Glide.
Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π²ΠΈΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ: Π²ΡΠ±ΠΎΡ ΡΠ·ΡΠΊΠ° (Π ΡΡΡΠΊΠΈΠΉ, ΠΠ½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ) ΠΈ Π²ΡΠ±ΠΎΡ ΡΠ΅ΠΌΡ (ΡΠ΅ΠΌΠ½Π°Ρ, ΡΠ²Π΅ΡΠ»Π°Ρ, ΡΠΈΡΡΠ΅ΠΌΠ½Π°Ρ). Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΠΈΠ±ΡΠΎΠΎΡΠΊΠ»ΠΈΠΊΠ° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΏΠΎΠΊΠ°Π· ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ ΠΎΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΎΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠΉ ΡΠ΅ΡΠ²Π΅Ρ Π΄Π»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π±ΡΠΊΠ΅Π½Π΄Π°. ΠΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΎΠΉ, Π³ΠΈΠ±ΠΊΠΎΡΡΡ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π½Π° ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠ°Ρ .
- Docker ΠΈ Docker Compose: ΠΠ»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ. ΠΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ (Π±ΡΠΊΠ΅Π½Π΄, Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ , Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ) ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ , ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
- Debian: ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠ±ΠΎΡ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡΡ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ ΠΈ ΡΠΈΡΠΎΠΊΠΈΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
- PostgreSQL: ΠΠΎΡΠ½Π°Ρ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Π°Ρ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- Spring Boot: Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΡΠΊΠ΅Π½Π΄Π° Π½Π° Kotlin. ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΏΡΠΎΡΡΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΡ.
- Nginx: ΠΠ΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ².
- HTTPS: ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ SSL/TLS ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ.
- ImageKit.io: Π‘Π΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΠ»Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ docker-compose
, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊ Π²ΡΠ΅Ρ
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
- ΠΡΠ΅ Π²Π½Π΅ΡΠ½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· Nginx, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ DDoS-Π°ΡΠ°ΠΊ ΠΈ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°.
- ΠΠ»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ HTTPS Ρ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌΠΈ ΠΎΡ Let's Encrypt.
- ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ PostgreSQL Π½Π°ΡΡΡΠΎΠ΅Π½Π° Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ SSL Π΄Π»Ρ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ.
π ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ImageKit.io
ΠΠ»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ ImageKit.io. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
- Π£ΠΌΠ΅Π½ΡΡΠΈΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π·Π° ΡΡΠ΅Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ CDN.
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ² ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΉ.
- Π£ΠΏΡΠΎΡΡΠΈΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π΄ΠΈΠ°ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΠ΅ΡΠ΅Π· ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
π ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡ documentation.
πΌοΈ ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Eltex Social Media.
Important
ΠΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Android-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java ΠΈ Kotlin ΠΎΡ Eltex Academy. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΡΡΡ ΠΈ ΡΠΎΠ±ΡΡΠΈΡ, ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½Π°ΡΡΠΈΠΈ ΠΈ Π΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄ ΠΏΠΎΡΡΠ°ΠΌΠΈ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΡΠ° ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅.
Note
- Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΠΈ ΡΠ΄Π°Π»ΡΠΉΡΠ΅ ΠΏΠΎΡΡΡ:
-
- ΠΠΈΡΠΈΡΠ΅ ΡΠ΅ΠΊΡΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ°.
-
- ΠΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ ΠΏΠΎΡΡΡ.
-
- Π Π΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΠΉΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΠΎΡΡ.
- Π‘ΠΌΠΎΡΡΠΈΡΠ΅ Π»Π΅Π½ΡΡ ΠΏΠΎΡΡΠΎΠ² ΠΎΡ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- Π‘ΡΠ°Π²ΡΡΠ΅ Π»Π°ΠΉΠΊ ΠΏΠΎΡΡΡ.
- ΠΠ΅Π»ΠΈΡΠ΅ΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ .
- Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΠΈ ΡΠ΄Π°Π»ΡΠΉΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ:
-
- ΠΠΈΡΠΈΡΠ΅ ΡΠ΅ΠΊΡΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ.
-
- ΠΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ Π΄Π°ΡΡ ΠΈ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ.
-
- ΠΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΠΉΡΠ΅ ΡΡΡΠ»ΠΊΡ ΠΈΠ»ΠΈ Π°Π΄ΡΠ΅Ρ Π΄Π»Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ.
-
- ΠΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΠΉΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡ ΡΠΎΠ±ΡΡΠΈΡ.
-
- Π Π΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΠΉΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅.
- Π‘ΠΌΠΎΡΡΠΈΡΠ΅ Π»Π΅Π½ΡΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΎΡ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- Π‘ΡΠ°Π²ΡΡΠ΅ Π»Π°ΠΉΠΊΠΈ ΠΈ ΡΡΠ°ΡΡΠ²ΡΠΉΡΠ΅ Π² ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΠΈ.
- ΠΠ΅Π»ΠΈΡΠ΅ΡΡ ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ ΠΏΠΎΡΡΠ°ΠΌΠΈ.
-
- ΠΠΈΡΠΈΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ.
-
- Π£Π΄Π°Π»ΡΠΉΡΠ΅ ΡΠ²ΠΎΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
- Π‘ΡΠ°Π²ΡΡΠ΅ Π»Π°ΠΉΠΊΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ.
- Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΠ΅ Π½ΠΎΠ²ΡΠΉ Π°ΠΊΠΊΠ°ΡΠ½Ρ:
-
- Π£ΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ Π»ΠΎΠ³ΠΈΠ½, ΠΈΠΌΡ ΠΈ Π°Π²Π°ΡΠ°Ρ Π΄Π»Ρ ΠΠ°ΡΠ΅Π³ΠΎ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°.
- Π£ΠΏΡΠ°Π²Π»ΡΠΉΡΠ΅ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΏΠΎΡΡΠ°ΠΌΠΈ, ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ°Π±ΠΎΡΠ΅/ΡΡΠ΅Π±Π΅.
- ΠΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΠΈΠ»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- ΠΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΠΉΡΠ΅ Π²ΡΡ Π²ΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
- Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΌΠ΅ΡΡΠ΅ ΠΠ°ΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ/ΡΡΠ΅Π±Ρ:
-
- Π£ΠΊΠ°Π·ΡΠ²Π°ΠΉΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ: Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΠ°ΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡΡ, ΡΡΡΠ»ΠΊΠ° ΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ ΡΡΡΠ΄ΠΎΡΡΡΡΠΎΠΉΡΡΠ²Π°.
- Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΠΌΠ΅ΡΡΠ° ΡΠ°Π±ΠΎΡΡ/ΡΡΠ΅Π±Ρ Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- ΠΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
-
- Π‘Π²Π΅ΡΠ»Π°Ρ.
-
- Π’Π΅ΠΌΠ½Π°Ρ.
-
- Π‘ΠΈΡΡΠ΅ΠΌΠ½Π°Ρ.
- ΠΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ·ΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
-
- Π ΡΡΡΠΊΠΈΠΉ.
-
- ΠΠ½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ.
-
- Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ.
- ΠΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΠΈ ΠΎΡΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ Π²ΠΈΠ±ΡΠΎΠΎΡΠΊΠ»ΠΈΠΊ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
- Π‘Π»Π΅Π΄ΠΈΡΠ΅ Π·Π° ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΊΡΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΈΡΠ°ΠΉΡΠ΅ Π΅Π³ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
- Π‘ΠΌΠΎΡΡΠΈΡΠ΅ Π·Π° Π²ΡΠ΅ΠΌΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ΅ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ 2.0.0 ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠΈΡΠ΅ΠΊ Π² ΠΏΡΠΎΠ΅ΠΊΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ Π±Π°Π³ΠΎΠ².
- ΠΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΡΡΠ°ΠΌΠΈ/ΡΠΎΠ±ΡΡΠΈΡ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ.
- Π£Π»ΡΡΡΠΈΡΡ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ , Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°.
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΠΎΡΡΠ΅/ΡΠΎΠ±ΡΡΠΈΠΈ:
-
- ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠΎΡΡΠ΅/ΡΠΎΠ±ΡΡΠΈΠΈ;
-
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, ΠΏΠΎΡΡΠ°Π²ΠΈΠ²ΡΠΈΠ΅ Π»Π°ΠΉΠΊ/ΡΡΠ°ΡΡΠΈΠ΅;
-
- ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ;
-
- ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΡΠ°/ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΡ Π½Π° ΠΊΠ°ΡΡΠ΅;
-
- Π£ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΠΎΡΡΠ°/ΡΠΎΠ±ΡΡΠΈΡ.
- ΠΡΠ»ΠΈ ΠΡ Π½Π°ΡΠ»ΠΈ Π±Π°Π³ ΠΈΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΈΠ΄Π΅Ρ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ issue.
- ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½ΠΎΠ²ΡΡ ΡΠΈΡΠ΅ΠΊ/ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ΅ΡΠ΅Π· pull request.
Warning
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ secrets.properties
Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
API_KEY="ΠΠ»ΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ" Name: Authorization (apiKey) String
URL_SERVER="URL ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°" String