ΠΠ΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Ρ Π½ΡΠ»Ρ. ΠΠ°Π΄Π°Π½ΠΈΠ΅: ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΏΠΎΠ³ΠΎΠ΄Ρ Ρ ΠΏΠ°Π½Π΅Π»ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²Π΅Π±\-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΏΠΎΠ³ΠΎΠ΄Ρ Π² Π²ΡΠ±ΡΠ°Π½Π½ΡΡ
Π³ΠΎΡΠΎΠ΄Π°Ρ
. Π‘ΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Ρ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΠΏΠΈ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ
ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π³ΠΎΡΠΎΠ΄Π°ΠΌΠΈ ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ
. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ ΡΠ°ΡΡΡ (ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΏΠΎΠ³ΠΎΠ΄Ρ ΠΏΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌΡ Π³ΠΎΡΠΎΠ΄Ρ Π±Π΅Π· Π»ΠΎΠ³ΠΈΠ½Π°), ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ (Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈ Π·Π°Π»ΠΎΠ³ΠΈΠ½Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΈΠ΄ΠΈΡ ΠΏΠΎΠ³ΠΎΠ΄Ρ Π² ΡΠ΅Ρ
Π³ΠΎΡΠΎΠ΄Π°Ρ
, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠ°Π·Π°Π» Π² ΡΠ²ΠΎΡΠΌ ΠΏΡΠΎΡΠΈΠ»Π΅) ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΡΡ (ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ, Π³ΠΎΡΠΎΠ΄Π°ΠΌΠΈ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ) Π‘ΡΠ΅ΠΊ: PHP 8.2+, Symfony 7, PostgreSQL. JS: ΠΡΠ±ΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΈΠ»ΠΈ Π²Π°Π½ΠΈΠ»ΡΠ½ΡΠΉ, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈ ajax-Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ Π°ΠΏΠΈ, Π²ΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° \- Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π΅. ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Symfony: * HttpClient \- ΡΠ°Π±ΠΎΡΠ° Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ Api * Cache (Ρ Redis) * Messenger (Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½Π°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ) * Security (Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ) * Form+Validator (ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ, Π»ΠΎΠ³ΠΈΠ½, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, Π°Π΄ΠΌΠΈΠ½ΠΊΠ° ΠΈ Ρ.Π΄.) * Mailer (Π°Π΄ΠΌΠΈΠ½ΡΠΊΠΈΠ΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ) PHPUnit: ΠΏΠΎΠΊΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΠ°ΠΌΠΈ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 30% ΡΡΡΠΎΠΊ Docker: ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (Π²ΠΊΠ»ΡΡΠ°Ρ PHP, Postgres ΠΈ Redis \- ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²), ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΡ. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ: * ΠΠ°Π³Π»Π°Π²Π½Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ°: * Π¨Π°ΠΏΠΊΠ° ΠΈ ΡΡΡΠ΅Ρ * Π€ΠΎΡΠΌΠ° ΠΏΠΎΠΈΡΠΊΠ° Π³ΠΎΡΠΎΠ΄Π° (Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π²ΡΠΏΠ°Π΄Π°ΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΠΎΠ³ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΎΠΌ) * ΠΠ°ΡΡΠΎΡΠΊΠ° Π³ΠΎΡΠΎΠ΄Π° (Π΄Π»Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ \- ΡΠΎ, ΡΡΠΎ Π²ΡΠ±ΡΠ°Π½ΠΎ Π²ΡΡΠ΅, Π΄Π»Ρ Π·Π°Π»ΠΎΠ³ΠΈΠ½Π΅Π½Π½ΠΎΠ³ΠΎ \- Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΡΡΠΎΡΠ΅ΠΊ): Π³ΠΎΡΠΎΠ΄ ΠΈ ΡΡΡΠ°Π½Π°; ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ°; ΠΈΠΊΠΎΠ½ΠΊΠΈ ΠΏΠΎΠ³ΠΎΠ΄Ρ (ΡΡΠ½ΠΎ/ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠ±Π»Π°ΡΠ½ΠΎΡΡΡ/ΠΎΠ±Π»Π°ΡΠ½ΠΎ/Π΄ΠΎΠΆΠ΄Ρ ΠΈ Ρ.Π΄.); Π²Π»Π°ΠΆΠ½ΠΎΡΡΡ; ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠ°; Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ \- ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ°Π· Π² 5 ΠΌΠΈΠ½ΡΡ * Π‘ΡΡΠ°Π½ΠΈΡΠ° Π³ΠΎΡΠΎΠ΄Π°: /city/{id} * ΠΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ Π½Π° ΠΊΠ°ΡΡΠΎΡΠΊΡ * Π Π°Π·Π²ΡΡΠ½ΡΡΠ°Ρ ΠΏΠΎΠ³ΠΎΠ΄Π° (ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π² ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΉ Π²ΠΈΠ΄) * ΠΡΠ°ΡΠΈΠΊ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π·Π° ΡΡΡΠΊΠΈ * ΠΡΠΎΠ³Π½ΠΎΠ· Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ (ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°ΠΏΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ \- 3, 5, 7, 10β¦) Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ΠΊΠ°ΡΡΠΎΡΠ΅ΠΊ Ρ Π³Π»Π°Π²Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ * Π‘ΡΡΠ°Π½ΠΈΡΠ° ΠΏΡΠΎΡΠΈΠ»Ρ (Π΄Π»Ρ Π·Π°Π»ΠΎΠ³ΠΈΠ½Π΅Π½Π½ΡΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ): Π²ΡΠ±ΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π³ΠΎΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄ΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅, ΡΠΌΠ΅Π½Π° ΠΏΠ°ΡΠΎΠ»Ρ * Π‘ΡΡΠ°Π½ΠΈΡΡ Π°Π΄ΠΌΠΈΠ½Π°: ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠ±ΡΠΎΡΠΈΡΡ ΠΏΠ°ΡΠΎΠ»Ρ, Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ; ΡΠΏΠΈΡΠΎΠΊ Π³ΠΎΡΠΎΠ΄ΠΎΠ² (ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΡΡΡΡΠΊΠΈΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΈ id ΠΈΠ· Π°ΠΏΠΈ, Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ/Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ (Π³ΠΎΡΠΎΠ΄ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, Π½ΠΎ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½) ΠΈ ΡΠ΄Π°Π»ΡΡΡ Π³ΠΎΡΠΎΠ΄Π°) * ΠΠ½ΠΎΠΏΠΊΠΈ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ³ΠΎΠ΄Ρ, ΠΎΡΠΈΡΡΠΊΠΈ ΠΊΠ΅ΡΠ°, ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΡΠ°ΡΡΡΠ° ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Messenger * Messenger: ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π³ΠΎΡΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΎΠΏΡΠΎΡΠ΅, Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ Π³ΠΎΡΠΎΠ΄Ρ (ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌ Π³ΠΎΡΠΎΠ΄Π°ΠΌ) ΠΈΠ· ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°ΠΏΠΈ; ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΡΠΎΡΡ ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ°Ρ
, Π΅ΡΠ»ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ \- ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ * Cache: Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π³ΠΎΡΠΎΠ΄Π΅ Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ 1 ΡΠ°Ρ, Π΅ΡΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ \- ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ (Π½ΠΈΠΆΠ΅) * ΠΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ΄Π° (ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΡΡΡΠ°Π½Π΅, ΡΠΈΡΠΎΡΠ΅ ΠΈ Π΄ΠΎΠ»Π³ΠΎΡΠ΅); ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ³ΠΎΠ΄Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ Π³ΠΎΡΠΎΠ΄Π°ΠΌ ΠΈ ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ Π³ΠΎΡΠΎΠ΄Ρ; ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΡΡΠΊΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°; ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ΅ΡΠ° (ΠΏΠΎ Π²ΡΠ΅ΠΌ Π³ΠΎΡΠΎΠ΄Π°ΠΌ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΡΡΡΠ°ΡΠ΅Π»; Π΄Π»Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° \- Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 5 ΠΌΠΈΠ½ΡΡ) * ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅: ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ api, ΠΎΡΠΈΠ±ΠΊΠΈ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ (ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΈ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π΄ΠΌΠΈΠ½Π°). ΠΡΠΎΠ΅ΠΊΡ Π½Π΅ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠΉ, ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ΄Π΅Π½ΡΠ΅ΡΠΊΠΈΠΉ Π΄ΠΎΠ»Π³ ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΡΠΏΠ΅Π²Π°Ρ. ΠΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΏΠΎΠΌΠΈΠΌΠΎ Π½ΠΎΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ· Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΠ΅Π΄Π»Π°ΠΉΠ½ 08.10 23:59