Skip to content

Kev2d/REMITK-vehicle-booking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

REMITK-vehicle-booking

Kirjeldus

Veebirakendus sõidukite haldamiseks ja broneeringute loomiseks.

Arhitektuur

  • Backend: Spring Boot (Java 21) + PostgreSQL
  • Frontend: Angular 20
  • Andmebaas: PostgreSQL (Flyway migratsioonid)

Backend on stateless. Kõik andmed salvestatakse PostgreSQL-i, seega saab käitada mitut backend instantsi paralleelselt ning uuendada neid ükshaaval, kasutades sama andmebaasi.

Muutuva nõude näide: broneeringu staatus sai uue väärtuse COMPLETED. See lisati Flyway V2 migratsiooniga (uuendab chk_booking_status) ilma olemasolevaid välju või vanu staatuse väärtusi lõhkumata. Frontend kuvab tundmatud staatuse väärtused alternatiivse sildi/stiiliga.

Käivitusjuhised

Enne käivitamist peavad olema paigaldatud:

  • Docker
  • Java 21
  • Node.js (soovituslik v20+)
  • npm

1) Andmebaas (Docker)

Projekti juurkaustast:

docker compose up -d

2) Frontend

Projekti juurkaustast:

cd frontend
npm install
npm start

3) Backend

Projekti juurkaustast:

cd backend
./gradlew bootRun

Windows (CMD):

cd backend
gradlew.bat bootRun

Frontend URL: http://localhost:4200 Backend URL: http://localhost:8080 Swagger: http://localhost:8080/swagger-ui/index.html Health: http://localhost:8080/actuator/health

Andmebaasi skeem

  • vehicles

    • id uuid (PK)
    • name text (not null)
    • description text
    • type text (not null)
    • created_at timestamptz (default now)
    • updated_at timestamptz (default now)
  • bookings

    • id uuid (PK)
    • vehicle_id uuid (FK -> vehicles.id, ON DELETE CASCADE)
    • customer_name text (not null)
    • start_time timestamptz (not null)
    • end_time timestamptz (not null)
    • status text (ACTIVE/CANCELLED/COMPLETED, default ACTIVE)
    • created_at timestamptz (default now)
    • updated_at timestamptz (default now)

Reeglid:

  • end_time > start_time (check constraint)
  • Topeltbroneeringu vältimine: sama sõiduki ACTIVE broneeringud ei tohi ajaliselt kattuda (exclusion constraint kasutades tstzrange)

Edasiarenduse võimalused

  • Autentimine ja rollid (admin/viewer). Angular route guard’id lisada seoses autentimise ja rollidega.
  • Jõudluse parandamine suurtemate andmekogude korral (indeksid, pagination).
  • Backend taustaprotsess (sync), mis märgib broneeringud staatuseks COMPLETED, kui end_time on möödas.
  • Täpsustada broneerimisloogika: kas tegu on turismirendiga (miinimum 1 päev, 1 broneering päevas) või Bolt-stiilis lühirendiga (mitu broneeringut päevas). Selle põhjal saab frontendis kuvada hõivatud ajad ja blokeerida kasutajale mittevõimalikud ajavahemikud.
  • Soft-delete (archive) sõidukitele: praegu vehicle kustutamine eemaldab ka seotud broneeringud (ON DELETE CASCADE). Päris süsteemis oleks parem arhiveerida sõiduk (archived_at/is_active), säilitada broneeringute ajalugu ning blokeerida uute broneeringute loomine arhiveeritud sõidukile.
  • API versioonihaldus: lisada /api/v1/* endpointid (või versioned media type) ja vajadusel standardiseerida vastused kujule { meta, data }, et muudatused oleksid backward compatible.
  • Lisada sõidukile unikaalne identifikaator (nt registrinumber või kood), et sama nimega sõidukid ei tekitaks kasutajatele segadust.
  • Eraldi “overview” endpoint, millega saab vajadusel tulevikus tagastada erinevaid välju sõltuvalt rollist.
  • Lisada validatsioonireeglid (maks broneeringu pikkus, tööajad, min etteteatamisaeg jne).
  • Mobiilisõbraliku kasutajaliidese arendamine
  • Rohkem rõhku panna ligipääsetavusele (WCAG).
  • Kalendrivaade broneeringute ülevaate jaoks (UI/UX).
  • Testid

About

REMITK proovitöö

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published