ΠΠΈΠ·Π°ΠΉΠ½ ΡΠ°ΠΉΡΠ°. ΠΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° (Π²Π΅Π± ΠΈΠ³ΡΠ°). ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: Π‘Π°ΠΌΠΎΠΏΠΈΡ. Π’ΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠ½Ρ. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ°Π½ΠΈΡ: 30. ΠΠΎΠΆΠ΅Π»Π°Π½ΠΈΡ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ: ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅! ΠΡΠΆΠ΅Π½ Fronted ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ 1. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΡΠΎΠ΅ΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΈΡΡΠΎΡΠΈΠΈ Π ΠΎΡΡΠΈΠΈ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π³Π΅ΠΉΠΌΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. Π€ΡΠΎΠ½ΡΠ΅Π½Π΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ API Π±ΡΠΊΠ΅Π½Π΄Π°. 2. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ 2.1. ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ (email, ΠΏΠ°ΡΠΎΠ»Ρ, ΠΈΠΌΡ, Π²ΠΎΠ·ΡΠ°ΡΡ, ΡΠΎΠ»Ρ) ΠΡ
ΠΎΠ΄ Π² ΡΠΈΡΡΠ΅ΠΌΡ (email, ΠΏΠ°ΡΠΎΠ»Ρ) ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠΎΠ»Ρ ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° JWT-ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π΄Π»Ρ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ 2.2. ΠΠΈΡΠ½ΡΠΉ ΠΊΠ°Π±ΠΈΠ½Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ (ΠΈΠΌΡ, email, ΡΡΠΎΠ²Π΅Π½Ρ, Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ, ΡΠ΅ΠΉΡΠΈΠ½Π³) ΠΡΡΠΎΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (ΠΏΡΠΎΠΉΠ΄Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡ, ΡΡΠΎΠ²Π½ΠΈ, Π½Π°ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΎΡΠΊΠΈ) ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠΈΠ»Ρ (ΠΊΡΠΎΠΌΠ΅ email) 2.3. ΠΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ³ΡΠΎΠ²ΡΠ΅ ΡΡΠΎΠ²Π½ΠΈ ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
ΡΡΠΎΠ²Π½Π΅ΠΉ ΠΈ ΠΈΡ
ΡΡΠ°ΡΡΡΠ° (ΠΏΡΠΎΠΉΠ΄Π΅Π½/Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Π½) ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠΎΠ²Π½Π΅ΠΉ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ Π·Π°Π΄Π°Π½ΠΈΡΠΌΠΈ ΠΠΎΠ΄ΡΡΠ΅Ρ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠΊΠΎΠ² Π·Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ²Π½Ρ Ρ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ 2.4. Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²ΠΈΠ΄Ρ Π²ΠΎΠΏΡΠΎΡΠΎΠ² (Π²ΡΠ±ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ/Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², Π²Π²ΠΎΠ΄ ΠΎΡΠ²Π΅ΡΠ°) Π’Π°ΠΉΠΌΠ΅Ρ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
Π·Π°Π΄Π°Π½ΠΈΠΉ ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ
/Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ
ΠΎΡΠ²Π΅ΡΠΎΠ² ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΡΡΠ° ΠΠ°ΠΏΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
2.5. Π Π΅ΠΉΡΠΈΠ½Π³ ΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π’Π°Π±Π»ΠΈΡΠ° Π»ΠΈΠ΄Π΅ΡΠΎΠ² Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΠΏΠΎ ΠΎΡΠΊΠ°ΠΌ Π Π°Π·Π΄Π΅Π» Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡΠΌΠΈ (ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π½Π°Π³ΡΠ°Π΄Ρ) 3. ΠΠ΅ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ 3.1. Π’Π΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠ΅ΠΊ Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ: Next.js Π‘ΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ: Tailwind CSS Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅: Redux Toolkit / Context API ΠΠ°ΠΏΡΠΎΡΡ ΠΊ API: Axios / Fetch ΠΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ: Next.js Routing 3.2. Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΠ½ΠΈΠΌΠ°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠ»Π°Π²Π½ΡΠΌΠΈ, Π±Π΅Π· ΠΏΠΎΠ΄Π²ΠΈΡΠ°Π½ΠΈΠΉ (ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Ρ) 3.3. ΠΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΡΡΡ ΠΈ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΠΎΡΡΡ ΠΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄Π΅ΡΠΊΡΠΎΠΏΠΎΠ², ΠΏΠ»Π°Π½ΡΠ΅ΡΠΎΠ² ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ
ΡΡΡΡΠΎΠΉΡΡΠ² ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π° (mobile-first) 4. ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ API ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅: GET /api/user ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
ΠΏΡΠΎΡΠΈΠ»Ρ: PUT /api/user ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΡΠΎΠ²Π½Π΅ΠΉ: GET /api/levels ΠΠ°ΡΠ°Π»ΠΎ ΡΡΠΎΠ²Π½Ρ: POST /api/levels/start ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ²Π½Ρ: POST /api/levels/complete ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΠ΅ΡΡΠΎΠ²: GET /api/tests ΠΡΠΏΡΠ°Π²ΠΊΠ° ΠΎΡΠ²Π΅ΡΠΎΠ² Π½Π° ΡΠ΅ΡΡ: POST /api/tests/submit ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΉΡΠΈΠ½Π³Π°: GET /api/ranking ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΉ: GET /api/achievements 5. Π‘ΡΠ΅Π΄Π° ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ VPS (TimeWeb) 6. Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΊΠΎΠ΄Ρ Π§ΠΈΡΡΠ°Ρ ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π°Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠΌΠΌΠΈΡ-ΠΌΠ΅ΡΡΠ΅Π΄ΠΆΠ°ΠΌΠΈ 7. Π‘ΡΠΎΠΊΠΈ Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° MVP: 5-6 Π½Π΅Π΄Π΅Π»Ρ Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π³ΠΎΠ²: 1-2 Π½Π΅Π΄Π΅Π»ΠΈ ΠΠΎΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ Π·Π°ΠΏΡΡΠΊ: 1-2 Π½Π΅Π΄Π΅Π»ΠΈ ΠΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: Π€ΡΠΎΠ½ΡΠ΅Π½Π΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π»Π΅Π³ΠΊΠΈΠΌ, Π±ΡΡΡΡΡΠΌ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ
ΡΠ°Π½ΡΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· API. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ: ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Ρ
ΠΎΠ΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ - 1 ΠΈΡΠ»Ρ. ΠΠΎ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΡΠ΅ΠΉΡΠ°Ρ, ΡΡΠΎΠ±Ρ Π²Ρ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΡΠΌΠ΅ Π·Π° ΡΠΊΠΎΠ»ΡΠΊΠΎ Π³ΠΎΡΠΎΠ²Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠ»ΡΠ³ΠΈ.