Projekti on toteutettu Haaga-Helian Ohjelmistoprojekti2 kurssilla. Toteuttava tiimi: Sonja Helminen, Katja Jääskeläinen, Kristin Luik, Ulla Montonen ja Anton Rezin.
Sovelluksen tarkoitus on toimia työaikakirjausjärjestelmänä, esimerkiksi yksityisyrittäjille, joiden on pidettävä kirjaa tehdystä työstä ja sen kestosta. Käyttäjällä voi samanaikaisesti olla hallinnoitavana useita projekteja, joille voidaan kohdentaa omia työaikakirjauksia. Sovelluksessa käyttäjä voi kirjoittaa muistiinpanoja tehdystä työstä ja merkitä työn keston sekä päivämäärän. Lisäksi työtunnit voidaan laskea yhteen käyttäjän valitsemalta ajanjaksolta tai projektilta. Käyttäjä voi lisätä myös muita käyttäjiä omille projekteilleen ja valita missä roolissa he ovat projektissa. Käytössä olevat projektikohtaiset roolit ovat omistaja (owner), käyttäjä (user) sekä seuraaja (viewer). Projektin omistajalla on kaikki oikeudet projektiin, käyttäjä voi lisätä tuntikirjauksia projektille ja seuraaja näkee vain projektin tiedot ja siihen tehdyt tuntikirjaukset.
Sovellus vaatii rekisteröitymisen. Rekisteröitynyt käyttäjä voi luoda projekteja ja tehdä projekteille työaikakirjauksia. Hän voi myös lisätä muita käyttäjiä projekteilleen.
Attribute | Type | Description | Validation | Requirements |
---|---|---|---|---|
id (PK) | long /Integer | Project id | ||
title | String / Varchar | Projektin nimi | A-z0-9.,-_!"#%&/()=?*{}[] | 51>length>1 |
Set UserProjectRole | roles / OneToMany | Projektin roolit | ||
List Entry | entries / OneToMany | Projektiin liittyvät kirjaukset |
Attribute | Type | Description | Validation | Requirements |
---|---|---|---|---|
id (PK) | long / Integer | Entry id | ||
comment | String / Varchar | Kirjauksen kommentti | A-z0-9.,-_!"#%&/()=?*{}[] | length<251 |
entry_date | LocalDate / Date | Kirjauksen päivämäärä | 0-9- | 'YYYY-MM-DD' |
start_time | LocalTime / Time | Aloitusajankohta | 0-9: | 'HH:mm:ss' |
end_time | LocalTime / Time | Lopetusajankohta | 0-9: | 'HH:mm:ss' |
project_id (FK) | JoinColumn / ManyToOne | Viittaus projektiin | ||
appUser_id (FK) | JoinColumn / ManyToOne | Viittaus käyttäjään |
Attribute | Type | Description | Validation | Requirements |
---|---|---|---|---|
id (PK) | long / Integer | AppUser id | ||
first_name | String / Varchar | Käyttäjän etunimi | A-z- | 21>length>2 |
last_name | String / Varchar | Käyttäjän sukunimi | A-z- | 31>length>2 |
username | String / Varchar | Käyttäjän käyttäjätunnus | A-z._-@ | 21>length>3 |
password_hash | String / Varchar | Salasana hash muodossa | A-z0-9.,-_!"#%&/()=?*{}[] | 101>length>7 |
Set UserProjectRole | roles / OneToMany | Projektin roolit | ||
List Entry | entries / OneToMany | Projektiin liittyvät kirjaukset |
Sprint backlogille on listattu kehitysideoita, jotka löytyvät myös projektin issues-kohdasta
Käyttäjän tulee olla kirjautunut, jotta hän pääsee käyttämään palvelua. Tunnistautumisessa on käytössä JSON Web Token. Rekisteröityminen onnistuu luonnollisesti ilman tunnistautumista. Jokaisen pyynnön yhteydessä tarkistetaan token.
End-to-End testaus on toteutettu Robot Frameworkilla. Testit on jaettu niin, että omat testit voidaan toteuttaa lokaalisti sekä julkaistulla versiolla. Testit testaavat REST toiminnallisuuksia. Testien tekeminen vaatii Python ja pip asennukset. Uusin release testattu ja testit menneet läpi onnistuneesti.
End-to-end testien lisäksi toteutimme myös manuaalista testaamista tiimin voimin.
Asennusta varten tarvitset koneellesi tässä dokumentissa mainitut toteutusteknologiat sekä tekstieditorin, esim. Visual Studio Code tai Eclipse. Voit kloonata TimeManagement järjestelmän komennolla: git clone https://github.com/TeamRed-Ohjelmistoprojekti2/TimeManagement.git
. Tässä tulee mukana sekä backend (TimeManagementBE) että frontend (TimeManagementFE).
Backendin voit käynnistää esimerkiksi Visual Studio Codessa avaamalla TimeManagementBeApplication.java -tiedoston ja painamalla Coden navigaatiosta Run
sekä Start Debugging
. Tämä käynnistää Spring Bootin ja avaa Codeen uuden terminaalin missä näkyy sovelluksen käynnistyminen. Tämä käynnistää backendin lokaalisti osoitteeseen: http://localhost:8080/
Frontin asennusta varten navigoi TimeManagementFE kansioon ja anna siellä terminaalissa komento npm install
. Tämä asentaa tarvittavat riippuvuudet. Saat frontin käyntiin komennolla npm run dev
. Tämä käynnistää frontin locaalisti osoitteeseen http://localhost:5173/TimeManagement/
Projektista löytyy tiedot sekä lokaaliin kehitykseen, että projektin julkaisuun liittyen. Käytössä on application.properties tiedostot, joiden avulla voidaan vaihtaa käytössä olevaa tietokantaa. application-dev.properties toimii lokaalissa ja application-heroku.properties julkaistussa versiossa. Käytössä olevan profiilin määritys tapahtuu application.properties tiedostossa. Frontti ja bäkki vaativat myös muutoksia riippuen käytetäänkö molempia lokaalissa vai vaan toista. Muutosta mahdollisesti vaativat tiedostot: CorsFilter.java, WebSecurityConfig.java, pom.xml, TimeManagementBeApplication.java sekä baseUrl.jsx