Веб‑платформа для обмена навыками: пользователи указывают, чему они могут научить и чему хотят научиться, и находят партнёров для взаимного обучения.
- 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
- Установите .NET SDK 8+
- Установите Node.js 18+
- Установите PostgreSQL и создайте базу данных, например
skillobmen - При необходимости измените строку подключения в
backend/SkillObmen.Api/appsettings.json:
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Port=5432;Database=skillobmen;Username=postgres;Password=postgres"
}Перейдите в каталог backend:
cd backend/SkillObmen.ApiУстановите глобальный инструмент EF (один раз):
dotnet tool install --global dotnet-efСоздайте первую миграцию:
dotnet ef migrations add InitialCreateПримените миграции к базе данных:
dotnet ef database updateИз корня проекта:
cd backend/SkillObmen.Api
dotnet runПо умолчанию API будет доступен на http://localhost:5000 или http://localhost:5100 (посмотрите вывод dotnet run).
Обновите NEXT_PUBLIC_API_BASE на фронтенде при необходимости.
Из корня проекта:
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-compose.yml и Dockerfile для backend и frontend.
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.
docker-compose downДанные PostgreSQL и загруженные аватары сохраняются в томах db_data и uploads_data.