Zadatak za Web Developera - Konovo.rs
Dobrodošli! Pred vama je tehnički zadatak osmišljen da proceni vaše veštine u razvoju web aplikacija. Pažljivo pročitajte sve zahteve pre nego što započnete.
Junior Fullstack Developer
Tražimo motivisanog Junior Fullstack Developera da se pridruži našem timu. Idealni kandidat će imati solidno razumevanje web tehnologija i sposobnost da samostalno rešava probleme, uz posvećenost čistom i efikasnom kodu.
Cilj Zadataka:
Razviti potpunu web aplikaciju koja uključuje frontend i sopstveni backend API. Backend će služiti kao posrednik za obradu podataka dobijenih od našeg postojećeg eksternog API-ja, dok će frontend biti zadužen za korisnički interfejs i autentikaciju.
Tehnologije:
- Frontend: HTML, CSS, JavaScript
- Backend: PHP ili Python (izbor kandidata)
Prednost:
Kandidati koji frontend izrade koristeći React za JavaScript logiku.
Detalji eksternog API-ja (za korišćenje):
- Bazni URL:
https://zadatak.konovo.rs/
- Endpoint za prijavu:
POST https://zadatak.konovo.rs/login
(prima JSON username
, password
; vraća JWT token)
- Test kredencijali:
username: zadatak
, password: zadatak
- Endpoint za proizvode:
GET https://zadatak.konovo.rs/products
(zahteva Authorization: Bearer <token>
u zaglavlju; vraća JSON niz proizvoda)
Opis Zadataka:
1. Backend Implementacija:
Kreirati sopstveni backend API koji će rešavati sledeće izazove:
- Dohvatanje i obrada proizvoda:
- API treba da omogući pristup informacijama o proizvodima.
- Neophodno je da koristi JWT token dobijen od eksternog API-ja za autentifikaciju prilikom dohvatanja podataka o proizvodima.
- Prilikom obrade, za proizvode iz kategorije "Monitori", cenu treba uvećati za 10%.
- Takođe, u opisu svih proizvoda, reč "brzina" treba zameniti sa "performanse" (case-insensitive).
- API bi trebalo da podržava filtriranje i pretragu obrađenih proizvoda na osnovu kategorije i unetog teksta.
- Očekivani izlaz je JSON format.
- Pristup pojedinačnom proizvodu:
- API treba da omogući dohvat detalja specifičnog proizvoda na osnovu njegovog ID-a.
- Potrebno je primeniti istu logiku obrade podataka kao i za listu proizvoda.
- Ukoliko traženi proizvod ne postoji, API treba da vrati odgovarajući status (npr. 404 Not Found).
2. Frontend Implementacija:
Kreirati web aplikaciju sa sledećim funkcionalnostima na korisničkom interfejsu:
- Autentifikacija:
- Razviti formu za prijavu korisnika koja direktno komunicira sa eksternim login API-jem.
- Nakon uspešne prijave, JWT token treba sačuvati i korisnika preusmeriti na stranicu sa proizvodima.
- Aplikacija treba da jasno prikazuje poruke o grešci u slučaju neuspešne prijave.
- Prikaz proizvoda:
- Pre pristupa listi proizvoda, aplikacija mora proveriti postojanje JWT tokena i preusmeriti korisnika na login stranicu ako token nije prisutan.
- Dinamički prikazati listu proizvoda, dohvatajući ih od sopstvenog backend API-ja (uz slanje JWT tokena za autorizaciju).
- Omogućiti korisniku opciju "Odjavi se" koja će obrisati JWT token i vratiti ga na login stranicu.
3. Naprednije Funkcionalnosti (Dodatni Poeni):
- Implementacija interfejsa za filtriranje proizvoda po kategoriji i pretragu po nazivu (komunikacija sa sopstvenim backendom).
- Prikaz detalja pojedinačnog proizvoda nakon klika na njega.
- Robusnije rukovanje greškama i poboljšani korisnički feedback.
Očekivani Ishod:
- Potpuno funkcionalna web aplikacija (frontend + sopstveni backend).
- Demonstracija razumevanja HTTP komunikacije (frontend-backend, backend-eksterni API).
- Pravilna primena logike obrade podataka na backendu.
- Čist, organizovan i čitljiv kod za obe komponente.
- Pravilna upotreba HTTP metoda, zaglavlja i JWT tokena.
Srećno sa zadatkom!