You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

140 lines
5.1 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Курсовая работа: Интернет-магазин для игры
**Автор:** Пилипенко Степан Андреевич
**Год выполнения:** 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
---
> **Примечание:** Исходный код доступен по запросу.