Фуллстек-приложение для аукциона антиквариата и памятных вещей. Разработано в рамках курсовой работы по дисциплине "Разработка клиент-серверных приложений".
- Аутентификация/авторизация через Google OAuth
- Создание/удаление лотов
- Создание/удаление ставок для активных лотов
- Личный кабинет со статистикой проданных лотов
- Загрузка фотографий для лота
- Отзывчивый дизайн
- Наличие системы уведомлений
- Node.js (v14 или выше)
- PostgreSQL (v12 или выше)
- Аккаунт Google Cloud Platform (для OAuth)
-
Перейдите в директорию backend:
cd backend -
Установите зависимости:
npm install
-
Создайте
.envсо следующими переменными окружения:DATABASE_URL="postgresql://postgres:postgres@localhost:5432/auction?schema=public" JWT_SECRET="your-secret-key-here" PORT=3000 FRONTEND_URL="http://localhost:3002" GOOGLE_CLIENT_ID="your-google-client-id" GOOGLE_CLIENT_SECRET="your-google-client-secret" -
Инициируйте базу данных:
npm run prisma:generate npm run prisma:migrate npm run prisma:seed
-
Запустите сервер:
npm run dev
-
Перейдите в директорию frontend:
cd frontend -
Установите зависимости:
npm install
-
Создайте
.envсо следующими переменными окружения:REACT_APP_API_URL="http://localhost:3000/api" REACT_APP_GOOGLE_CLIENT_ID="your-google-client-id" REACT_APP_WS_URL="ws://localhost:3000/api" PORT=3001 -
Запустите клиент:
npm start
- Перейдите в Google Cloud Console
- Создайте новый проект
- Перейдите в "APIs & Services" > "Credentials"
- Создайте новый OAuth 2.0 Client ID
- Добавьте authorized JavaScript origins:
http://localhost:3001
- Добавьте authorized redirect URIs:
http://localhost:3001http://localhost:3001:login
- Скопируйте Client ID и Client Secret и добавьте в
.env
Главные модели приложения:
- User: пользователь
- Lot: лот
- Bid: ставка
- Notification: уведомление
POST /api/auth/google: через Google OAuthGET /api/auth/me: текущий пользователь
GET /api/lots: все активные лотыGET /api/lots/my-lots: лоты пользователяGET /api/lots/:id: конкретный лотPOST /api/lots: создать новый лотDELETE /api/lots/:id: удалить конкретный лот
GET /api/bids/lot/:lotId: ставки на конкретный лотGET /api/bids/user: ставки пользователяPOST /api/bids: сделать ставкуDELETE /api/bids/:id: удалить конкретную ставку
GET /api/notifications/: все уведомления пользователяPATCH /api/notifications/:id/read: пометить уведомление прочитаннымPATCH /api/notifications/read-all: пометить все уведомления пользователя прочитаннымиDELETE /api/notifications/: удалить все уведомления пользователяDELETE /api/notifications/:id: удалить конкретное уведомление пользователя