Solution to the recruitment task #55
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
Dockerfilebył oparty na starej, niewspieranej już wersji Debiana, co powodowało błędy przy budowaniu. Aktualizacja obrazu dophp:8.2-apacherozwiązała problem i dostosowała środowisko do wymagań PHP z plikucomposer.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:
NbpApiService, aby odizolować logikę pobierania danych z NBP od kontrolera. Dzięki temu kod jest czystszy i łatwiejszy w testowaniu.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.Frontend:
axios, która była już dostępna w projekcie.Środowisko i Testy:
Dockerfile, aby korzystał z PHP 8.2, zgodnie z wymaganiami wcomposer.json, co zapewniło spójność środowiska./api/rates/currenti/api/rates/historical), aby zweryfikować poprawność zwracanych danych i obsługę różnych struktur odpowiedzi z API NBP.