Skip to content

GorlikItsMe/luna-scientific-recruitement-task

Repository files navigation

luna-scientific-recruitement-task

How to install?

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

How to run?

python manage.py runserver
docker compose up

Tests

python manage.py test

coverage run --source='.' manage.py test
coverage report
coverage html

Api docs

Go to /swagger/ to see api documentation

Zadanie

Cel: Stworzenie prostej aplikacji CRUD w Django, która umożliwia zarządzanie systemem hydroponicznym.

Wymagania funkcjonalne

Endpoint do zarządzania 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.

Endpoint do zarządzania pomiarami

  • Umożliwić wysyłanie danych z czujników (pH, temperatura wody, TDS) do istniejącego systemu hydroponicznego.
  • Pomiary powinny być zapisywane w bazie danych.

Odczytywanie informacji o systemach i pomiarach

  • 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.

Endpoint logowania użytkownika

  • System autoryzacji i uwierzytelniania użytkowników.

Wymagania techniczne

  • 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.

Dodatkowe informacje

  • 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.