Team A: Feher-Lehrner Maria Kogler Paul Stefanie Bäuchler Hofbauer Lisa
Unser Team wurde beauftragt eine Buchungsapp zu entwickeln, die Benutzer auf dem Smartphone und dem Desktop verwenden werden. Es werden bis zu 100 Besucher pro Tag erwartet, d.h. die bestehende Infrastruktur reicht für die Performance anforderungen aus. Besonders Augenmerk, soll auf die moderne und nachhaltige Umsetzung der App gelegt werden, da diese in den kommenden Jahren mit weiteren Features erweitert werden soll. Wesentlich ist dem Auftraggeber auch ein roter Faden in der Usability und im Stylingkonzept.
Das Backend wurde bereits von unserem PhP Team umgesetzt und steht unter https://boutique-hotel.helmuth-lammer.at
zur verfügung.
Die Dokumentation findet sich in diesem Dokument.
Es besteht die Aufgabe eine Hotelbuchungsapp für das Boutique-Hotel Technikum umzusetzen. Dabei soll es den Gästen möglich sein Hotelzimmer für einen bestimmten Zeitraum zu buchen, wenn es die entsprechende Auslastung zulässt. Die Gäste können sich auch registrieren um für zukünftige ihre Personenangaben wiederzuverwenden oder Ihre Buchungen einzusehen.
Das Projekt wird mit Trainings (Lehreinheiten) begleitet, um eventuelle Knowhow lücken am Weg zum Projektziel zu schließen.
Die App soll mit vue-js (Version 3) umgesetzt werden und mithilfe des Frameworks vue-bootstrap (Oder gleichwertig) rasch umgesetzt werden. Die Library Axios soll für API Calls verwendet werden. Für ein modernes State-Handling wird Pinia zu verwenden sein.
Die Anwendung wird besonders für Mobile Endgeräte entwickelt, soll aber auch am Desktop bedienbar sein.
https://boutique-hotel.helmuth-lammer.at/api/v1/rooms
Example Result
[
{
"id": 1,
"roomNumber": 11,
"roomName": "Junior Suite",
"beds": 3,
"pricePerNight": 120,
"extras": {
"bathRoom": true,
"minibar": true,
"television": true,
"aircondition": true
}
},
{
...
}
]
https://boutique-hotel.helmuth-lammer.at/api/v1/room/{roomId}/from/{from-date}/to/{to-date}
Check availability
Example Call:
https://boutique-hotel.helmuth-lammer.at/api/v1/room/2/from/2022-12-10/to/2022-12-14
Example Result
{
"state": 200
}
https://boutique-hotel.helmuth-lammer.at/api/v1/room/{roomId}/from/{from-date}/to/{to-date}
Book Room
Example Call:
https://boutique-hotel.helmuth-lammer.at/api/v1/room/2/from/2022-12-10/to/2022-12-14
Data:
{
"firstname": "Franz",
"lastname": "Xaver",
"email": "franz@example.com",
"birthdate": "1999-10-04"
}
Example Result
{
"id": 1234
}
https://boutique-hotel.helmuth-lammer.at/api/v1/register
Zu übertragen
{
"firstname": String,
"lastname": String,
"email": String,
"username": String,
"password": String
}
Example Result (reiner Text)
1|PzId1xtCY3myLtqLAfSNKBtMsppVBB08b2FMYhq5
https://boutique-hotel.helmuth-lammer.at/api/v1/user/
Authentication token mit übertragen: api/use
Authorization: Bearer {token}
Accept: Application/json
{
"firstname": String,
"lastname": String,
"email": String,
"birthdate": String (Format: YYYY-MM-DD),
"username": String,
"bookings": [
{
"roomId": Number,
"startDate": Date,
"endDate": Date
},
{
...
}
]
}
https://boutique-hotel.helmuth-lammer.at/api/v1/user/bookings
Voraussetzung: gültiger Token wurde im Header übertragen
Authorization: Bearer {token}
Accept: Application/json
Example Result
[
{
"booking": {
"id": 1234,
"from": "YYYY-MM-DD",
"to": "YYYY-MM-DD"
},
"room": {
"id": 1,
"roomNumber": 11,
"roomName": "Junior Suite",
"beds": 3,
"pricePerNight": 120,
"extras": {
"bathRoom": true,
"minibar": true,
"television": true,
"aircondition": true
}
}
},
{
...
}
]
https://boutique-hotel.helmuth-lammer.at/api/v1/login
zu Übertrage
{
"clientId": String (E-Mail Address),
"secret": String (Passowrd)
}
Antwort ist ein JWT oder ein Fehler
...
header: {
Authorization: Bearer <token>
Accept: Applilcation/json
}
TestLinks:
Als
Gast
möchte ichin Form einer Website das Hotel präsentiert bekommen
ummich darüber zu informieren
.
Die Single Page Application enthält neben den Funktionen zur Buchung und Verwaltung auch statische Seiten, die den Besucher einerseits einladen das Hotel genauer anzusehen und andererseits solche Informationen bereitstellen, dass der Besucher weiß, was ihn vor, während und nach erfolgreicher Buchung erwartet.
Als
Gast
möchte icheine Übersicht über Hotelzimmer und die zugehörigen Details sehen können
, ummir nach meinen Vorstellungen ein Zimmer auszusuchen.
Es besteht eine API Schnittstelle über die Informationen zu den Zimmern abgerufen werden können. Diese ist in der API Dokumentation zu finden.
Im Ordner images/rooms
des Repositories finden sich Bilder. Die Dateinamen entsprechen der jeweiligen Zimmer id. Es kann sein, dass die Bilder nicht alle gleich groß sind. Finden Sie auch dafür eine Lösung.
Zu den Extras sollen Aussagekräftige Icons gestellt werden, damit der Benutzer sich gut zurechtfindet. Es sollen beim ersten Laden maximal 5 Hotelzimmer angezeigt werden.
Das heißt, es bedarf einer Lösung, wie man eine ungerade Zahl an Zimmern gut darstellt und wie man auf Seite 2 (und später evtl. 3 und 4 - ein Zubau von Zimmern ist für das kommende Jahr geplant) wechseln kann.
Als
Gast
möchte ichüberprüfen ob ein bestimmtes Zimmer zum meinem gewünschten Reisezeitraum verfügbar ist
, umfestzustellen, ob ich das Zimmer werde buchen können
.
Es besteht eine API Schnittstelle über die Informationen zu den Zimmern abgerufen werden können. Diese ist in der API Dokumentation zu finden. Der Benutzer soll in der Oberfläche die Möglichkeit haben, seinen Buchungszeitraum zu definieren. Sie haben hier freie Hand, wie sie das dem Benutzer am besten darstellen. Denken Sie innovativ und out of the box dabei.
Als
Gast
möchte ichzu einem ausgewählten Zeitraum ein ausgewähltes Zimmer buchen
umeine Unterkunft in meinem Urlaub zu haben
.
Es besteht eine API Schnittstelle um eine Buchung zu einem Zimmer durchführen zu können. Diese ist in der API Dokumentation zu finden. Nachdem der Benutzer ein verfügbares Zimmer gefunden hat, soll er es Buchen können. Er muss dazu folgende Daten angeben:
Er soll vor dem endgültigen Absenden, nochmal die Möglichkeit haben, seine Buchungsdaten (inkl. Buchungszeitraum und Zimmerwahl) zu überprüfen und ggf. zu bearbeiten. Nach erfolgter Buchung muss dem Benutzer eine Bestätigung angezeigt werden.
Als
Gast
möchte ichnach der Buchung erfahren, ob diese erfolgreich oder fehlerhaft war
umzu wissen ob ich meinen Prozess beenden kann, oder weitere Schritte nötig sind.
Die in U4 angesprochene Buchungsbestätigung soll erweitert werden, um den Benutzer ausführlich über alle Details zu informieren und ihm die Anreise und das Einchecken zu erleichtern. Die Details der Buchung sollen anzeigt werden:
Diese Userstory markiert (wenn 1-4 auch erledigt sind) den ersten Milestone und damit ersten Release. Wir erreichen damit V1.0.0
Als
Gast
möchte ichmich registrieren können
,damit ich meine Daten wieder verwenden kann und meine Buchungshistorie aufrufen kann
.
Es besteht eine API Schnittstelle um eine Registrierung durchführen zu können. Diese ist in der API Dokumentation zu finden. Der Benutzer soll, während, vor oder nach der Buchung die Möglichkeit haben sich zu registrieren. Dies ermöglicht es ihm in späterer Folge
Zur Registrierung benötigen wir folgende Daten
Er wird dadurch also ins Kundenregister aufgenommen. Für die Registrierung erhält er eine Bestätigung (Bildschirm Anzeige reicht. E-Mail nicht notwendig).
Als
registrierter Gast
möchte ichmich am Portal anmelden können
, damit ichbei einer erneuten Buchung, meine Daten nicht mehr eingeben muss und meine Buchungen anzeigen kann
.
Es besteht eine API Schnittstelle um sich anmelden zu können. Diese ist in der API Dokumentation zu finden. Sie erhalten von dieser Schnittstelle einen JWT, welcher ab dann bei jedem Request zu übertragen ist.
Dem Benutzer soll sichtbar gemacht werden, ob er angemeldet ist oder nicht.
Als
registrierter Gast
möchte ichmeine vergangenen und aktuellen Buchungen ansehen können
, umeinen Überblick zu haben, welche Zimmer ich früher hier gebucht hatte.
Es besteht eine API Schnittstelle, um als autorisierter Benutzer Buchungen zu lesen. Diese ist in der API Dokumentation zu finden. Der Benutzer, wenn er angemeldet ist, soll eine Liste seiner vergangenen und aktuellen Buchungen sehen können. Dabei soll darauf geachtet werden, dass für den Benutzer klar ist, welche vergangen und welche zukünftig sind und welches Zimmer in welchem Zeitraum gebucht war.
Diese Userstory markiert (wenn 1-7 auch erledigt sind) den zweiten Milestone und damit den zweiten Release. Wir erreichen damit V2.0.0
Es sind drei Milestones definiert. Diese sind in der Tabelle unten beschrieben.
Milestone | Tasks | Deadline | Peer Review |
---|---|---|---|
1 | Paperprototype, U1 | bis LE4 | Ja |
2 | U2-U4 | bis LE6 | Ja |
3 | U5-U7 | +1 Woche nach LV Ende | Nein |