Thanks to visit codestin.com
Credit goes to github.com

Skip to content

QuickList is a Django web app for posting and browsing classified ads with real-time chat. Users can create listings, search and filter ads, and communicate instantly via WebSocket-powered messaging. Includes authentication, user dashboards, image uploads, and an admin panel with stats.

Notifications You must be signed in to change notification settings

rostya-codes/adbox

Repository files navigation

💡 Ідея: Сайт оголошень із чатом у реальному часі ✨ Основна концепція:

Користувачі можуть публікувати оголошення (наприклад, "Продам велосипед", "Зніму кімнату"), і інші користувачі можуть писати їм повідомлення напряму через чат (реалізувати через Django Channels).

Що Технологія
Реальний час / WebSocket Django Channels
API-шари Django REST Framework
Пошук, фільтри django-filter
Кешування списків Django cache
Сигнали post_save, post_delete для нотифікацій
Фонові задачі Celery + Redis (email-нотифікація про нові повідомлення)
Медіа-файли Фото оголошень (ImageField + media)

📄 Основні сторінки:

Головна — список усіх оголошень + фільтри (категорія, місто, ціна)

Детальна сторінка оголошення — кнопка "Написати продавцю"

Створення оголошення

Мої оголошення — CRUD

Особистий кабінет — зміна профілю

Чат у реальному часі (WebSocket) — сторінка з листуванням

    Бонус: розширення чату
    
    Пізніше ти можеш:
    
        Зберігати повідомлення у базі даних
    
        Показувати список чатів у профілі
    
        Додати повідомлення про онлайн-статус
    
        Під'єднати сповіщення (наприклад, через Celery/email)

Панель адміністратора — статистика по кількості оголошень, повідомлень, користувачів

🧠 Додаткові фічі:

⭐ Система "Улюблені оголошення"

📨 Email-нотифікації про нові повідомлення

🔒 Чат тільки між зареєстрованими

📈 Аналітика: кількість переглядів оголошення (можна кешувати або трекати в Redis)

🛠️ API: щоб на мобілку легко підключити (DRF)

quicklist/ ├── accounts/ ├── ads/ ├── chat/ ├── dashboard/ ├── common/

Основні класи для класових в’юх у Django

  1. View

    Базовий клас, який ти вже знаєш.

    Треба самому писати методи get(), post() тощо.

    Дає максимальну свободу.

from django.views import View class MyView(View): def get(self, request): return ...

  1. TemplateView

    Просто рендерить шаблон.

    Якщо потрібно лише показати HTML без додаткової логіки — клас ідеальний.

    Потрібно тільки вказати template_name.

from django.views.generic import TemplateView

class HomePageView(TemplateView): template_name = 'index.html'

  1. ListView

    Для відображення списку об’єктів з бази.

    Автоматично бере дані з моделі і передає їх у шаблон.

    Потрібно вказати model або queryset.

from django.views.generic import ListView from .models import Ad

class AdsListView(ListView): model = Ad template_name = 'ads_list.html' # За замовчуванням буде 'ad_list.html' context_object_name = 'ads' # Ім’я змінної у шаблоні

  1. DetailView

    Показує деталі одного об’єкта.

    Вимагає model і зазвичай отримує об’єкт за pk або slug.

from django.views.generic import DetailView from .models import Ad

class AdDetailView(DetailView): model = Ad template_name = 'ad_detail.html' context_object_name = 'ad'

  1. CreateView

    Форма для створення нового об’єкта.

    Автоматично рендерить форму і зберігає у базу.

    Вказуєш модель, поля і URL успішного редіректу.

from django.views.generic import CreateView from .models import Ad from django.urls import reverse_lazy

class AdCreateView(CreateView): model = Ad fields = ['title', 'description', 'price'] template_name = 'ad_form.html' success_url = reverse_lazy('ads:list')

  1. UpdateView

    Форма для редагування існуючого об’єкта.

    Працює схоже на CreateView, але для оновлення.

  2. DeleteView

    Відповідає за видалення об’єкта.

    Підтвердження перед видаленням.

    Потрібен success_url.

Так, загалом це основне, що потрібно налаштувати в цих класах:

model — яка модель буде оброблятися.

fields або form_class — які поля форми показувати або власна форма (якщо є).

template_name — шаблон, який вьюха буде рендерити (якщо не хочеш використовувати дефолтні імена).

success_url — куди переадресувати після успішної операції (створення, редагування, видалення).

Крім того, можеш додати:

context_object_name — щоб у шаблоні звертатися до об’єкта через більш зрозуміле ім’я.

Перевизначення методів типу get_queryset(), get_object() чи form_valid() — для кастомної логіки.

About

QuickList is a Django web app for posting and browsing classified ads with real-time chat. Users can create listings, search and filter ads, and communicate instantly via WebSocket-powered messaging. Includes authentication, user dashboards, image uploads, and an admin panel with stats.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published