Praktikumi tiimiblogi - tammmatTLU/suvepraktika_tiim2 GitHub Wiki

Esmaspäev, 09.06.2025

Täna alustasime kella üheksast kahe loenguga. Esimesel sissejuhataval loengul saime väikese mäluvärskenduse, eksamid on ammu läbi ning nüüd on vaja uuesti koolilainele saada. Esimeses loengus oli ka kohalolukontroll ning saime aru, et meil on üks tiimikaaslane ikka täiesti kadunud. Õnneks tuli meile appi TPT-st Peter. Teises loengus saime detailsemalt teada mis asi on SCRUM ning kuidas selline süsteem reaalselt töömaastikul kasutuses on. Panime püsti oma Jira ja SCRUM backlogi ning taskid.

Arutasime läbi andmebaasi ning viisime oma uue tiimikaaslase kurssi oma projekti täpsemate detailidega. Otsustasime, et peaksime alustama projektiga nö valgelt lehelt, üksikuid asju saame oma HiFi prototüübist võtta, aga enamik asju vajavad suuri muutusi. Konsulteerisime ka Jaagupiga, meil oli temaga sisuliselt esimene "tehniline" arutelu, kus arutasime süvitsi läbi kuidas asjad peaksid toimima. Teised õppejõud ei olnud varem sellisel tasemel meid aidanud ning kliendiga pole me normaalselt suhtlust saavutanud, et selliseid asju täpsemalt läbi rääkida. Päeva lõpuks saime valmis uuendatud andmebaasi ning SCRUM-i. Homsest alates alustame isiklike ülesannetega, esimeseks suuremaks ülesandeks on "default" kasutajavaade valmis teha. Lisaks näitab Peter homme, mis on Docker ning kuidas seda kasutada.

Teisipäev, 10.06.2025

Alustasime koodi kirjutamisega. Backendi kutid alustasid API implementeerimise, Dockeri püsti panemise ja testandmete genereerimisega. Frontend alustas sisselogimiselehe ning puldivaatega. Päeva lõpuks saime valmis puldivaate ning sisselogimise lehe. Backendi ülesanded jäid pooleli ning plaaniks on homme jätkata. Frontendi homset plaani mõtleme homme.

Homme kell 13:30 on planeeritud ka kohtumine kliendiga, loodame et saame veidi tehnilisemast poolest rääkida ning saame kliendilt tagasisidet oma senini tehtud tööle.

Seni on kõik meeskonnas motiveeritud ja loodame, et see seis jääb ka arenuse lõpuni. Täna saime ka paika pandud kliendiga kohtumise järgmiseks päevaks, et tutvustada kliendile Peterit ja teha talle ülevaade meie senistest tegevustest ja mis veelgi tähtsam, edasistest tegevustest.

Kolmapäev, 11.06.2025

Koodi kirjutamine jätkub. Backend jätkab oma ülesannetega ning frontend teeb valmis basic struktuuri. Päeva lõpuks loodame, et saame valmis API ning saame ühendada backendi ja frontendi ning reaalseid näidisandmeid kasutada.

Päeva lõpp

Testandmed said andmebaasi seedingut kasutades sisse laetud. Samuti sai vahetatud kasutusel olev DB Postgresql-lt MariaDB-le. Docker sai viimaks üles seatud ning saame selle homsest hommikust kasutusele võtta.

Kliendiga kohtumisel sai meie uus liige Peter ka Meelisega tuttavaks ning saime seal asjad viimaks veidi sügavama tehnilise detailsusega läbi räägitud. Arutasime tagasiside põhimõttelise töö üle, arutasime veelkord kasutajaliidese ja pakutava funktsionaalsuse nõuete üle ning kinnitasime soovitavate raamistike kasutamise võimalikkust. Veel said eraldi räägitud "kasutajate" ehk pultide autenitimine, uute pultide loomine ning olemasolevate seadistuste kopeerimine mõnele teisele puldile. Veel sai räägitud kasutajaandmete vahetamisest (change password fuktsionaalsus) ning sellest, kuidas me plaanime salvestada iga puldi kujunduslikud parameetrid andmebaasi (redigeerimisel salvestatakse jooksvalt React-redux store'i iga elemendi kohta kujunduslike omaduste, nagu nt. positsiooni, suuruse, kirjatüübi ja värvi kohta andmeid ning "Salvesta" nupu vajutamisel saadetakse API-le batchina iga elemendi kohta üks redux'i store'i "state" JSON kujul, mis salvestatakse vastava kirje atribuudina "button_instance" tabelis. Selle loogika kasutamiseks tuleb ilmselt lugeda veel redux'i enda dokumentatsiooni ning mõelda läbi ka nuppude lisamise ja kustutamise võimalused.)

Homseks on plaan selline, et viime teineteist hommikul üksteise saavutustega kurssi ning võtame ühiselt kasutusele nüüdseks üles seadistatud Docker'i. Seejärel hakkame siduma backendi ja frontendi, et kasutada juba andmebaasis olevaid testandmeid. Selleks tuleb luua vajalikke funktsionaalsusi pakkuvad API otspunktid ning jätkata frontendis Reacti rakenduse ehitamist ja implementeerida olemasolevatel lehtedel API päringute kasutamine andmetega manipuleerimiseks. Algselt lihtsalt GET päringud rippmenüüde valikute ning seadmete kontroll-elementide genereerimiseks ning hiljem ka tehtud muudatuste salvestamiseks (milleks tuleks omakorda alguses redux kasutusele võtta).

Kahjuks meid oli täna üks mees vähem, kuid praegu see meid veel ei heiduta. Päeva jooksul hoidsime teda ka kursis mida teeme ja anname homme põhjaliku ülevaate talle.

Neljapäev, 12.06.2025

Kuna eile oli meil ka kliendiga kohtumine, siis täna hommikul tegime korraliku stand-upi, oma 20 minutit läks selle peale, kus rääkisime kõik, mis seni tehtud ja kuidas nüüd kõik koos edasi liikuda. Täna hommikul saime me ka aru, et eile valmis tehtud testandmete seedimine oli vigase loogikaga, sest andmebaasi oli loodud topelt id atribuudid. Selle parandamiseks, kustutasime kõik migratsioonid ära ja alustasime andmebaasi loomist otsast peale. Saime valmis ka reduxStore-i, mida alguses testisime lihtsat hard coded väärtustega, sest backendi API otspunktidega oli probleeme. FrontEnd oli valmis API otspunktidelt päringuid tegema, selleks kasutasime kasutasime reacti enda funktsiooni @reduxjs/toolkit moodulist, mis on eraldi loodud API ja reduxStore-i omavahelise suhtluse hõlbsustamiseks. Ennelõunat ja pärast pikka ajutööd tekkis olukord, kus kogu frontEnd-i kaust oli ära kustutatud, mis tekitas väga pingelise olukorra, kus oli kindlasti kõigil kuklas mõte, kas seni tehtud töö on ttõesti kadunud.

Lõunapausiks olid kõikidel juba ajud täiesti süldid ja peale seda, kui kõigil kõhud täis olid, oli raske tagasi produktiivse kiirusega töö peale naasta.

Pealelõunat sai esimesed API otspunktid valmis, kuid andmete saatmisega oli ikka probleem.

Edasine plaan on frontEnd ja backEnd API otspunktide abil lõpuks ära ühendada, et saaks hakata tegelema reduxStore-i kuvamise ja salvestamisega andmetega, mis tulevad andmebaasist.

Reede, 13.06.2025

Täna saime andmebaasi testanded sellisele kujule, mida frontEndi reduxStore kasutab. Samuti sai alguse kasutajaliidese redigeerimise loomine ja samuti eristasime button ja span elemendid, mida salvestatakse eraldi andmebaasi. Selleks lisasime user tabelisse uue kirje, nimega redux_span. Samuti sai alguse nuppude lisamise funktsionaalsus. Meie andmebaasi tuli veel üks kirje user tabelisse, nimega token. Token-it kasutame autentimise juures, mida kontrollitakse ka lehtede vahel liikumise juures ja toiminguid tehes. Tokeni genereerimiseks sai tehtud ka vajalik fail.

Esimene nädal: Meie ühine arvamus oli, et kahjuks ei jõudnud me selle nädalaga kaugemale kui tahtsime, kuid enesetunne on ikkagist hea, sest päris külgemööda see nädal kindlasti maha ei jooksnud. Kohati oli tunne, et jäämegi neid parandusi ainult tegema ja iga edasine funktsionaalsus mille loome, ükskõik kui hästi läbimõeldud see on, peame ikkagist parandusi hiljem tegema. Saime kõik midagi uut õppida ja järgmine nädal näitab, kas jäi ka midagi kahe kõrva vahele. Järgmine nädal peame tekitama võimaluse frontEndi ja backEndi omavaheliseks suhtluseks, kasutajate loomise, autentimise, nuppude loomine ja salvestamine õigel kujul ja algelised test skriptid mis annaksid mingit tagasisidet kui nupulevajutus on tehtud.

Tänaseks oli meeskonna motivatsioon arusaadavalt väiksem kui esmaspäeval, sest sai vähem tehtud kui lootsime ja väga palju läks aega tekkinud probleemide likvideerimise peale. Kuid täna on plaanis ka reedene sotsialiseerumine meeskonnaga, et järgmisel nädalal sujuks arendamine paremini. Kahjuks olime täna hommikul taas vähemuses, kahjuks ka sama isik kes puudus ükspäev, kuid pärastlõunat saime jätkata täies koosseisus.

Esmaspäev - 16.06.2025

Esimene päev sellel nädala ja nagu oodatud, motivatsioon ja jälle laes ning plaan on teha võimalikult palju ära. BackEndi poistel on motivatsioon natukene madalam kui teistel, sest eelmine nädal ei saanud kõik eesmärgid täidetud ootuspäraselt.

Täna saime aru, et reduxState seeditakse andmebaasi nii, et kõikidel on sama id. Selle parandamiseks pidime lihtsalt reduxState objekti loomise tõstma ümber õigesse kohta. Otsustasime, et reduxState-i id-ks saab date.now() funktsiooni tulemus, mis tagastab millisekundid alates 1.jaanuarist 1970. Valmis sai ka iga elemendi kustutamise ja redigeerimise nupp, et määrata igale elemendile tema värv, font, tekstisuurus, lisada teksti ja muuta nupu malli. Lisaks sai ka valmis võimalus sisse lülitada "snap to grid", et saaks nupud paigutada täpsemalt. Tänane põhiarutelu seisnes selles, et tegelikult igasuguste LLM-ide kasutamine arenduses on tore ja uhke küll, kuid kindlasti peab ka ise dokumendatsiooni lugema.

Edasine plaan on valmis saada salvesta nupp ja nupu malli loomise võimalus ning kasutaja sisse/välja logimine.

Teisipäev - 17.06.2025

Eile tehtud serialize täna ei töötanud, ning sellest tulenevalt tekkisid probleemid backEndi ja frontEndi omavahelisel suhtlusel. Tänane suur tükk oli ära teha nupu salvestamise funktsioon backendis, et oleks võimalik nupu reduxState salvestada ja see ka pärast sealt õigel kujul kätte saada. Hommikupoolik läks puhtalt bug-ide parandamise peale ning pidasime ka maha korraliku arutelu, kuidas see nupu reduxStore ikkagist andmebaasi võiks salvestada ja milline loogika seal taga võiks olla. Peale korralikku kõhutäit asusidki Armin ja Martin selle kallale ning Mattias ja Vaiko asusid nuppude salvestamist ja andmebaasist kättesaamist frontEndis tegema.

Nuppude salvestamisel tekkis põhiline probleem alles lõpus. Funktsioon ei olnud valmis vastu võtma reduxStore-i sellisel kujul nagu see frontEndist tuli. Kuid kuna see funktsioon oli meile juba pähe seedinud, siis teadsime täpselt mida parandada, et asi toimiks.

Tänane läks natukene pikale, sest ei olnud üldse tahtmist enne lõpetada, kui midagi funktsionaalset valmis on. Suur eesmärk sai täidetud ja nuppe on võimalik salvestada ja pärast kuvada. Selle puu langetamine andis viimase lükke, et leida endas see motivatsioon veel kaks päeva vastu pidada ja anda endast kõik, et jõuaksime kõik reedel võiduka lõpuni.

Kolmapäev - 18.06.2025

Täna saime suurepärasest staadiumist juba alustada, sest eilne päev oli korralikult lõpuni viidud. Päeva jooksul olid väikesed bug-ide parandused. Suurem viga või väljajätmine oli üks seedimise fail, mis tegeles nuppude andmebaasi salvestamisega. Kahjuks antud töö oli ebavajalik, kindlasti pole ka tore, et antud seedimise failide peale ja korrastamise peale läks omajagu aega, mis justkui on raisatud aeg. Kindlasti ei aidanud ka see, et täna olime reaalse põhjuseta jälle vähemuses. Antud nõme olukord, kus paar päeva juba on puudunud üks ja sama isik, ei aita sugugi meeskonna moraalile kaasa.

Samuti andmebaasi salvestatud reduxState parandamine, kus nupu id oli automaatselt genereeritu kuid me kasutame nupu id-ks date.now() funktsiooni. Pidime ka paranduse andmebaasi sisse viima, kus ei olnud võimalik nupule nii suurt id-d panna, kuid see oli kiire korrastamine.

Õhtul saabus ka teade, et oleme järgmisel päeval neljakesti, sest meie vapper abijõud, kes meile allutati, kahjuks ei saa meiega järgmine päev liituda.

Neljapäev - 19.06.2025

Kohale on ootamatult jõudnud projekti arenudsprotsessi viimane päev, kus enda koodi korrastada.

Hommikuse "kohaloleku kontrolli" käigus selgus, et veedame vähemalt hommikupooliku 3kesti.

Täne päev läks puhtalt selle peale, et saaksime enda rakenduse tööle ilma dockerita. Nii mõnelgi meist tuli paar halli juuksekarva juurde selle ülesseadmisel ja käima panemisel, et saaksime ilusa readme.md faili teha, kus on kirjas korralik juhend, et igaüks saaks enda masinas seda käivitada. Kui saime sellega ühele poole, kell oli selleks ajaks 16:59, jooksime kiiresti meie kliendiga kohtuma, et ka talle tutvustada meie vinget rakendust. Muidugi siis, kui kliendile hakkasime ette näitama, nii mõnigi asi ei toiminud. Saime kliendilt rahustust, et igasuguste projektidega ongi nii, et ette planeeritud aeg on vaja korrutada 3x, omad järeldused teha ja see uuesti korrutada 2x. See on reaalsus kui kaua aega võib võtta. Hetke seisuga kaotasime korralikult arendamisest aega probleemide likvideerimiseks.

Interaktsiooni disain aine dokument:

Interaktsiooni disain

Infosüsteemide aluste aine dokument:

Infosüsteemid

Kokkuvõttev analüüs

Tiimina ütleksime, et meil läks vaatamata viimase päeva läbikukkumistele päris okeilt. Suuresti võib selle edu eest tänada Peterit, kes aitas meil palli veerema saada. Tiimi siseselt koostöös probleeme ei tekkinud ning keegi tülli ei läinud. Muidugi oli möödarääkimisi, kuid need said koostöö abil lahendatud. Kogu projekti vältel tegid Mattias ja Vaiko frontendi ning Martin ja Armin backendi. Peter tegi enamasti projekti ülesseadmist ning autentimisega seotud osi fullstack. Kliendiga suhtlemine praktika ajal ei olnud kõige hullem. Kokku kohtusime kaks korda - esimene kord esimesel nädalal, kus saime asju arutada ning juba valminud asju näidata ning teine kord 19. juuni õhtul kell 16:09, kus näitasime talle, mille me valmis saime. Kliendi tagasiside oli suunav ja vastuvõetav ning selle osas etteheiteid pole. Võrreldes ülejäänud semestriga oli Meelis kordades aktiivsem vastaja. Järgmisel korral prooviksime vältida ülesseadmisele minevat ajakulu ja eelistaksime kasutada Symfony asemel kas vanilla PHP-d või mingit muud alternatiivset raamistikku, sest Symfony eripäradest tekkis meil suurim osa mõttetust ajakulust.

Kolm peamist läbilööki: 1)React'i erinevate moodulite kasutamine efektiivselt. Ei pidanud moodulite võimaldatud asju nagu nt. undo nupp tegema manuaalselt. 2)Blogi - Pidasime nii kogu semestri, kui ka praktika vältel korralikult blogisid ning õppisime palju. 3) Hästi läks see, et kõik olid usinad tegijad, eranditega, kuid siiski. Suhtlus omavahel oli hea ja töödejaotus tuli hästi välja. Väga hea oli see, et hoidsime lõpuni kokku ning ei läinud tülli.

Kolm peamist läbikukkumist: 1)Dockeri ülesseadmine võttis 4 päeva. Täpsemalt võite lugeda meie individuaalsetest blogidest ja tiimiblogist. 2)Projekti viimasel päeval lokaalselt püsti panemine ja juhiste tegemine oli 100% kõige raskem osa kogu projekti arendusest ja me soovime seda mitte kunagi uuesti teha. 3)Asi jäi vägagi poolikuks. Saime valmis vaid seadmete juhtimise lehtede renderdamise, kasutajaliidese redigeerimise (põhimõtteliselt täielikult), uute lehtede loomise ja autentimise.

Soovitused: Vahetage eriala. Mõelge kogu projekt otsast lõpuni läbi enne tegema hakkamist (just tehnilisest poolest). Küsige selles osas kelleltki targemalt abi, las seletab teile, sest me kõik teame, et te oskate ainult javascripti ja cssi. (Me ka) Mõelge välja milliseid raamistikke ja keeli te peate kasutama, võtke lisakursuseid või õppige iseseisvalt, sest suure tõenäosusega teile ei õpetata neid semestri jooksul.

Tiimi panused: Kert-Jan: 0% Armin: 20% Mattias: 20% Martin: 17,5% Vaiko: 20% Peter: 22,5%