GithubHelp home page GithubHelp logo

v-holodov / pets_accounting Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 111 KB

REST API для ведения учета питомцев (собак и кошек) - Тестовое задание для doubletapp

License: MIT License

Python 95.19% Dockerfile 3.29% Shell 1.52%
django-rest-framework django docker postgresql nginx

pets_accounting's Introduction

Учет питомцев "Pets-Accounting"

example workflow Code style: black

Описание

Pets-Accounting - REST API для ведения учета питомцев (собак и кошек). Позволяет добовлять питомцев и фотографии к ним, получать список питомцев и удалять питомцев по списку. Реализована возможность выгрузить список питомцев в json через командную строку

Технологии

В проекте используются следующие основные пакеты:

  • python 3.9
  • django 4.0
  • djangorestframework 3.12.4
  • flake8-isort 4.1.1
  • black 21.12b0
  • Pillow 8.4.0
  • pytz 2021.3
  • python-environ 0.4.54
  • pytest 6.2.5
  • pytest-django 4.5.2
  • psycopg2-binary 2.9.2
  • gunicorn 20.1.0
  • docker 20.10.11

Пример развернутого проекта

Проект развернут в трех контейнерах

  • back - бэкенд-часть,
  • nginx_back - HTTP-сервер для обработки запросов к бэкенду, отдачи статики django и администрирования django,
  • db - база данных postgres.

Проект запущен и доступен по адресу: http://51.250.29.41/

Развертывание проекта

Обновите систему: sudo apt update && sudo apt upgrade -y

Установите git и docker: sudo apt install git docker.io docker-compose -y

Склонируйте репозиторий: git clone https://github.com/V-Holodov/pets_accounting.git

Создайте в директории проекта файл .env с переменными окружения для работы с базой данных используя для примера файла .env-example

Команда для развертывания: sudo docker-compose up из директории проекта

Аутентификация

Аутентификация реализована на основе API Key Authentication.

Все запросы должны содержать header X-API-KEY, значение которого должно соответствовать ключу API_KEY в настройках проекта.

CLI

Реализована возможность выгрузки питомцев из командной строки в stdout в JSON формате.

Команда sudo docker exec pets_accounting_back_1 python manage.py pets_list

Команда может принимать на вход необязательный параметр "--has-photos" для выгрузки питомцев только с фото

Testing

Тестирование в проекте реализована с использованием pytest.

Выполнение git push в любую из веток запускает проверку кода на соответствие PEP8 и инициирует тесты с помощью функционала Git Actions.

Коротко о структуре проекта

  1. config - корневая директория, здесь settings.py джанги
  2. api - основное приложение проекта
  3. logs - логи проекта вынесенные из контейнера
  4. .github/workflows - настройка workflows для gihub actions
  5. файлы статики и медиафайлы собраны в одноименных директориях.
  6. в директории nginx - настройки сервера.
  7. Dockerfile, docker-compose.yaml - развертывания проекта в докер-контенейрах.

Об авторе

Проект подготовлен Виталием Холодовым .

pets_accounting's People

Contributors

v-holodov avatar

Watchers

 avatar

pets_accounting's Issues

Code review

Фидбек по тестовому заданию.

LGTM.

Сразу скажу, что код я не запускал, но выглядит все очень хорошо. Не нашел ничего критичного.
Добавил комментарии к местам, где можно сделать что-то интереснее, но в целом - очень хорошая работа!

Что было хорошо:

  • Бейджи! Все любят бейджи :)
  • Очень крутое readme: есть инфа про "что это", "для чего это", "как это поднять". Можно добавлять раздел "Что можно улучшить". Это покажет, что ты думаешь о будущем проекта, куда его можно развивать, уже сейчас видишь проблемы или компромиссы, которые могут выстрелить в дальнейшем в ногу и т.д. Обычно в процессе это приходит в голову :)
  • GH CI это бомба! Тут можно было бы добавить еще крутости: flake8 умеет отчеты выгружать в html и если прикрутить upload-artifact@v2, то в Actions после каждого пуша у тебя будет появляться архив со всеми ошибками :)

Что можно было бы улучшить:

  • Проект уже Not Found в сети, если ты разворачиваешь на времянке, то нужно поддерживать актуальность :(
  • .DS_Store из корня репы убирай
  • Пустой файл tests.py в папке с апишкой
  • В идеале хранить в репе минимальное количество миграций, которые отражают бизнес-требования, т.к. мы говорим про первичный MVP на первичные требования можно их сосквошить(squashmigrations)
  • verbose_name как и остальные переменные лучше определять на английском, а если надо иметь дело с переводами - используй gettext_lazy
  • В ридми очепятка - добовлять

Критичные замечания:

  • Не обнаружил

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.