python -m venv .venv
pip install -r requirements.txt
cp .env.example .env
# edit .env file and set your own values
python manage.py migrate
python manage.py runserver
docker compose up
python manage.py test
coverage run --source='.' manage.py test
coverage report
coverage html
Go to /swagger/
to see api documentation
Cel: Stworzenie prostej aplikacji CRUD w Django, która umożliwia zarządzanie systemem hydroponicznym.
- Umożliwić użytkownikowi tworzenie, odczytywanie, aktualizowanie, i usuwanie (CRUD) informacji o jego systemach hydroponicznych.
- Każdy system hydroponiczny powinien być przypisany do użytkownika (owner).
- Powinna zostać dodana walidacja danych zgodna z zaleceniamy Django REST Framework.
- Umożliwić wysyłanie danych z czujników (pH, temperatura wody, TDS) do istniejącego systemu hydroponicznego.
- Pomiary powinny być zapisywane w bazie danych.
- Użytkownik powinien mieć możliwość otrzymania listy swoich systemów hydroponicznych.
- Wszelkie metody pobierania danych powinny dawać możliwość filtrowania danych (przedział czasowy, przedział wartości).
- Metody te powinny też dawać opcje sortowania wyników po wybranych parametrach.
- W metodach, gdzie będzie to potrzebne należy zaimplementować paginację danych.
- Możliwość pobrania szczegółów konkretnego systemu z informacją o 10 ostatnich pomiarach.
- System autoryzacji i uwierzytelniania użytkowników.
- Aplikacja powinna być napisana w Django z wykorzystaniem Django REST Framework.
- Użycie bazy danych PostgreSQL. Należy zoptymalizować zapytania do bazy danych.
- Kod powinien być zgodny z PEP8.
- Dokumentacja API.
- Dokumentacja kodu źródłowego
- README.md z instrukcjami dotyczącymi instalacji, konfiguracji i uruchomienia aplikacji.
- Projekt powinien być dostępny w publicznym repozytorium na platformie GitHub lub GitLab.
- Mile widziane użycie dobrych praktyk programistycznych, testy jednostkowe i konfiguracja dockerowa/k8s.
- Oceniane będą: czystość kodu, struktura projektu, stosowanie się do zasad SOLID oraz efektywność rozwiązań.
- Dobrym dodatkiem będzie korzystanie z wersji kontroli źródła Git, zgodnie z zasadami (oceniane będą między innymi: nazwy i częstotliwość commitów).
- Dodanie narzędzi deweloperskich np. przez Django Admin będzie zdecydowanie dobrym dodatkiem.
- Struktura projektu powinna być czytelna i umożliwiać łatwe poszerzanie funkcjonalności.