Веб-портал для професійного нетворкінгу, пошуку роботи та взаємодії між фахівцями та роботодавцями.
- ПІБ: Жук Олександр Сергійович
- Група: ФеП-41
- Керівник: проф. О.М. Крупич
- Дата виконання: 02.06.2025
- Тип проєкту: Веб-портал (Single Page Application + REST API)
- Backend:
- Мова: C#
- Платформа / Фреймворки: .NET Core, ASP.NET Core, Entity Framework Core
- Frontend:
- Мова: TypeScript
- Фреймворк / Бібліотеки: Angular, NgRx, Tailwind CSS
- База даних: PostgreSQL
- 🔐 Автентифікація: Надійна система реєстрації та входу користувачів з використанням JWT.
- 🧑💼 Профілі фахівців: Створення, редагування та перегляд розширених профілів користувачів з інформацією про навички та досвід.
- 📁 Інтеграція з Google Drive: Завантаження та зберігання файлів (резюме, портфоліо) у хмарному сховищі.
- 📄 Вакансії: Базовий функціонал для перегляду списку вакансій.
- 💬 Обмін повідомленнями: Основа для майбутньої системи комунікації між користувачами.
- 🌐 REST API: Чітко структурований API для взаємодії між frontend та backend.
Клас / Файл | Призначення |
---|---|
Backend (.NET) | |
worknet-backend/Worknet.API/Program.cs |
Точка входу, конфігурація сервісів та middleware. |
worknet-backend/Worknet.API/Controllers/AuthController.cs |
Контролер для обробки запитів реєстрації та входу. |
worknet-backend/Worknet.API/Controllers/ProfileController.cs |
REST API маршрути для операцій з профілями користувачів. |
worknet-backend/Worknet.Database/WorknetDbContext.cs |
Контекст бази даних Entity Framework Core для роботи з PostgreSQL. |
worknet-backend/Worknet.Core/Entities/Profile.cs |
Сутність, що описує модель профілю користувача. |
worknet-backend/Worknet.API/Util/JwtUtil.cs |
Сервіс для генерації та валідації JWT. |
Frontend (Angular) | |
worknet-frontend/src/main.ts |
Точка входу frontend-застосунку. |
worknet-frontend/src/app/core/services/auth.service.ts |
Сервіс для взаємодії з API автентифікації. |
worknet-frontend/src/app/features/pages/profile/profile.component.ts |
Компонент для відображення та редагування профілю. |
worknet-frontend/src/app/store/app.state.ts |
Визначення глобального стану (NgRx) для управління даними. |
worknet-frontend/src/app/core/interceptors/auth.interceptor.ts |
Перехоплювач HTTP-запитів для додавання JWT. |
- .NET 8 SDK або новіше
- Node.js v20.x або новіше + npm
- PostgreSQL (локально або через Docker)
- Angular CLI:
npm install -g @angular/cli
git clone [https://github.com/SashaBeetle/WorkNet.git](https://github.com/SashaBeetle/WorkNet.git)
cd WorkNet
# Backend
cd worknet-backend
dotnet restore
# Frontend
cd ../worknet-frontend
npm install
Відредагуйте файл worknet-backend/Worknet.API/appsettings.Development.json
, вказавши правильні налаштування:
{
"ConnectionStrings": {
"WorknetDatabase": "Host=localhost;Port=5432;Database=worknetdb;Username=postgres;Password=your_password"
},
"Jwt": {
"Key": "your_super_secret_key_that_is_long_enough",
"Issuer": "WorkNetAPI",
"Audience": "WorkNetClient"
},
"GoogleDrive": {
"FolderId": "your_google_drive_folder_id",
"JsonName": "your_google_credentials_filename.json"
}
}
cd worknet-backend
dotnet ef database update --startup-project ./Worknet.API/Worknet.API.csproj --project ./Worknet.Database/Worknet.Database.csproj
# Запустити Backend (з папки worknet-backend/Worknet.API)
dotnet run
# Запустити Frontend (з папки worknet-frontend, в новому терміналі)
ng serve
Застосунок буде доступний за адресою http://localhost:4200
.
POST /api/auth/register
{
"email": "[email protected]",
"password": "StrongPassword123!",
"userName": "IvanPetrenko"
}
POST /api/auth/login
{
"email": "[email protected]",
"password": "StrongPassword123!"
}
Response:
{
"token": "jwt_token_here"
}
GET /api/profile/{userId}
Отримати профіль користувача. (Потребує JWT в заголовку Authorization: Bearer <token>
)
PUT /api/profile/{userId}
Оновити профіль. (Потребує JWT в заголовку)
{
"headline": "Junior .NET Developer",
"about": "Початківець у розробці з великим бажанням вчитись.",
"skills": ["C#", ".NET", "ASP.NET Core"]
}
- Головна сторінка: Надає можливість
Увійти
для існуючих користувачів абоЗареєструватись
для нових. - Реєстрація: Користувач вводить свої дані для створення облікового запису.
- Вхід: Після успішної автентифікації користувач перенаправляється на головну сторінку порталу.
- Мій профіль:
- Користувач може переглядати свій профіль.
- Кнопка
Редагувати профіль
дозволяє змінити особисті дані, навички та досвід. - У формі редагування є можливість завантажити резюме через інтеграцію з Google Drive.
- Вакансії: Сторінка для перегляду списку доступних вакансій.
- Вихід: Кнопка
Вийти
у профілі завершує сесію користувача та повертає на головну сторінку.
Сторінка входу | Сторінка чату | Сторінка вакансій |
---|---|---|
Проблема | Рішення |
---|---|
Помилка CORS при запитах з frontend | Перевірити конфігурацію CORS middleware в Startup.cs на backend. Правило має дозволяти запити з http://localhost:4200 . |
401 Unauthorized | Перевірити, чи правильно надсилається JWT у заголовку Authorization . Перевірити термін дії токена та секретний ключ на сервері. |
Не вдається підключитися до БД | Перевірити рядок підключення ConnectionString в appsettings.json . Переконатись, що сервер PostgreSQL запущено і доступний. |
Помилка при завантаженні файлів | Перевірити ClientId та ClientSecret для Google Drive API. Перевірити, чи надано відповідні дозволи в Google Cloud Console. |
- Офіційна документація .NET та ASP.NET Core
- Офіційна документація Angular
- PostgreSQL Documentation
- Entity Framework Core Docs
- JSON Web Tokens (JWT.io)
- Google Drive API Documentation
- Матеріали з форумів StackOverflow та спільнот розробників.