YoungWork - ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°Π±ΠΎΡΡ
ΠΈ ΡΡΡΠ΄ΠΎΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π½Π° Django REST API + Vue.js
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»ΡΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ, Π° ΡΠΎΠΈΡΠΊΠ°ΡΠ΅Π»ΡΠΌ - ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΡΠ΅Π·ΡΠΌΠ΅ ΠΈ ΠΎΡΠΊΠ»ΠΈΠΊΠ°ΡΡΡΡ Π½Π° Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ.
ποΈ ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ°
Backend (Django):
- Django 5.0.3 + Django REST Framework
- PostgreSQL Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
- JWT Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ (30 Π΄Π½Π΅ΠΉ access, 180 Π΄Π½Π΅ΠΉ refresh)
- WebSocket Π΄Π»Ρ ΡΠ°ΡΠ° (Channels + Redis)
- Webpack Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π°
Frontend (Vue.js 2.7):
- Vue 2.7.16 Ρ Composition API
- Vuex Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ
- Vue Router Π΄Π»Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ
- Axios Π΄Π»Ρ HTTP Π·Π°ΠΏΡΠΎΡΠΎΠ²
- Socket.io Π΄Π»Ρ WebSocket ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ
- SCSS Π΄Π»Ρ ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΠΈ
| ΠΠΎΠ΄ΡΠ»Ρ | Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ |
|---|---|
| accounts | ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ, Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΏΡΠΎΡΠΈΠ»ΠΈ |
| profiles | ΠΡΠΎΡΠΈΠ»ΠΈ ΡΠΎΠΈΡΠΊΠ°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»Π΅ΠΉ |
| jobs | ΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ, ΠΏΠΎΠΈΡΠΊ ΡΠ°Π±ΠΎΡΡ |
| resume | Π Π΅Π·ΡΠΌΠ΅ ΡΠΎΠΈΡΠΊΠ°ΡΠ΅Π»Π΅ΠΉ |
| chat | Real-time ΡΠ°Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ |
| notification | Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ |
| favorites | ΠΠ·Π±ΡΠ°Π½Π½ΡΠ΅ Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ/ΡΠ΅Π·ΡΠΌΠ΅ |
| response | ΠΡΠΊΠ»ΠΈΠΊΠΈ Π½Π° Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ |
- Download repository
- Install all required libraries for backend:
virtual venvvenv/script/activatepip install -r requirements.txtpy manage.py makemigrationspy manage.py migrate
- Follow the path YoungWork\frontend
- Install all required libraries for frontend:
a.
npm upgrade - In the terminal
npm run build - Go to root .\YoungWork\
- In the terminal
sh run.sh prod
Applicant (profiles):
- OneToOne Ρ User
- ΠΠΎΡΡΡΠΎΠ»ΠΈΠΎ (ManyToMany Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ)
- Π‘ΡΠ΅ΡΡΠΈΠΊ ΡΠ΅Π·ΡΠΌΠ΅
- ΠΠ°ΡΡΠΈΠ² ΠΎΡΠΊΠ»ΠΈΠΊΠΎΠ²Employer (profiles):
- OneToOne Ρ User
- ΠΠ°Π½Π½ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ (Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΠΠ, Π»ΠΎΠ³ΠΎΡΠΈΠΏ)
- Π‘ΡΠ°ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΠΠ
- ΠΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ (ManyToMany Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ)
- Π‘ΡΠ΅ΡΡΠΈΠΊ Π²Π°ΠΊΠ°Π½ΡΠΈΠΉVacancies (jobs):
- UUID primary key
- ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ (Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, Π·Π°Π΄Π°ΡΠΈ)
- ΠΠ°ΡΠΏΠ»Π°ΡΠ° (ΠΌΠΈΠ½/ΠΌΠ°ΠΊΡ)
- Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠΏΡΡ
- Π’ΠΈΠΏ Π·Π°Π½ΡΡΠΎΡΡΠΈ (ArrayField)
- ΠΡΠ°ΡΠΈΠΊ ΡΠ°Π±ΠΎΡΡ
- ΠΠΎΠΊΠ°ΡΠΈΡ (ΡΡΡΠ°Π½Π°, ΡΠ΅Π³ΠΈΠΎΠ½, Π³ΠΎΡΠΎΠ΄)Resume (resume):
- UUID primary key
- ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠΌΠ΅
- ΠΠ°ΡΠΏΠ»Π°ΡΠ°
- ΠΠ°Π²ΡΠΊΠΈ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° (ArrayField)
- ΠΠΏΡΡ ΡΠ°Π±ΠΎΡΡ
- Π ΡΠ΅Π±Π΅
- ΠΠΎΠ½ΡΠ°ΠΊΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅- ΠΠ²ΡΡΡΠΎΡΠΎΠ½Π½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ - ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»ΠΈ ΠΈ ΡΠΎΠΈΡΠΊΠ°ΡΠ΅Π»ΠΈ
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π°ΠΊΠ°Π½ΡΠΈΡΠΌΠΈ
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠΌΠ΅
- Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΎΡΠΊΠ»ΠΈΠΊΠΎΠ² Π½Π° Π²Π°ΠΊΠ°Π½ΡΠΈΠΈ
- Real-time ΡΠ°Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ
- Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Π΄Π»Ρ Π²ΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ
- ΠΠ·Π±ΡΠ°Π½Π½ΠΎΠ΅ - ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π²Π°ΠΊΠ°Π½ΡΠΈΠΉ/ΡΠ΅Π·ΡΠΌΠ΅
- ΠΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ (ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»Ρ β ΡΠΎΠΈΡΠΊΠ°ΡΠ΅Π»Ρ)
- ΠΠ°Π»ΠΈΠ΄Π°ΡΠΈΡ ΠΠΠ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»Π΅ΠΉ
- ΠΠΎΠΈΡΠΊ ΠΈ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Π²Π°ΠΊΠ°Π½ΡΠΈΠΉ/ΡΠ΅Π·ΡΠΌΠ΅
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ Ρ ΠΎΡΠΎΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΠΎΡΠ½ΠΎΠ²Ρ Π΄Π»Ρ ΡΠ°Π·Π²ΠΈΡΠΈΡ:
- ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° (ΡΠΆΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ)
- WebSocket ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄Π»Ρ real-time ΡΡΠ½ΠΊΡΠΈΠΉ
- REST API Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
YoungWork - ΡΡΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΡΠ΅ΠΊΠΎΠΌ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π°.
