ΠΠ΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΠΎΡΠ°Π±ΠΎΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°. ΠΠΎΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΎΡ ΡΠ½Π΄Π΅ΠΊΡΠ° ΡΡΠ΄Π³ΡΠ°ΠΌ. ΠΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° ΠΊΠ°ΠΊ Π±ΡΠΊΠ΅Π½Π΄-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° β Π½Π°ΠΏΠΈΡΠ°ΡΡ Π±ΡΠΊΠ΅Π½Π΄ Π² Π²ΠΈΠ΄Π΅ REST API Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Β«Π€ΡΠ΄Π³ΡΠ°ΠΌΒ» ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ. Π§ΡΠΎΠ±Ρ Β«ΠΏΠΎΠ΄ΡΡΠΆΠΈΡΡΒ» Π²Π°Ρ Π±ΡΠΊΠ΅Π½Π΄ Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠΌ SPA, REST API Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠΎΠ³ΠΎ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ. ΠΡΠΎΠ΅ΠΊΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠΎΠΊΠ°. Π£ Π²Π°Ρ Π½Π΅Ρ ΠΆΡΡΡΠΊΠΈΡ
ΡΠ°ΠΌΠΎΠΊ ΠΏΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΠ»Π°Π½Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½Ρ. ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π£ ΠΏΡΠΎΠ΅ΠΊΡΠ° Β«Π€ΡΠ΄Π³ΡΠ°ΠΌΒ» Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π΄Π²Π΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ: Β«Π Π΅ΡΠ΅ΠΏΡΒ» ΠΈ Β«ΠΠ½Π³ΡΠ΅Π΄ΠΈΠ΅Π½ΡΒ». Π‘ΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΊΡΠΎΠΌΠ΅ ΡΡΠΈΡ
ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠ°ΠΊΠΈΠΌΠΈ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ β Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅ΡΠΈΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π΅ΡΠ΅ΠΏΡ ΠΡΡΠΈΠ±ΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ: ΠΠ²ΡΠΎΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ (ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ). ΠΠ°Π·Π²Π°Π½ΠΈΠ΅. ΠΠ°ΡΡΠΈΠ½ΠΊΠ°. Π’Π΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅. ΠΠ½Π³ΡΠ΅Π΄ΠΈΠ΅Π½ΡΡ β ΠΏΡΠΎΠ΄ΡΠΊΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ Π±Π»ΡΠ΄Π° ΠΏΠΎ ΡΠ΅ΡΠ΅ΠΏΡΡ. ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Ρ Π²ΡΠ±ΠΎΡΠΎΠΌ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΠΈ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ. ΠΡΠ΅ΠΌΡ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ Π² ΠΌΠΈΠ½ΡΡΠ°Ρ
. ΠΡΠ΅ ΠΏΠΎΠ»Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ½Π³ΡΠ΅Π΄ΠΈΠ΅Π½Ρ ΠΡΡΠΈΠ±ΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ: ΠΠ°Π·Π²Π°Π½ΠΈΠ΅. ΠΠ΄ΠΈΠ½ΠΈΡΠ° ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ. ΠΡΠ΅ ΠΏΠΎΠ»Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΏΠΎΠ»ΡΠΌ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊ API. ΠΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π½Π°ΡΡΡΠΎΠ΅Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΊΠ° Π ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π°Π΄ΠΌΠΈΠ½-Π·ΠΎΠ½Ρ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠΎΠ»Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠΎΠΈΡΠΊ: Π²ΡΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ; Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ; Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ΅ΡΠ΅ΠΏΡΠΎΠ²: Π² ΡΠΏΠΈΡΠΊΠ΅ ΡΠ΅ΡΠ΅ΠΏΡΠΎΠ² Π²ΡΠ²Π΅ΡΡΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠΌΡ Π°Π²ΡΠΎΡΠ° ΡΠ΅ΡΠ΅ΠΏΡΠ°; Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ Π°Π²ΡΠΎΡΡ, Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅ΠΏΡΠ°; Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ΅ΠΏΡΠ° Π²ΡΠ²Π΅ΡΡΠΈ ΠΎΠ±ΡΠ΅Π΅ ΡΠΈΡΠ»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΉ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅ΠΏΡΠ° Π² ΠΈΠ·Π±ΡΠ°Π½Π½ΠΎΠ΅. Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΠ½Π³ΡΠ΅Π΄ΠΈΠ΅Π½ΡΠΎΠ²: Π² ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ²Π΅ΡΡΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΠ½Π³ΡΠ΅Π΄ΠΈΠ΅Π½ΡΠ° ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ; Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ. ΠΠ°ΠΊΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΡΠΎΠ΅ΠΊΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
PostgreSQL. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° SQLite, Π° PostgreSQL ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ·ΠΆΠ΅, ΠΏΡΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ΅ ΠΊ Π΄Π΅ΠΏΠ»ΠΎΡ. Π Django-ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΠΉΠ» requirements.txt ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ. ΠΡΠΎΠ΅ΠΊΡ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π² ΡΠ΅ΡΡΡΡΡ
ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ
β nginx, PostgreSQL, backend ΠΈ frontend ΡΠ΅ΡΠ΅Π· docker-compose. ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ frontend Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π»ΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ². ΠΠ°Π½Π½ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΡ
ΡΠ°Π½ΡΡΡΡΡ Π² volumes. ΠΠ±ΡΠ°Π·Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½Ρ Π½Π° Docker Hub. ΠΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π°ΡΡΡΠΎΠ΅Π½ CI/CD ΡΠ΅ΡΠ΅Π· GitHub Actions. Π§ΡΠΎ Π΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΡΠ΅ΡΡΠΎΠ²ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ: Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΡΠΎΠ²Π½ΡΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Ρ
ΠΎΡΡ Π±Ρ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ΅ΡΠ΅ΠΏΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.