| 13 | | * Python 3.11 |
| 14 | | * Flask web framework |
| 15 | | * SQLite relational database |
| 16 | | * SQL schema and seed scripts |
| 17 | | * Flask development server (local execution) |
| 18 | | |
| 19 | | == Prototype Architecture |
| 20 | | The backend prototype consists of: |
| 21 | | |
| 22 | | * An SQLite database created using SQL DDL scripts |
| 23 | | * Pre-populated sample data using seed scripts |
| 24 | | * A Flask application exposing REST endpoints |
| 25 | | * JSON responses for all API calls |
| 26 | | |
| 27 | | The application is executed locally and accessed through a web browser using HTTP requests. |
| 28 | | |
| 29 | | == Implemented REST Endpoints |
| 30 | | The following REST endpoints are implemented and operational: |
| 31 | | |
| 32 | | '''/weddings''' |
| 33 | | Returns a list of weddings stored in the database. |
| 34 | | |
| 35 | | '''/weddings/<wedding_id>/events''' |
| 36 | | Returns all events associated with the selected wedding. |
| 37 | | |
| 38 | | '''/weddings/<wedding_id>/guests''' |
| 39 | | Returns all guests related to a specific wedding. |
| 40 | | |
| 41 | | '''/weddings/<wedding_id>/attendance''' |
| 42 | | Displays attendance information for a wedding event, including guest names, roles, |
| 43 | | attendance status, and table assignments. |
| 44 | | |
| 45 | | '''/weddings/<wedding_id>/rsvp''' |
| 46 | | Returns RSVP responses for guests for a selected event. |
| 47 | | |
| 48 | | '''/availability/venue''' |
| 49 | | Checks venue availability for a given venue, date, and time interval and detects possible scheduling conflicts. |
| 50 | | |
| 51 | | == Demonstrated Functionalities |
| 52 | | The prototype demonstrates the following key functionalities: |
| 53 | | |
| 54 | | * Retrieval of wedding data from the database |
| 55 | | * Display of attendance overview per event |
| 56 | | * Role-based guest participation (guest, best man) |
| 57 | | * Handling of optional attributes (e.g. table number) |
| 58 | | * Venue availability checking with time overlap detection |
| 59 | | |
| 60 | | == Venue Availability Logic |
| 61 | | Venue availability is determined by checking existing bookings for a selected venue on a specific date. |
| 62 | | |
| 63 | | Two scenarios are demonstrated: |
| 64 | | |
| 65 | | '''Conflict case''' |
| 66 | | If an existing confirmed booking overlaps with the requested time interval, the venue is not available. |
| 67 | | The response returns "available": false and provides details about the conflicting booking. |
| 68 | | |
| 69 | | '''Free case''' |
| 70 | | If no overlapping bookings exist, the venue is available. |
| 71 | | The response returns "available": true with an empty conflicts list. |
| 72 | | |
| 73 | | This logic prevents double-booking of venues at the application level. |
| 74 | | |
| 75 | | == Prototype Evidence |
| 76 | | The following screenshots are attached to this page as evidence of the working prototype: |
| 77 | | |
| 78 | | * Flask development server running locally |
| 79 | | * Overview of available REST endpoints |
| 80 | | * Wedding list endpoint response |
| 81 | | * Attendance overview endpoint response |
| 82 | | * Venue availability conflict example |
| 83 | | * Venue availability free example |
| 84 | | |
| 85 | | These screenshots confirm the correct execution of the backend prototype and successful interaction with the database. |
| 86 | | |
| 87 | | == Implemented Use Cases |
| 88 | | The prototype demonstrates the following usage scenarios: |
| 89 | | |
| 90 | | * View weddings managed by a user |
| 91 | | * View events for a wedding |
| 92 | | * View guest list |
| 93 | | * Track attendance and seating |
| 94 | | * Manage RSVP responses |
| 95 | | * Check venue availability |
| 96 | | * Detect booking conflicts |
| 97 | | |
| 98 | | == Conclusion |
| 99 | | Phase P4 successfully demonstrates a working backend prototype for the Wedding Planner system. |
| 100 | | The implementation validates the database design from previous phases and confirms the correct behavior |
| 101 | | of core system functionalities through RESTful API endpoints. |
| 102 | | |
| 103 | | The prototype provides a solid foundation for further development and future frontend integration. |
| | 9 | * [[BuildInstructions|Documentation]] |