|
|
# Курсовая работа: Интернет-магазин для игры
|
|
|
|
|
|
**Автор:** Пилипенко Степан Андреевич
|
|
|
**Год выполнения:** 2025
|
|
|
**Направление:** Разработка веб-приложения
|
|
|
|
|
|
---
|
|
|
|
|
|
## 📌 Описание проекта
|
|
|
|
|
|
В рамках курсовой работы разработан **интернет-магазин внутриигровых товаров** — полнофункциональное веб-приложение, позволяющее пользователям:
|
|
|
|
|
|
- Просматривать каталог игровых предметов,
|
|
|
- Добавлять товары в корзину и оформлять покупки,
|
|
|
- Просматривать историю своих заказов,
|
|
|
- Регистрироваться, авторизовываться и управлять профилем.
|
|
|
|
|
|
Проект реализован с использованием современных технологий фронтенда и бэкенда и соответствует принципам разделения ответственности, безопасности и удобства использования.
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🖥️ Фронтенд
|
|
|
|
|
|
- **Язык:** TypeScript
|
|
|
- **Сборка:** Vite
|
|
|
- **Фреймворк:** React
|
|
|
- **Управление состоянием:** Redux Toolkit
|
|
|
- **Формы:** React Hook Form
|
|
|
- **UI компонент:** Material UI
|
|
|
- **Маршрутизация:** React Router
|
|
|
|
|
|
### Основные функции фронтенда:
|
|
|
- Динамическая загрузка списка товаров,
|
|
|
- Валидация форм регистрации и входа,
|
|
|
- Отображение корзины и управление её содержимым,
|
|
|
- Защита маршрутов (только для авторизованных пользователей),
|
|
|
- Отображение личного кабинета и истории покупок.
|
|
|
|
|
|
---
|
|
|
|
|
|
## ⚙️ Бэкенд
|
|
|
|
|
|
- **Язык:** Python
|
|
|
- **Фреймворк:** Django
|
|
|
- **База данных:** PostgreSQL
|
|
|
- **Аутентификация:** Токены
|
|
|
- **API:** RESTful (через Django REST Framework или нативные view)
|
|
|
|
|
|
### Реализованные модели:
|
|
|
- `User` — пользователь,
|
|
|
- `Shop` — игровой товар (название, описание, цена, изображение),
|
|
|
- `Order` — заказ (связь с пользователем, дата, статус),
|
|
|
- `OrderItem` — позиция в заказе (товар + количество).
|
|
|
|
|
|
### Основные эндпоинты:
|
|
|
- `/api/auth/register/` — регистрация,
|
|
|
- `/api/auth/login/` — вход,
|
|
|
- `/api/products/` — список товаров,
|
|
|
- `/api/cart/` — управление корзиной,
|
|
|
- `/api/orders/` — история покупок.
|
|
|
|
|
|
---
|
|
|
|
|
|
## 🔐 Безопасность
|
|
|
|
|
|
- Пароли хранятся в хэшированном виде (bcrypt через Django),
|
|
|
- Сессии управляются безопасно,
|
|
|
- Защита от CSRF и XSS (встроенные механизмы Django и React).
|
|
|
|
|
|
---
|
|
|
|
|
|
## 📁 Структура проекта
|
|
|
|
|
|
```
|
|
|
game-shop/
|
|
|
├── backend/ # Django-приложение
|
|
|
│ ├── ... # основное приложение
|
|
|
│ ├── manage.py
|
|
|
│ └── requirements.txt
|
|
|
├── frontend/ # React + Vite
|
|
|
│ ├── src/
|
|
|
│ │ ├── components/
|
|
|
│ │ ├── pages/
|
|
|
│ │ ├── storage/ # Redux slices
|
|
|
│ │ └── App.tsx
|
|
|
│ └── vite.config.ts
|
|
|
└── README.md
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## ▶️ Запуск проекта
|
|
|
|
|
|
1. **Бэкенд**:
|
|
|
```bash
|
|
|
cd backend
|
|
|
python -m venv venv
|
|
|
source venv/bin/activate # Linux/Mac
|
|
|
venv\Scripts\activate # Windows
|
|
|
pip install -r requirements.txt
|
|
|
python manage.py migrate
|
|
|
python manage.py runserver
|
|
|
```
|
|
|
|
|
|
2. **Фронтенд**:
|
|
|
```bash
|
|
|
cd frontend
|
|
|
npm install
|
|
|
npm run dev
|
|
|
```
|
|
|
|
|
|
Приложение будет доступно по адресу: `https://shop.softwarrior.ru`
|
|
|
|
|
|
---
|
|
|
|
|
|
## 💡 Заключение
|
|
|
|
|
|
Данная курсовая работа демонстрирует навыки:
|
|
|
- проектирования full-stack веб-приложений,
|
|
|
- работы с базами данных,
|
|
|
- реализации аутентификации и управления состоянием,
|
|
|
- интеграции фронтенда и бэкенда через API.
|
|
|
|
|
|
Проект может быть расширен за счёт добавления:
|
|
|
- платёжных систем (Stripe, PayPal),
|
|
|
- поиска и фильтрации товаров,
|
|
|
- админ-панели,
|
|
|
- уведомлений и email-рассылок.
|
|
|
|
|
|
---
|
|
|
|
|
|
## Сборка docker образа для публикации
|
|
|
|
|
|
docker rmi -f <image_id>
|
|
|
|
|
|
docker compose down && docker compose build --no-cache && docker compose up
|
|
|
|
|
|
---
|
|
|
|
|
|
> **Примечание:** Исходный код доступен по запросу. |