-
Notifications
You must be signed in to change notification settings - Fork 2
IPW_IP 2324 1 A3
Bachelor in Informatics, Networks and Telecommunications Engineering
Winter Semester of 2023/2024 – 3rd practical assignment - SECA - Part2
The development of the SECA application has 3 development cycles, phased in three parts. For each one, the deadline for delivering the solution will be defined, and it will be a non-negotiable requirement.
This document includes the requirements of part 2 of the SECA application. The assignment should be delivered in the same Git repository used in part 1, by creating a tag called SECA-P2. If you need to make some changes to the delivery, just create another tag named SECA-P2.1, SECA-P2.2, etc.
The main goals of this part are adding a Web user interface to the SECA application developed in part 1, storing data in a database instead of memory, and incorporating new technologies and techniques covered in lectures.
-
Add the following to SECA Web API:
- Support more than one group with the same name, irrespective of its owner user.
- Create a new resource that returns the event (this is not a search by id), which must include at least the following details: name, an image, sales start and end time, event date(s), segment, genre and subGenre. This resource URI must contain the event ID.
-
Create a web interface for presentation in a web browser, for all the functionalities provided by the Web API. All operations that in Web Api are implemented with PUT and DELETE methods, except for user creation, must be implemented using the POST method using HTML forms. This web interface is server-side rendered, using the following technologies: HTML, CSS, and Handlebars. You may use Bootstrap for the base style of the user interface.
When using the web application, in no situation the (human) user will have to know and/or introduce any id for groups or movies. The only situations in which it is allowed to write the name of a movie is to carry out searches in order to obtain a list of results. The only situation in which it is allowed to manually enter the name of a group is when creating or editing that group.
- The web HTML and CSS interface should be implemented in a new file called
seca-web-site.jsthat should be at the same level asseca-web-api.js. - Create a new module that replaces
seca-data-mem.jsso that the data is stored in an ElasticSearch database. This change should not imply any additional change in the remaining modules of the application besides module loading inseca-server. The interaction with ElasticSearch must be done through its HTTP API using fetch function, without using any specific node module for ElasticSearch. - In addition to the previous requirements, this part of work should be used to improve the code quality as well as the quality and quantity of tests, whether unit or integration.
- [optional] Create integration tests for the API with supertest module
The server application modules dependencies should be as follows: