SUVEÜLIKOOL 2021 KANDIDEERIMISÜLESANNE

Kas sul on olnud olukorda, kui sul on vaja mõnda HDMI juhet või üleminekut, aga sa ei ole kindel, KAS sul on see olemas?
OLED KINDEL, mis asjad sul keldris, sahvris, garaažis või ladudes on?

Loome rakenduse, mis annab ülevaate antud olukorrast ehk saad luua enda jaoks lao- või inventuurisüsteemi.

Looge klient-server rakendus REST API arhitektuuril.

Tehnoloogia:

  • Frontend: React
  • Backend: .NET 5 või Spring Boot
  • Andmebaas: MSSQL või PostgreSQL

Kasutajad: Eraklient, Admin

Funktsionaalsed nõuded (kuni 40p)

1) Rakendusel peab olema esileht (nö reklaamleht) sisselogimata kasutajale. (Kuni 3p)

2) Kasutaja peab saama esilehelt registreerida ja sisse logida. (Kuni 5p)

3) Kasutajaid on kahte tüüpi – eraklient, rakenduse admin. Rakenduse admin on kasutaja, mis on juba eeldefineeritud ja tema ei pea saama registreerida. Admin peab saama vaid sisse logida ja admin kasutajal on eraldi vaated (Admin kasutajal on ainult statistika vaade, punkt 8). (Kuni 3p)

4) Rakenduses peab saama luua piiramatu arv hoiustamiskohtade tasemeid asjade hoiustamiseks.
Näiteks Tuba-1/Karp-5/Kaust-2 või Osakond-3/Ladu-6/Rida-4/Kast-6/Karp-2. Iga kasutaja näeb vaid enda lisatud hoiustamiskohti. (Kuni 7p)

5) Rakenduses peab võimaldama lisada igasse hoiustamiskohta tooteid/asju. Toodete/asjade salvestamisel peab olema võimalik lisada iga toote/asja kohta (Kuni 8p):

  • pilti;
  • nimetust;
  • seerianumbrit (kui tootel on see olemas);
  • ülesande käigus tuleb välja mõelda veel vähemalt 3 parameetrit.

6) Rakenduses peab saama otsida tooteid/asju kõikide parameetrite järgi, välja arvatud pilt. Otsing tagastab tabeli/list vaate. Iga kasutaja näeb vaid enda lisatud tooteid/asju. (Kuni 6p)

7) Otsinguvaatest saab navigeerida toote/asja detailvaatesse. Detailvaatest saab avada punktis 5 loodud muutmise/loomise vormi. (Kuni 3p)

8) Admin kasutaja peab saama näha iga kasutaja kohta statistikat. Näiteks kui palju tooteridu on mingil kasutajal. Ülesande käigus tuleb välja mõelda veel 3 võimalust, mida võiks statistika alt näha. (Kuni 5p)

Mittefunktsionaalsed nõuded (Kuni 15p)

1) Projekt peab vigadeta kompileeruma ja käima minema.
2) Projekti äriloogikat kajastavad osad peavad olema kaetud (unit test) ühiktestidega.
3) Koodi/Projekti failide struktuur on loogiline.
4) Andmemudeli ülesehitus jälgib parimad praktikaid (nt normaliseeritus).
5) Koodi lihtsus (mida lihtsam seda parem), Clean Code
6) Proovitöös üleantavad osad on git lingina või kokkupakitud zip failina:

  • readme.md – käimapaneku juhend;
  • kood;
  • andmebaas;
  • kui andmebaas on hostitud kuskil avalikult, siis piisab ka ühendusparameetritest (host:port,kasutaja,parool).

Boonusülesanded (Kuni 10p)

Ei ole kohustuslik, kuid annab lisaväärtust:

  • Võimalusel laadige rakendus ülesse mõnda hostingu keskkonda ja saatke link, kust on võimalik seda avada.
  • Mobiilivaated ehk responsive.
  • Swagger.
  • Dockerfile (rakendusele).
  • Docker compose (baas või rakendus ja baas).

ÜLESANDE ESITAMINE

Tähtaeg: 11.aprill

Edastage lahenduse lähtekood kas github-i lingina või ZIP failina e-maili aadressile suveulikool@netgroup.com. Lisage kirja manusesse ka oma CV ning märkige kirjas lahenduse loomisele kulunud aeg tundides.

Hindamisloogika

Maksimaalselt on võimalik saada 55 punkti. Mittekohustuslike punktide eest on võimalik lisaks saada 10 lisapunkti.

Soovitused

Kindlasti proovi oma lahendust käima panna ka sõbra arvutil. Kõige hullem on see kui sinu arvutis kõik töötas ja meie arvutis ei lähe käima. See võib juhtuda näiteks siis kui mõni sõltuvus (nuget/maven/gradle) on vigasena lisatud.