Веб-сайт "Биржа Услуг" позволяет размещать зарегистрированным пользователям информацию о предоставляемых ими услугах и выступать в качестве исполнителей, или заказывать услуги у других пользователей. Заказчики могут размещать сведения о своих проектах, а исполнители – предлагать свои услуги для их реализации.
Сайт запущен для демонстрации на 🔗 http://exchange.amgold.ru/.
- Регистрация, аутентификация пользователей.
- Пользователи могут указывать о себе дополнительные сведения – имя, изображение профиля, специальность, навыки, подробности об опыте, и др.
- В публичном профиле пользователя видна вся информация о нём, а также список его услуг и проектов.
- Сам пользователь также видит в своём профиле баланс и последние просмотренные услуги и проекты других пользователей.
- Создание, редактирование, удаление услуг пользователей.
- Просмотр списка услуг, с разбивкой по категориям, поиск по услугам.
- Создание, редактирование, удаление проектов пользователей.
- Просмотр списка услуг, с разбивкой по категориям, поиск по проектам.
- Страницы со списком услуг, проектов, заказов пользователя.
- Пользователи могут предлагать свои услуги по выполнению проекта, а заказчик может отклонить или принять предложения.
- Желающие могут создать заказ на представленную в каталоге услугу. Исполнитель может отклонить заказ, или взяться за его выполнение. С баланса заказчика снимается стоимость работы, которая при подтверждении выполнения заказчиком начисляется исполнителю. Все действия по заказу (создание, изменение статуса, отмена) регистрируются, и видны на странице заказа.
- Пользователи могут отправлять друг другу сообщения на странице каждого заказа, при желании – прикреплять к сообщениям файлы.
- Пополнение баланса пользователя при помощи Celery Task.
- Аккуратная верстка с Tailwind CSS позволяет легко преобразить оформление страниц. Отмечу, что адаптация под мобильные экраны не делалась, но её легко добавить.
- Конечно же, прекрасная админ-панель Django на месте!
- Подключен Sentry.
- Настроен CI/CD на GitHub.
- Django
- django-allauth: Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication.
- django-debug-toolbar: Best debugging tool for Django.
- Очередь задач
- Тесты
- Оформление:
- Прочее:
- environs:
environs
is a Python library for parsing environment variables.
- environs:
- Для работы в проде:
- gunicorn: WSGI HTTP Server for UNIX, fast clients and sleepy applications.
- whitenoise: Radically simplified static file serving for Python web apps.
- nginx: nginx (engine x) is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev.
В каждом Django app, кроме стандартных, есть два модуля:
selectors.py
– содержит функции для выборки данных из БД;services.py
– функции для создания, изменения данных и вся связанная с этим логика работы приложения.
Все функции в этих модулях именованы как <модель>_<действие>()
для единообразия и удобства поиска.
О самих apps, что где:
core
– вид корневой страницы сайта, фабрики для тестов, общие для всего проекта.users
– кастомная модель пользователя; модельAction
, предназначенная для регистрации действий пользователя. Виды публичного профиля пользователя, изменения профиля, пополнения баланса.exchange
– модели категорий, чата, сообщений и всё связанное с ними.services
– модель услуги, и всё связанное с услугами.projects
– модель проекта и предложения на выполнение проекта и всё связанное с ними.orders
– модель заказа и всё вокруг неё.
Создать файл src/.env
со следущими параметрами:
SECRET_KEY="long-random-string"
# Опционально для запуска на сервере – Sentry DSN:
SENTRY_DSN="sentry-dsn-..."
make dev_up
# или
docker compose -f docker-compose.dev.yml up
# Применить миграции
docker exec -it web python -m manage migrate
# Создать суперпользователя
docker exec -it web python -m manage createsuperuser
# Загрузить фикстуры категорий
docker exec -it web python -m manage loaddata exchange/fixtures/categories.json
# Остановить
docker compose -f docker-compose.dev.yml down
Приложение будет доступно по адресу http://127.0.0.1:8000/.
docker compose up -d --build
# Применить миграции
docker exec -it web python -m manage migrate
# Создать суперпользователя
docker exec -it web python -m manage createsuperuser
# Загрузить фикстуры категорий
docker exec -it web python -m manage loaddata exchange/fixtures/categories.json
# Создать статические файлы
docker exec web python manage.py collectstatic --noinput
# Остановить
docker compose down