Coder Social home page Coder Social logo

intercars's Introduction

Backend

Appka rekrutacyjna do Intercars

Architecture

Powiedzieliście, żebym skupił się nie na widokach tylko na backendzie, dlatego postanowiłem napisać tą aplikacje jako "headless" a jako główny framework wybrałem nie czyste django a django-rest-framework. Standardy oparłem na styleguide stworzony przez HackSoftware dostępny tutaj: https://github.com/HackSoftware/Django-Styleguide

Wybrałem ten styleguide z dwóch powodów:

  1. Bardzo go lubię :) Chociaż lekko to zmodyfikałem pod siebie
  2. Wasza appka działa lata i jest pisana na lata - ten styleguide jest bardzo "sztywny" i dobrze opisuje odpowiedzialność poszczególnych elementów, dlatego uważam, że do takich aplikacji nadaje się bardzo dobrze.

Moduł "intercars", potraktowałem jako common, nie wiem czy nie lepiej byłoby wydzielić tego do innej appki ale zostawiam już tak jak jest. Znajdują się tam utilsy i commony pobrane z wyżej wymienionego style guide. Osobiście sama implementacja średnio mi się podoba i jakbym miał więcej czasu to trochę bym te utilsy poprawił.

Docker Images:

Redis = Chciałem wykorzystać do cache ale zabrakło mi czasu
Postgres = Baza danych
Backend = Server Django. Kod znajduje się w katalogu /app/

Run

$ cd docker
$ docker-compose up --build

Serwer automatycznie "wstanie" ale nie ma napisanych fixtur. Należy stworzyć sobie użytkowników przez

./manage createsuperuser

Tests

Skrypt run_test.sh

Skrypt automatycznie odpala testy oraz zwraca coverage do katalogu htmlcov. Jest to wygodne przy CI, bo zwraca output z testów (przez co CI ładnie pokarze błąd) a jednocześnie katalog htmlcov przydaje się gdy jest wrzucone do artefaktów.

Oprócz tego jest skonfigurowany i zainstalowany prospector, którego najprościej uruchomić z głównego katalogu projektu:

python3 -m prospector

Swagger

końcówka: http://0.0.0.0:8000/swagger/
Na szybko jak używać:

Znajdź końcówke / login / i zaloguj się na użytkownika, którego wcześniej stworzysz za pomocą "createsuperuser". W zwrotce dostaniesz token, który należy wpisać w okno które pojawi się po kliknięciu w przycisk Authenticate który jest na górze strony swaggera po prawej stronie. Token trzeba wpisać w formule: Token xxxxxxxxx. Od tej pory header zostanie dodany do każdej ramki podczas używania swaggera. Jest to najwygodniejsza opcja korzystania z tego API.

TODO:

Jest kilka rzeczy które jeszcze chciałem zrobić ale zabrakło mi czasu. Z takich najbardziej oczywistych to:

  1. IbanField - który by automatycznie określał i walidował pole iban
  2. BaseSerializer - który posiadałby, chociażby Meta w ktorym ref_name=None byłby zawsze, tak by nie trzeba było pisać tego za każdym razem.
  3. Chciałem wykorzystać redisa jako cache
  4. Działające gitlab CI-CD
  5. Więcej końcówek, ale myślę, że tego kodu już jest całkiem wystarczająco by pokazać, w jaki sposób rozumuję.
  6. Można zrobić z pola iban primary key
  7. Unity do serwisów - uznalem, ze testy dla usersow sa wystarczajace by pokazac ze potrafie je pisać :)
  8. Logowanie - zwykle używam structloga, ale appka niewiele lobi więc ostatecznie pominąłem temat.

intercars's People

Contributors

shagreen avatar

Watchers

 avatar

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.