https://github.com/lofienjoyerr/cafeproject
Backend часть веб-приложения для управления заказами в кафе
https://github.com/lofienjoyerr/cafeproject
celery django django-rest-framework elasticsearch jwt-authentication openapi postgresql pytest python redis
Last synced: 11 months ago
JSON representation
Backend часть веб-приложения для управления заказами в кафе
- Host: GitHub
- URL: https://github.com/lofienjoyerr/cafeproject
- Owner: Lofienjoyerr
- License: mit
- Created: 2025-01-19T21:46:05.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-23T13:54:18.000Z (12 months ago)
- Last Synced: 2025-02-23T14:34:13.271Z (12 months ago)
- Topics: celery, django, django-rest-framework, elasticsearch, jwt-authentication, openapi, postgresql, pytest, python, redis
- Language: Python
- Homepage:
- Size: 108 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
- [CafeProject](#cafe-project)
* [Установка](#installation)
* [Краткое описание функционала](#description)
* [Лицензия](#license)
# CafeProject
Backend часть веб-приложения на Django для управления заказами в кафе.\
Код написан на Python фреймворках __[Django](https://docs.djangoproject.com/en/5.1/)__ и __[Django REST Framework](https://www.djangoproject.com/)__.
В качестве основной базы данных использует __[PostgreSQL](https://www.postgresql.org/)__, для кеширования использует __[Redis](https://github.com/redis/redis)__.
Для обработки очередей задач используется __[Celery](https://docs.celeryq.dev/en/stable/getting-started/introduction.html)__, а в качестве брокера сообщений – __[Redis](https://github.com/redis/redis)__.
Полнофункциональная пользовательская система основывается на JWT, реализованных с помощью библиотеки __[djangorestframework_simplejwt](https://django-rest-framework-simplejwt.readthedocs.io/en/latest/)__.
Тестирование проведено с помощью фреймворка __[pytest](https://github.com/pytest-dev/pytest)__.
Имеется возможность полнотекстового поиска заказов с помощью __[Django Elasticsearch DSL](https://django-elasticsearch-dsl.readthedocs.io/en/latest/index.html)__.
В дополнение, у проекта имеется OpenAPI схема, сгенерированная при помощи __[drf-spectacular](https://github.com/tfranzel/drf-spectacular/)__, и __Swagger UI__ для визуализации и тестирования API.
Также реализовано логирование, сохраняющееся в файл `log.log` в корневой директории.
## Установка
Перед установкой убедитесь, что у вас установлен __Python__, менеджер пакетов __pip__ и
средство создания виртуальных окружений __venv__.
Данная инструкция будет использовать именно эти инструменты. Также инструкция направлена на пользователей Linux (Ubuntu).
1. Клонируем репозиторий
```cmd
git clone https://github.com/Lofienjoyerr/CafeProject.git
cd CafeProject/
```
2. Создаём виртуальное окружение и активируем его
```cmd
python3 -m venv .venv
source .venv/bin/activate
```
3. Скачиваем и устанавливаем все зависимости
```cmd
pip install -r requirements.txt
```
5. (Optional) Если вы хотите запустить сервер в режиме debug, то также установите
```cmd
pip install django-debug-toolbar
pip install ipython
pip install django-extensions
```
6. Создаём базу данных (СУБД можете выбирать на ваше предусмотрение. Инструкции для установки выбранной СУБД и создания БД
найдите самостоятельно)
7. Создаём сервер и БД ElasticSearch.
8. Создаём файл окружения `.env` и настраиваем его по примеру файла `.env.template`
9. Применяем миграции
```cmd
python3 manage.py migrate
```
10. (Optional) Если хотите запустить сервер в release режиме, запустите
```cmd
python3 manage.py collectstatic
```
11. Добавьте файл для стандартной аватарки по следующему пути (и соответственно добавьте директории)
`media/users/default_avatar.webp`.
12. В отдельном окне терминала запускаем celery (при необходимости добавьте право на исполнение
`chmod +x ./scripts/celery.sh`)
```cmd
./scripts/celery.sh
```
13. Запускаем сервер (при необходимости добавьте право на исполнение
`chmod +x ./scripts/run.sh`)
```cmd
./scripts/run.sh
```
14. Готово. API будет доступно по адресу `http://127.0.0.1:8000/api/v1/`, документация к нему -
`http://127.0.0.1:8000/api/v1/schema/`, а Swagger UI - `http://127.0.0.1:8000/api/v1/swagger/`.
## Краткое описание функционала
1. Пользовательская система
- Получение списка всех пользователей (с пагинацией).
- Получение информации о конкретном пользователе. Возможность изменения его информации.
- Возможность авторизации через JWT. Получение информации о пользователе через токен.
- Возможность изменять и восстанавливать пароль через электронную почту.
- Регистрация пользователя с подтверждением электронной почты.
- Изменение адреса электронной почты с последующим подтверждением нового.
2. Управление кафе
- Вычисление суммарного дохода с оплаченных заказов за определённый день.
- Добавление заказа с автоматически рассчитанной стоимостью и статусом "в ожидании".
- Удаление заказа по выбранному ID.
- Отображение всех заказов (с пагинацией).
- Возможность фильтрации списка заказов по нескольким параметрам.
- Изменение информации заказа по его ID.
## Лицензия
У этого проекта [MIT лицензия](https://github.com/Lofienjoyerr/CafeProject/blob/main/LICENSE).