No description
  • HTML 39.3%
  • Python 35.7%
  • CSS 25%
Find a file
2026-04-05 19:59:42 +03:00
.qwen design update 2026-04-03 23:22:32 +03:00
marketplace Initial commit: Uvimarket marketplace 2026-04-03 19:28:34 +03:00
static/css added more bugs 2026-04-05 19:59:42 +03:00
templates/marketplace added more bugs 2026-04-05 19:59:42 +03:00
uvimarket added more bugs 2026-04-05 19:06:10 +03:00
.env.example added more bugs 2026-04-05 19:06:10 +03:00
.gitignore design update3 2026-04-05 18:40:21 +03:00
manage.py Initial commit: Uvimarket marketplace 2026-04-03 19:28:34 +03:00
README.md added more bugs 2026-04-05 19:06:10 +03:00
run.py design update2 2026-04-04 17:04:41 +03:00
setup_admin.py Initial commit: Uvimarket marketplace 2026-04-03 19:28:34 +03:00

Uvimarket

Современная площадка для покупок и продаж, аналог Avito.

🚀 Возможности

  • Авторизация и регистрация — создание аккаунтов, вход/выход
  • Объявления — создание, редактирование, удаление объявлений с фотографиями
  • Поиск — поиск по названию и описанию объявлений
  • Категории — 12 категорий товаров и услуг
  • Сообщения — внутренняя переписка между пользователями с возможностью отправки изображений
  • Контакты — телефон, email, Telegram продавца
  • Темная/светлая тема — переключение с сохранением в localStorage
  • Модерация — система банов, предупреждений, управления объявлениями

🛠️ Технологии

  • Backend: Python 3.11, Django 5.2
  • Database: SQLite
  • Frontend: HTML5, CSS3, JavaScript (vanilla)
  • Изображения: Pillow

📋 Требования

  • Python 3.11+
  • pip

⚙️ Установка

  1. Клонируйте репозиторий:
git clone <repository-url>
cd avito2
  1. Создайте виртуальное окружение:
python -m venv venv

Windows:

venv\Scripts\activate  # Windows

Linux/Mac:

source venv/bin/activate  # Linux/Mac
  1. Установите зависимости:
pip install django pillow
  1. Настройте переменные окружения:

Скопируйте шаблон и настройте:

cp .env.example .env

Отредактируйте .env:

# Admin Credentials
ADMIN_USERNAME=admin
ADMIN_PASSWORD=ваш_пароль
ADMIN_EMAIL=admin@uvimarket.ru

# Server Port (default: 8000)
SERVER_PORT=8000

# Database Path (relative to project root or absolute path)
DATABASE_PATH=db.sqlite3

# Media Files Path (relative to project root or absolute path)
MEDIA_PATH=media

# Static Files Path (relative to project root or absolute path)
STATIC_ROOT_PATH=staticfiles

⚠️ Важно: Файл .env добавлен в .gitignore и не должен попадать в репозиторий! Используйте .env.example как шаблон для других разработчиков.

📁 Настройка путей

В .env можно указать кастомные пути:

Относительные пути (относительно корня проекта):

DATABASE_PATH=data/mydb.sqlite3
MEDIA_PATH=storage/media
STATIC_ROOT_PATH=storage/staticfiles

Абсолютные пути:

DATABASE_PATH=/var/lib/uvimarket/db.sqlite3
MEDIA_PATH=/var/lib/uvimarket/media
STATIC_ROOT_PATH=/var/lib/uvimarket/staticfiles

💡 По умолчанию все файлы хранятся в корне проекта.

🌐 Настройка порта

В .env можно указать порт для сервера:

SERVER_PORT=3000

🔒 CSRF Trusted Origins

Для продакшена важно настроить доверенные источники CSRF:

CSRF_TRUSTED_ORIGINS=https://*.xn--p1ai,http://*.xn--p1ai,https://*,http://*

Это решит ошибку 403 (CSRF verification failed) при доступе через HTTPS.

Запуск сервера:

# С портом из .env:
python run.py

# Свой порт (переопределяет .env):
python manage.py runserver 0.0.0.0:5000

💡 По умолчанию сервер запускается на порту 8000.

  1. Примените миграции:
python manage.py makemigrations
python manage.py migrate
  1. Создайте администратора и тестовые данные:
python setup_admin.py
  1. Запустите сервер:
# С портом из .env файла:
python run.py

# Или стандартным способом:
python manage.py runserver
python manage.py runserver 0.0.0.0:3000  # свой порт
  1. Откройте браузер:

📁 Структура проекта

avito2/
├── marketplace/          # Основное приложение
│   ├── models.py         # Модели данных
│   ├── views.py          # Представления
│   ├── forms.py          # Формы
│   ├── urls.py           # Маршруты
│   ├── admin.py          # Админ-панель
│   ├── middleware.py     # Middleware (бан пользователей)
│   ├── context_processors.py  # Контекстные процессоры
│   └── migrations/       # Миграции БД
├── templates/            # HTML шаблоны
│   └── marketplace/
├── static/               # Статические файлы
│   └── css/
│       └── style.css     # Стили (темная/светлая тема)
├── media/                # Загруженные файлы
│   ├── ads/              # Фото объявлений
│   ├── messages/         # Фото в сообщениях
│   └── avatars/          # Аватары пользователей
├── uvimarket/            # Настройки проекта
│   ├── settings.py
│   └── urls.py
├── .env                  # Переменные окружения (не в git!)
├── .gitignore
├── setup_admin.py        # Скрипт настройки админа
└── manage.py

🎨 Дизайн

  • Цветовая схема: черно-красно-белая
  • Основные цвета:
    • #1e1e27 — темный фон
    • #df0139 — акцентный красный
    • #e2e2e2 — светлый фон/текст
    • #28242a — поверхности

🛡️ Модерация

Администратор может через админ-панель:

Действие Описание
🔒 Бан навсегда Полная блокировка аккаунта
🔒 Бан на 1/7/30 дней Временная блокировка
🔓 Разблокировка Снятие блокировки
⚠️ Предупреждение Добавление предупреждения
📝 Редактирование Изменение любого объявления
🗑️ Удаление Удаление объявлений/сообщений

Заблокированные пользователи автоматически разлогиниваются.

📱 Функционал

Для пользователей:

  • Регистрация и авторизация
  • Подача объявлений с фотографиями
  • Поиск по названию и описанию
  • Фильтрация по категориям
  • Внутренняя переписка с отправкой фото
  • Профиль с аватаром
  • Переключение темной/светлой темы

Для администратора:

  • Полное управление объявлениями
  • Управление пользователями (баны, предупреждения)
  • Модерация сообщений
  • Управление категориями

🔐 Безопасность

  • Пароли хешируются Django
  • CSRF-защита на всех формах
  • Credentials хранятся в .env (не в репозитории)
  • Middleware для автоматической блокировки

📝 Лицензия

MIT


Uvimarket © 2026