Jeśli nie zgadzasz się z czymś w tym dokumencie przeczytaj sekcję "Dobór i użycie technologii" w "Zasadach Rozwijania Projektów" żeby dowiedzieć się jak go zmienić.
- Backend tworzymy korzystając z najnowszej wersji "Long Term Support" frameworku Django i z Pythona 3
- Nowe projekty powinny zostać wygenerowane poprzez generator projektów
- Projekty powinny stosować się do Coding Style projektu Django. Oznacza to jednocześnie stosowanie się do zasad PEP-8 (wyjątkiem jest zgoda na linie do 119 znaków oraz brak wymogu oznaczania napisów do tłumaczenia)
- Projekty powinny mieć skonfigurowane Continuus Integration (zazwyczaj CI od Heroku) skonfigurowane z linterem i odpalane automatycznie dla każdego pull requesta
- Jeśli projekt udostępnia web API, powinien również zawierać automatycznie generowaną do niego dokumentację.
Lista standardowych komponentów których używamy w projektach przy budowaniu backendu
| Typ komponentu | Wybrane oprogramowanie | Uwagi |
|---|---|---|
| Manager paczek pythonowych | pipenv | |
| Framework backend | Django | wygenerowany z generatora projektów |
| Baza SQL | PostgreSQL | |
| Linter Python | flake8 | max-line-length = 119 |
| Zaawansowany silnik wyszukiwania | Elastcsearch | |
| Klient HTTP | requests | |
| CMS dla stron treściowych | Wagtail | |
| Prosty silnik wyszukiwania | django.contrib.postgres.search | projekt wbudowane w Django |
| Context processor dla ustawień | django-settings-context-processor | |
| Tłumaczenia treści | django-modeltranslation | |
| Edytor WYSIWYG | django-ckeditor | |
| Generowanie REST API | Django Rest Framework | autentykacja oparta na tokenie |
| Szeregowanie wpisów w adminie | django-admin-sortable2 | |
| Zarządzanie ustawieniami w adminie | django-constance | |
| Skład plików media w AWS S3 (i innych CDNach) | django-storages | |
| Przetwarzanie obrazów | django-imagekit | |
| Import i eksport danych | django-import-export | |
| Zaawansowane wizualnie emaile | django-mjml |