Skip to content

javas13/SkillObmen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

SkillObmen

Веб‑платформа для обмена навыками: пользователи указывают, чему они могут научить и чему хотят научиться, и находят партнёров для взаимного обучения.

Стек

  • Backend: ASP.NET Core Web API (.NET 8), Entity Framework Core, PostgreSQL, JWT
  • Frontend: Next.js 14 (App Router), React, Tailwind CSS, react-hot-toast

Подготовка окружения

  1. Установите .NET SDK 8+
  2. Установите Node.js 18+
  3. Установите PostgreSQL и создайте базу данных, например skillobmen
  4. При необходимости измените строку подключения в backend/SkillObmen.Api/appsettings.json:
"ConnectionStrings": {
  "DefaultConnection": "Host=localhost;Port=5432;Database=skillobmen;Username=postgres;Password=postgres"
}

Миграции БД (EF Core)

Перейдите в каталог backend:

cd backend/SkillObmen.Api

Установите глобальный инструмент EF (один раз):

dotnet tool install --global dotnet-ef

Создайте первую миграцию:

dotnet ef migrations add InitialCreate

Примените миграции к базе данных:

dotnet ef database update

Запуск backend

Из корня проекта:

cd backend/SkillObmen.Api
dotnet run

По умолчанию API будет доступен на http://localhost:5000 или http://localhost:5100 (посмотрите вывод dotnet run).
Обновите NEXT_PUBLIC_API_BASE на фронтенде при необходимости.

Запуск frontend

Из корня проекта:

cd frontend
npm install

Создайте файл .env.local в папке frontend:

NEXT_PUBLIC_API_BASE=http://localhost:5000

Запустите dev‑сервер:

npm run dev

Фронтенд будет доступен на http://localhost:3000.

Основные маршруты фронтенда

  • / — лендинг
  • /login — вход
  • /register — регистрация
  • /profile — личный кабинет
  • /profile/[id] — публичный профиль пользователя
  • /search — поиск по навыкам
  • /exchange/create?withUserId={id} — создание заявки
  • /exchanges — входящие/исходящие заявки

Загрузка аватаров

  • Backend принимает загрузку аватара по маршруту POST /api/users/avatar (multipart/form-data, поле file), сохраняет файлы в wwwroot/uploads и обновляет AvatarUrl пользователя.
  • Frontend на странице /profile позволяет:
    • указать прямую ссылку на картинку,
    • либо загрузить файл; после успешной загрузки аватар отображается из /uploads/... с backend.

Запуск через Docker

В корне проекта уже есть docker-compose.yml и Dockerfile для backend и frontend.

1. Собрать и запустить все сервисы

docker-compose up --build

Это поднимет:

  • db — PostgreSQL 16 (порт 5432 снаружи),
  • api — ASP.NET Core Web API на http://localhost:5000,
  • web — Next.js frontend на http://localhost:3000.

Строка подключения и JWT‑настройки для backend прокидываются через переменные окружения в docker-compose.yml, а фронт использует NEXT_PUBLIC_API_BASE=http://api:5000.

2. Остановка контейнеров

docker-compose down

Данные PostgreSQL и загруженные аватары сохраняются в томах db_data и uploads_data.

About

Skill sharing site

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published