Skip to content

Conversation

@Majki03
Copy link

@Majki03 Majki03 commented Sep 2, 2025

Zadanie rekrutacyjne - Aplikacja dla Kantoru

Faktycznie poświęcony czas na zadanie:
Około 4 godzin, wliczając konfigurację środowiska i development.


Feedback do zadania:

  • Zadanie było bardzo ciekawe i przyjemne w realizacji. Instrukcje były jasne, a cel logicznie określony, co pozwoliło na sprawne zaplanowanie pracy.

  • Jedynym wyzwaniem na początku była konfiguracja środowiska Docker. Bazowy obraz PHP w Dockerfile był oparty na starej, niewspieranej już wersji Debiana, co powodowało błędy przy budowaniu. Aktualizacja obrazu do php:8.2-apache rozwiązała problem i dostosowała środowisko do wymagań PHP z pliku composer.json. Sugerowałbym zaktualizowanie tego w repozytorium na przyszłość, aby proces startowy dla kolejnych kandydatów był jeszcze płynniejszy.


Komentarze dotyczące podejścia i decyzji projektowych:

Architektura i Backend:

  • Zdecydowałem się na architekturę serwisową w Symfony, tworząc NbpApiService, aby odizolować logikę pobierania danych z NBP od kontrolera. Dzięki temu kod jest czystszy i łatwiejszy w testowaniu.
  • W celu zapewnienia wydajności, zaimplementowałem cachowanie z użyciem wbudowanego komponentu Symfony Cache. Dane z API NBP są przechowywane w pamięci podręcznej, co drastycznie redukuje liczbę zapytań do zewnętrznego serwisu i przyspiesza działanie aplikacji, zwłaszcza przy wielu użytkownikach.
  • Logikę biznesową dotyczącą obliczania kursów kupna/sprzedaży umieściłem w serwisie, aby była ona reużywalna i odseparowana od warstwy prezentacji.

Frontend:

  • Aplikację front-endową zbudowałem w oparciu o komponenty React, tworząc oddzielne komponenty dla panelu głównego, tabeli kursów, historii oraz kalkulatora walut.
  • Logikę przeliczania walut w kalkulatorze umieściłem w całości po stronie klienta. Po jednorazowym pobraniu aktualnych kursów, wszystkie obliczenia odbywają się natychmiastowo w przeglądarce, co zapewnia najlepsze możliwe doświadczenie użytkownika (UX).
  • Do komunikacji z backendem wykorzystałem bibliotekę axios, która była już dostępna w projekcie.

Środowisko i Testy:

  • Dostosowałem Dockerfile, aby korzystał z PHP 8.2, zgodnie z wymaganiami w composer.json, co zapewniło spójność środowiska.
  • Napisałem testy integracyjne dla kluczowych endpointów API (/api/rates/current i /api/rates/historical), aby zweryfikować poprawność zwracanych danych i obsługę różnych struktur odpowiedzi z API NBP.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant